Passer au contenu principal

Configuration

Chaque app Kazzle possède un fichier kazzle.config.ts à la racine du projet. Ce fichier définit ce que votre app contient — composants, compétences et métadonnées.

Démarrage rapide

import { defineConfig } from './kazzle.types';

export default defineConfig({
  components: [
    { name: 'My App', type: 'ui', path: '.' }
  ]
});
L’assistant defineConfig fournit l’autocomplétion TypeScript et la validation. Les types proviennent de kazzle.types.ts, qui est généré automatiquement et inclus dans chaque modèle.

Champs de niveau supérieur

ChampTypeRequisDescription
iconstringnonChemin du fichier d’icône de l’app relatif à la racine du dépôt (png, jpg, svg, webp, ico). Téléchargé sur CDN lors de la publication.
componentsobject[]nonComposants exécutables — interfaces utilisateur ou processus d’arrière-plan
skillsobject[]nonDéfinitions de compétences IA — fichiers markdown que l’IA lit pour acquérir des connaissances métier
capabilitiesobjectnonFonctionnalités optionnelles d’intégration de bureau telles que les raccourcis clavier, les notifications et la présence dans la barre d’état

Champs de composant

Chaque entrée dans components[] :
ChampTypeRequisDescription
namestringouiNom unique du composant dans l’app
type"ui" | "process"ouiType de composant — ui (max 1) ou process
pathstringouiChemin d’entrée dans le répertoire de l’app
runtimeobjectnonCommandes : { dev?, build?, run? }
runtime.devstringnonCommande pour démarrer le serveur de développement (ex. "bun run dev")
runtime.buildstringnonCommande pour construire pour la production (ex. "vite build")
runtime.runstringnonCommande pour démarrer en production (ex. "bun run start")
schedulestringnonCalendrier cron pour les composants process (ex. "*/5 * * * *")
trigger"webhook" | "event"nonMode de déclenchement pour les composants process
envobjectnonCollection de secrets + environnement pour l’injection de variables d’environnement
env.collectionstringoui (si env)Slug de la collection de secrets
env.environmentstringoui (si env)Slug de l’environnement
env.includestring[]nonInjecter uniquement ces noms de variables d’environnement. Si omis, injecter tous ceux de la collection+environnement.

Champs de compétence

Chaque entrée dans skills[] :
ChampTypeRequisDescription
namestringouiNom de la compétence
pathstringouiChemin du fichier SKILL.md relatif à la racine de l’app

Contraintes

  • Max 1 composant UI par app
  • Les valeurs de name des composants doivent être uniques dans l’app

Exemples de modèles

app ui

import { defineConfig } from './kazzle.types';

export default defineConfig({
  /** Chemin de l'icône de l'app relatif à la racine du dépôt. Téléchargé sur CDN lors de la publication. */
  icon: 'components/ui/public/favicon.svg',
  /** Composants de l'app — chaque entrée définit une unité déployable. Max 1 composant UI. */
  components: [
    { name: 'My App', type: 'ui', path: './components/ui' },
  ],
});

app process

import { defineConfig } from './kazzle.types';

export default defineConfig({
  /** Chemin de l'icône de l'app relatif à la racine du dépôt. Téléchargé sur CDN lors de la publication. */
  icon: 'icon.svg',
  /** Composants de l'app — chaque entrée définit une unité déployable. */
  components: [
    {
      name: 'My App',
      type: 'process',
      path: './components/process/index.ts',
      runtime: { dev: 'bun run dev', run: 'bun run start' },
      // Les processus persistants sont des serveurs de longue durée. La plateforme envoie
      // les déclencheurs au serveur en cours d'exécution au chemin de chaque déclencheur avec
      // `Authorization: Bearer ${KAZZLE_TRIGGER_SECRET}`. Le code client
      // valide l'en-tête avant d'effectuer le travail.
      processMode: 'persistent',
      triggers: [
        // Exemple cron — décommenter et ajuster. 5 champs, résolution à la minute.
        // { name: 'hourly-sync', kind: 'schedule', schedule: '0 * * * *', path: '/cron/hourly-sync' },
        // Exemple webhook — POSTs vers /webhooks/{spaceId}/{appId}/My App/incoming
        // { name: 'incoming', kind: 'webhook', path: '/webhook/incoming' },
      ],
    },
  ],
});

app vide

import { defineConfig } from './kazzle.types';

export default defineConfig({
  /** Chemin de l'icône de l'app relatif à la racine du dépôt. Téléchargé sur CDN lors de la publication. */
  icon: 'icon.svg',
  /** Composants de l'app — chaque entrée définit une unité déployable. */
  components: [],
});