Перейти до основного вмісту

Конфігурація

Кожен додаток Kazzle має kazzle.config.ts у корені проекту. Цей файл визначає, що містить ваш додаток — компоненти, навички та метадані.

Швидкий старт

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

export default defineConfig({
  components: [
    { name: 'My App', type: 'ui', path: '.' }
  ]
});
Помічник defineConfig забезпечує автодоповнення та валідацію TypeScript. Типи походять з kazzle.types.ts, який автоматично генерується та включається в кожен шаблон.

Поля верхнього рівня

ПолеТипОбов’язковоОпис
iconstringніШлях до файлу значка додатка відносно кореня репозиторію (png, jpg, svg, webp, ico). Завантажується на CDN при публікації.
componentsobject[]ніВиконувані компоненти — інтерфейси користувача або фонові процеси
skillsobject[]ніВизначення навичок ШІ — файли markdown, які ШІ читає для знань у предметній області
capabilitiesobjectніНеобов’язкові функції інтеграції з робочим столом, такі як гарячі клавіші, сповіщення та присутність на панелі стану

Поля компонента

Кожен запис у components[]:
ПолеТипОбов’язковоОпис
namestringтакУнікальна назва компонента в межах додатка
type"ui" | "process"такТип компонента — ui (макс. 1) або process
pathstringтакШлях входу в межах каталогу додатка
runtimeobjectніКоманди: { dev?, build?, run? }
runtime.devstringніКоманда для запуску dev-сервера (наприклад, "bun run dev")
runtime.buildstringніКоманда для збірки для production (наприклад, "vite build")
runtime.runstringніКоманда для запуску в production (наприклад, "bun run start")
schedulestringніРозклад cron для компонентів процесу (наприклад, "*/5 * * * *")
trigger"webhook" | "event"ніРежим тригера для компонентів процесу
envobjectніКолекція секретів + середовище для введення змінних середовища
env.collectionstringтак (якщо env)Слаг колекції секретів
env.environmentstringтак (якщо env)Слаг середовища
env.includestring[]ніВводити лише ці імена змінних середовища. Якщо опущено, вводити все з колекції+середовища.

Поля навички

Кожен запис у skills[]:
ПолеТипОбов’язковоОпис
namestringтакНазва навички
pathstringтакШлях до файлу SKILL.md відносно кореня додатка

Обмеження

  • Макс. 1 компонент UI на додаток
  • Значення name компонента мають бути унікальними в межах додатка

Приклади шаблонів

ui додаток

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

export default defineConfig({
  /** Шлях до значка додатка відносно кореня репозиторію. Завантажується на CDN при публікації. */
  icon: 'components/ui/public/favicon.svg',
  /** Компоненти додатка — кожен запис визначає розгортувану одиницю. Макс. 1 компонент UI. */
  components: [
    { name: 'My App', type: 'ui', path: './components/ui' },
  ],
});

process додаток

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

export default defineConfig({
  /** Шлях до значка додатка відносно кореня репозиторію. Завантажується на CDN при публікації. */
  icon: 'icon.svg',
  /** Компоненти додатка — кожен запис визначає розгортувану одиницю. */
  components: [
    {
      name: 'My App',
      type: 'process',
      path: './components/process/index.ts',
      runtime: { dev: 'bun run dev', run: 'bun run start' },
      // Постійні процеси — це довгоживучі сервери. Платформа надсилає
      // тригери на запущений сервер за адресою `path` кожного тригера з
      // `Authorization: Bearer ${KAZZLE_TRIGGER_SECRET}`. Код користувача
      // валідує заголовок перед виконанням роботи.
      processMode: 'persistent',
      triggers: [
        // Приклад cron — розкомментуйте та налаштуйте. 5 полів, роздільність у хвилинах.
        // { name: 'hourly-sync', kind: 'schedule', schedule: '0 * * * *', path: '/cron/hourly-sync' },
        // Приклад webhook — POST на /webhooks/{spaceId}/{appId}/My App/incoming
        // { name: 'incoming', kind: 'webhook', path: '/webhook/incoming' },
      ],
    },
  ],
});

порожній додаток

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

export default defineConfig({
  /** Шлях до значка додатка відносно кореня репозиторію. Завантажується на CDN при публікації. */
  icon: 'icon.svg',
  /** Компоненти додатка — кожен запис визначає розгортувану одиницю. */
  components: [],
});