kazzle.config.ts. Jeden komponent może mieć tyle wyzwalaczy, ile potrzebujesz.
Struktura
processModeokreśla cykl życia — długotrwały serwer lub jednorazowe uruchomienie na wyzwalacz.triggers[]wymienia zdarzenia, które powinny uruchomić ten komponent.
processMode
| Tryb | Co się uruchamia | Kiedy używać |
|---|---|---|
persistent (domyślnie) | Długotrwały serwer HTTP. Wyzwalacze są do niego POSTowane. | Komponent już obsługuje HTTP lub przechowuje stan w pamięci (kolejki, websockety, cache’e). |
triggered | Skrypt wejściowy jest uruchamiany na wyzwalacz i kończy się. | Czyste zadania w tle — nocne czyszczenie, obsługa pojedynczego webhooka Stripe itp. Bez bezczynnych serwerów. |
Wyzwalacze
Każdy wyzwalacz maname (unikalną w obrębie komponentu), kind i — w zależności od trybu — schedule i/lub path.
| Pole | Kiedy wymagane | Uwagi |
|---|---|---|
name | zawsze | Używane jako segment URL webhooka i w logach. Kebab-case. |
kind | zawsze | 'schedule' lub 'webhook'. |
schedule | gdy kind: 'schedule' | Wyrażenie cron z 5 polami. Rozdzielczość minutowa to minimum. |
path | gdy processMode: 'persistent' | Trasa HTTP na serwerze, gdzie ląduje wyzwalacz. |
Tryb persistent — HTTP do serwera
Gdy wyzwalacz uruchamia się dla komponentu persistent, Kazzle POSTuje do serwera na zadeklarowanejpath. Żądanie zawiera:
| Nagłówek | Co ci mówi |
|---|---|
Authorization: Bearer ${KAZZLE_TRIGGER_SECRET} | Zwaliduj to. Odrzuć wywołania, które się nie zgadzają. |
x-kazzle-trigger-name | name wyzwalacza z manifestu. |
x-kazzle-trigger-run-id | Nieprzezroczysty ID do korelacji logów. |
x-kazzle-triggered-by | cron | webhook | manual. |
Tryb triggered — jednorazowo na wyzwalacz
Gdy wyzwalacz uruchamia się dla komponentutriggered, Kazzle uruchamia skrypt wejściowy od nowa i czeka na jego zakończenie. Nie ma path; skrypt dowiaduje się, który wyzwalacz się uruchomił, z zmiennych środowiskowych.
| Zmienna środowiskowa | Wartość |
|---|---|
TRIGGER_NAME | name wyzwalacza z manifestu. |
TRIGGERED_BY | cron | webhook | manual. |
RUN_ID | Nieprzezroczysty ID do korelacji logów. |
WEBHOOK_PAYLOAD | Treść JSON (tylko wyzwalacze webhook). |
Adresy URL webhooków
triggerName musi odpowiadać wpisowi kind: 'webhook' w triggers[] tego komponentu. Nieznane nazwy wyzwalaczy zwracają 404.
Rozdzielczość harmonogramu
Wyrażenia cron mają 5 pól (minuta, godzina, dzień miesiąca, miesiąc, dzień tygodnia) i rozdzielczość minutowa to minimum. Harmonogramy poniżej minuty są odrzucane podczas walidacji manifestu.Jak są rejestrowane uruchomienia
Każde uruchomienie wyzwalacza zapisuje wierszprocess_runs z trigger_name, triggered_by, run_id i statusem wyjścia uruchomienia. Możesz je odpytać z własnego kodu lub sprawdzić w widoku uruchomień aplikacji.
Brak kredytów
Nieudane uruchomienie jest rejestrowane i logowane, ale harmonogram nadal działa w normalnym tempie — niestabilne uruchomienie nigdy nie wyłącza wyzwalacza. Jedyną rzeczą, która zatrzymuje uruchomienie, są kredyty: każde uruchomienie wyzwalacza jest sprawdzane względem salda Space’u, a gdy Space nie ma kredytów (lub nie ma skonfigurowanego rozliczenia), uruchomienia są pomijane z kodem402. To się samo naprawia — harmonogram pozostaje aktywny i następne uruchomienie po uzupełnieniu kredytów działa normalnie, bez ręcznego wznowienia.
Dodawanie automatyzacji później
Prosta aplikacja może zacząć bez wyzwalaczy i zyskać je później — dodaj codzienne podsumowanie, połącz Stripe, uruchom czyszczenie. Cykl życia komponentu (processMode) i wyzwalacze (triggers[]) są niezależne, więc możesz je zmienić bez przepisywania reszty aplikacji.