Langsung ke konten utama

Konfigurasi

Setiap aplikasi Kazzle memiliki kazzle.config.ts di akar proyek. File ini mendefinisikan apa yang berisi aplikasi Anda — komponen, skill, dan metadata.

Mulai cepat

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

export default defineConfig({
  components: [
    { name: 'My App', type: 'ui', path: '.' }
  ]
});
Helper defineConfig menyediakan pelengkapan otomatis TypeScript dan validasi. Tipe berasal dari kazzle.types.ts, yang dibuat secara otomatis dan disertakan di setiap template.

Bidang tingkat atas

BidangTipeDiperlukanDeskripsi
iconstringtidakJalur ke file ikon aplikasi relatif terhadap akar repo (png, jpg, svg, webp, ico). Diunggah ke CDN saat dipublikasikan.
componentsobject[]tidakKomponen yang dapat dieksekusi — frontend UI atau proses latar belakang
skillsobject[]tidakDefinisi skill AI — file markdown yang dibaca AI untuk pengetahuan domain
capabilitiesobjecttidakFitur integrasi desktop opsional seperti hotkey, notifikasi, dan kehadiran bilah status

Bidang komponen

Setiap entri dalam components[]:
BidangTipeDiperlukanDeskripsi
namestringyaNama komponen unik dalam aplikasi
type"ui" | "process"yaTipe komponen — ui (maks 1) atau process
pathstringyaJalur masuk dalam direktori aplikasi
runtimeobjecttidakPerintah: { dev?, build?, run? }
runtime.devstringtidakPerintah untuk memulai server dev (mis. "bun run dev")
runtime.buildstringtidakPerintah untuk membangun untuk produksi (mis. "vite build")
runtime.runstringtidakPerintah untuk memulai di produksi (mis. "bun run start")
schedulestringtidakJadwal cron untuk komponen process (mis. "*/5 * * * *")
trigger"webhook" | "event"tidakMode pemicu untuk komponen process
envobjecttidakKoleksi rahasia + lingkungan untuk injeksi var env
env.collectionstringya (jika env)Slug koleksi rahasia
env.environmentstringya (jika env)Slug lingkungan
env.includestring[]tidakHanya injeksi nama var env ini. Jika dihilangkan, injeksi semua dari koleksi+lingkungan.

Bidang skill

Setiap entri dalam skills[]:
BidangTipeDiperlukanDeskripsi
namestringyaNama skill
pathstringyaJalur ke file SKILL.md relatif terhadap akar aplikasi

Batasan

  • Maks 1 komponen UI per aplikasi
  • Nilai name komponen harus unik dalam aplikasi

Contoh template

aplikasi ui

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

export default defineConfig({
  /** Jalur ke ikon aplikasi relatif terhadap akar repo. Diunggah ke CDN saat dipublikasikan. */
  icon: 'components/ui/public/favicon.svg',
  /** Komponen aplikasi — setiap entri mendefinisikan unit yang dapat digunakan. Maks 1 komponen UI. */
  components: [
    { name: 'My App', type: 'ui', path: './components/ui' },
  ],
});

aplikasi process

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

export default defineConfig({
  /** Jalur ke ikon aplikasi relatif terhadap akar repo. Diunggah ke CDN saat dipublikasikan. */
  icon: 'icon.svg',
  /** Komponen aplikasi — setiap entri mendefinisikan unit yang dapat digunakan. */
  components: [
    {
      name: 'My App',
      type: 'process',
      path: './components/process/index.ts',
      runtime: { dev: 'bun run dev', run: 'bun run start' },
      // Proses persisten adalah server yang berjalan lama. Platform memposting
      // pemicu ke server yang berjalan di setiap `path` pemicu dengan
      // `Authorization: Bearer ${KAZZLE_TRIGGER_SECRET}`. Kode pelanggan
      // memvalidasi header sebelum melakukan pekerjaan.
      processMode: 'persistent',
      triggers: [
        // Contoh cron — hapus komentar dan sesuaikan. 5-field, resolusi menit.
        // { name: 'hourly-sync', kind: 'schedule', schedule: '0 * * * *', path: '/cron/hourly-sync' },
        // Contoh webhook — POSTs ke /webhooks/{spaceId}/{appId}/My App/incoming
        // { name: 'incoming', kind: 'webhook', path: '/webhook/incoming' },
      ],
    },
  ],
});

aplikasi kosong

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

export default defineConfig({
  /** Jalur ke ikon aplikasi relatif terhadap akar repo. Diunggah ke CDN saat dipublikasikan. */
  icon: 'icon.svg',
  /** Komponen aplikasi — setiap entri mendefinisikan unit yang dapat digunakan. */
  components: [],
});