KRET LANGUAGE ACADEMY · DOKUMENTACJA ZE ŹRÓDEŁ
Tożsamość i struktura manifestu
Czego się nauczysz
- Prześledź źródła i wyjaśnij opisany kontrakt.
- Porównaj valid, unknown-field i missing-handler w przykładzie błędów. Zapisz, która zmiana powoduje KCS-KRL-0202, a która KCS-KRL-0301.
Wymagania wstępne
- Ukończ Podstawy i wcześniejszy poziom tej ścieżki.
Wyjaśnienie krok po kroku
Zacznij od plugin.kretl w katalogu projektu. manifestVersion opisuje format dokumentu, a version wewnątrz plugin — wersję Twojego pluginu. compatibility określa zgodność Core/API. Funkcje nie należą do manifestu: lifecycle wskazuje handlery z plików KretS.
Praca z kodem źródłowym
Najczęstsze błędy manifestu (tryb ścisły)
Trzy niepoprawne warianty tego samego manifestu, każdy w osobnym folderze: nieznane pole (`KCS-KRL-0202`), uprawnienie spoza katalogu KCS (`KCS-KRL-0206`) i handler cyklu życia, którego nie ma w kodzie (`KCS-KRL-0301`). Folder `valid/` pokazuje wersję poprawną.
module Main
fn Start() {
}
fn Shutdown() {
}
Czytanie kodu linia po linii
Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.
module MainDeklaracja modułu KretS; porównaj nazwę z nazwą pliku.Pusta linia oddziela fragmenty źródła.fn Start() {Sygnatura funkcji: nazwa, argumenty i ewentualny typ wyniku.}Zamknięcie struktury otwartej we wcześniejszych liniach.Pusta linia oddziela fragmenty źródła.fn Shutdown() {Sygnatura funkcji: nazwa, argumenty i ewentualny typ wyniku.}Zamknięcie struktury otwartej we wcześniejszych liniach.Pusta linia oddziela fragmenty źródła.
Oczekiwany wynik: Pierwsze polecenie kończy się sukcesem, trzy kolejne kodem 1 i diagnostyką `kret-diagnostics/1` z kodem, plikiem, wierszem i kolumną.
Typowy błąd: Traktowanie `metadata` jak miejsca na dowolne pola jest poprawne tylko wewnątrz bloku `metadata { }` — gdzie indziej każde nieznane pole jest błędem.
Instrukcja, wersje i zapisane wyniki →Pierwszy manifest plugin.kretl
Najmniejszy poprawny manifest KretL 1.0: tożsamość, zgodność, cykl życia (`start` i `shutdown` są obowiązkowe), tryb wykonania. Manifest nie deklaruje żadnych uprawnień, więc plugin nie dostaje dostępu do hosta. Logika jest jedną funkcją KretS zwracającą tekst.
module Main
// Handler cyklu życia „start”: funkcja bez parametrów. Wartość wraca do hosta.
fn Start() -> String {
return "KretL: manifest poprawny, plugin uruchomiony"
}
fn Shutdown() {
}
Czytanie kodu linia po linii
Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.
module MainDeklaracja modułu KretS; porównaj nazwę z nazwą pliku.Pusta linia oddziela fragmenty źródła.// Handler cyklu życia „start”: funkcja bez parametrów. Wartość wraca do hosta.Komentarz autora; nie jest wykonywany.fn Start() -> String {Sygnatura funkcji: nazwa, argumenty i ewentualny typ wyniku.return "KretL: manifest poprawny, plugin uruchomiony"Zwrócenie wartości z funkcji; nie jest zapisem do dziennika.}Zamknięcie struktury otwartej we wcześniejszych liniach.Pusta linia oddziela fragmenty źródła.fn Shutdown() {Sygnatura funkcji: nazwa, argumenty i ewentualny typ wyniku.}Zamknięcie struktury otwartej we wcześniejszych liniach.Pusta linia oddziela fragmenty źródła.
Oczekiwany wynik: `check` zwraca `"succeeded": true`, `run` zwraca dokument JSON z wynikiem `start` „KretL: manifest poprawny, plugin uruchomiony” i kodem wyjścia 0.
Typowy błąd: Brak `shutdown` w `lifecycle` albo handler, którego nie ma w KretS (`KCS-KRL-0301`). Patrz przykład KRETL-B02.
Instrukcja, wersje i zapisane wyniki →Materiały źródłowe do tego tematu
Przeczytaj powiązane rozdziały. Kod i kontrakty zachowano z importu; historia źródeł jest dostępna przy każdym rozdziale.
KretL — wprowadzenie
KretL — wprowadzenie
Status 1.0: `FROZEN_1_0` — pełny zakres 1.0, stabilny kontrakt, testy zgodności. Gramatyka/wersja: kretl-1.0. Status języka nie nadaje uprawnień KCS ani prawa do działania w Production.Czym jest
KretL opisuje plugin: tożsamość, zgodność z Core i API, uprawnienia (deklaracje), cykl życia, tryb wykonania, limity, izolację, obszary danych, zależności i komendy hosta. Nie zawiera logiki. Jedyny manifest bieżącej generacji to plugin.kretl w katalogu głównym projektu.
Dla początkujących
Wyobraź sobie KretL jako „dowód osobisty” i „umowę” pluginu. Mówi, kim plugin jest (id, nazwa, wersja), z którą wersją Kret Engine współpracuje, o co prosi (uprawnienia) i którą funkcję KretS wywołać przy starcie i zatrzymaniu. Sam niczego nie wykonuje i niczego nie przyznaje — prośba o uprawnienie to tylko deklaracja.
Dla zaawansowanych programistów
Gramatyka węzłów (Name value* { node* }) jest niezależna od znaczenia pól; znaczenie nadaje walidator sterowany schematem sekcji (Kret.Link.ManifestSections) w trybie ścisłym. Kompilator zapisuje znormalizowany Build/manifest.json (kretl-manifest/1), który broker czyta ściśle i waliduje ponownie. Kontrole krzyżowe łączą manifest z kodem: handlery cyklu życia muszą istnieć w KretS (bez parametrów), a każda operacja hosta użyta w kodzie musi mieć zadeklarowane uprawnienie. Zamrożenie jest chronione sumami SHA-256 parsera i specyfikacji (kretl-1.0.contract.json) i korpusem 23 przypadków.
Jakie problemy rozwiązuje
Jedno, ścisłe miejsce opisu pluginu dla SDK, KretStudio, KPM i Core; wczesne wykrywanie błędów (nieznane pole, nieznane uprawnienie, brak handlera); jawne granice uprawnień przed uruchomieniem kodu.
Kiedy używać
- każdy plugin bieżącej generacji (obowiązkowo)
- deklarowanie uprawnień wymaganych i opcjonalnych
- deklarowanie komend i zdarzeń hosta (
handlers) - deklarowanie limitów, profilu i preferowanej izolacji
- deklarowanie zależności między pluginami
Kiedy nie używać
- zapisywanie logiki (KretL jej nie ma — użyj KretS)
- ustawienia użytkownika (użyj KretConfig)
- próba „nadania” uprawnień — deklaracja niczego nie przyznaje
- stare manifesty
KretL/Main.kret(generacja 0.4.x, tylko import przezkret import-legacy)
Współpraca z innymi technologiami
KretS (handlery cyklu życia i komend), KretDB (uprawnienia kretdb.*, obszar runtimeData.database), KretM (project { map }), KretPublish/KPM (identyfikator, wersja, uprawnienia w planie instalacji), Core (walidacja SDK + reguły układu hosta).
Obecny status
FROZEN_1_0 — pełny zakres 1.0, stabilny kontrakt, testy zgodności.
Dalej: ARCHITECTURE.md · SYNTAX_REFERENCE.md · ../Tutorials/BASIC/TUTORIAL_PL.md
KretL — referencja składni
KretL — referencja składni
Status 1.0: `FROZEN_1_0` — pełny zakres 1.0, stabilny kontrakt, testy zgodności. Gramatyka/wersja: kretl-1.0. Status języka nie nadaje uprawnień KCS ani prawa do działania w Production.Opisane są wyłącznie konstrukcje potwierdzone implementacją SDK (i, gdzie zaznaczono, testami tej rundy).
manifestVersion
Wersja formatu manifestu; pierwsze pole.
manifestVersion "1.0"
Czytanie kodu linia po linii
Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.
manifestVersion "1.0"Wersja formatu manifestu KretL.
| Cecha | Wartość |
|---|---|
| Parametry / typy | tekst "1.0" (jedyna wartość) |
| Wynik | — |
| Wymagania | obowiązkowe |
| Ograniczenia | inna wartość = odrzucenie |
| Możliwe błędy | KCS-KRL-02xx (KL-I06) |
| Wprowadzono | 1.0 |
plugin { id name version }
Tożsamość pluginu.
plugin {
id "LOCAL-KPL-XXXXXXXX"
name "Nazwa"
version "1.0.0"
}
Czytanie kodu linia po linii
Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.
plugin {Początek nazwanego bloku; jego pola odczytaj w powiązanej referencji.id "LOCAL-KPL-XXXXXXXX"Pole tożsamości lub wersji w otaczającym bloku; zachowaj jego kontekst.name "Nazwa"Pole tożsamości lub wersji w otaczającym bloku; zachowaj jego kontekst.version "1.0.0"Pole tożsamości lub wersji w otaczającym bloku; zachowaj jego kontekst.}Zamknięcie struktury otwartej we wcześniejszych liniach.
| Cecha | Wartość |
|---|---|
| Parametry / typy | id: identyfikator KCS rodziny KPL (oficjalny albo LOCAL-KPL- + 8 znaków z alfabetu A–H J–N P–Z 2–9); name: 1–64 znaki; version: SemVer |
| Wynik | — |
| Wymagania | obowiązkowe, dokładnie jeden blok |
| Ograniczenia | id innej rodziny (np. KLIB-) odrzucany |
| Możliwe błędy | KCS-ID-*, KCS-VER-1, KCS-KRL-0204 |
| Wprowadzono | 1.0 |
namespace, creatorId, metadata
Przestrzeń nazw (KCS-ID-8), identyfikator twórcy, dowolne metadane.
namespace "kretos.examples.x"
creatorId "kret-docs"
metadata {
author "…"
}
Czytanie kodu linia po linii
Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.
namespace "kretos.examples.x"Pole tożsamości lub wersji w otaczającym bloku; zachowaj jego kontekst.creatorId "kret-docs"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.metadata {Początek nazwanego bloku; jego pola odczytaj w powiązanej referencji.author "…"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.}Zamknięcie struktury otwartej we wcześniejszych liniach.
| Cecha | Wartość |
|---|---|
| Parametry / typy | creatorId: [A-Za-z0-9._-]{1,64}; metadata: jedyny blok z dowolnymi polami |
| Wynik | — |
| Wymagania | opcjonalne |
| Ograniczenia | format creatorId nieustalony (KL-T08) |
| Możliwe błędy | KCS-KRL-0202 |
| Wprowadzono | 1.0 |
compatibility
Zgodność z Core i API.
compatibility {
core { min "0.5.0" }
api { min "1.6" }
}
Czytanie kodu linia po linii
Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.
compatibility {Początek nazwanego bloku; jego pola odczytaj w powiązanej referencji.core { min "0.5.0" }Początek nazwanego bloku; jego pola odczytaj w powiązanej referencji.api { min "1.6" }Początek nazwanego bloku; jego pola odczytaj w powiązanej referencji.}Zamknięcie struktury otwartej we wcześniejszych liniach.
| Cecha | Wartość |
|---|---|
| Parametry / typy | Core: SemVer, max SemVer albo N.x; API: MAJOR.MINOR albo N.x |
| Wynik | — |
| Wymagania | min obowiązkowe |
| Ograniczenia | niezgodne wersje → KPM incompatible |
| Możliwe błędy | KCS-VER-* |
| Wprowadzono | 1.0 |
permissions
Deklaracja uprawnień z katalogu KCS (168 nazw).
permissions {
required {
logs.own.write
}
optional {
kretdb.read
}
}
Czytanie kodu linia po linii
Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.
permissions {Początek nazwanego bloku; jego pola odczytaj w powiązanej referencji.required {Początek nazwanego bloku; jego pola odczytaj w powiązanej referencji.logs.own.writeOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.}Zamknięcie struktury otwartej we wcześniejszych liniach.optional {Początek nazwanego bloku; jego pola odczytaj w powiązanej referencji.kretdb.readOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.}Zamknięcie struktury otwartej we wcześniejszych liniach.}Zamknięcie struktury otwartej we wcześniejszych liniach.
| Cecha | Wartość |
|---|---|
| Parametry / typy | nazwy KCS, dowolna liczba segmentów zgodna z katalogiem |
| Wynik | — |
| Wymagania | opcjonalne; wymagane, gdy kod używa operacji hosta |
| Ograniczenia | każda nazwa raz; deklaracja ≠ przyznanie |
| Możliwe błędy | KCS-KRL-0206 (nieznana / unknown), KCS-KRL-0302 (brak w kodzie / missing for code) |
| Wprowadzono | 1.0 |
lifecycle
Operacje cyklu życia: install start suspend resume update repair healthcheck shutdown uninstall.
lifecycle {
start "Main.Start" timeout 5s
shutdown "Main.Shutdown" timeout 2s
}
Czytanie kodu linia po linii
Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.
lifecycle {Początek nazwanego bloku; jego pola odczytaj w powiązanej referencji.start "Main.Start" timeout 5sOdwołanie lifecycle do funkcji KretS; sprawdź nazwę i timeout.shutdown "Main.Shutdown" timeout 2sOdwołanie lifecycle do funkcji KretS; sprawdź nazwę i timeout.}Zamknięcie struktury otwartej we wcześniejszych liniach.
| Cecha | Wartość |
|---|---|
| Parametry / typy | "Moduł.funkcja" KretS bez parametrów; timeout 1 ms – 10 min (domyślnie 5 s) |
| Wynik | handler zwraca typ KCS (np. String, Unit) |
| Wymagania | start i shutdown obowiązkowe |
| Ograniczenia | Core nie restartuje automatycznie (KL-C04) |
| Możliwe błędy | KCS-KRL-0204, KCS-KRL-0301, KCS-KRL-0303 |
| Wprowadzono | 1.0 |
execution
Tryb wykonania.
execution { primary "onDemand" }
Czytanie kodu linia po linii
Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.
execution { primary "onDemand" }Początek nazwanego bloku; jego pola odczytaj w powiązanej referencji.
| Cecha | Wartość |
|---|---|
| Parametry / typy | tekst (np. "onDemand") |
| Wynik | — |
| Wymagania | obowiązkowe |
| Ograniczenia | lista dozwolonych wartości nieustalona w bazie wiedzy; tryb dodatkowy wymaga zgody użytkownika po stronie hosta |
| Możliwe błędy | KCS-KRL-0204 |
| Wprowadzono | 1.0 |
handlers
Komendy i zdarzenia, które host może dostarczyć pluginowi (on nazwa(…) w KretS).
handlers {
command "counter.add"
event "order.placed"
}
Czytanie kodu linia po linii
Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.
handlers {Początek nazwanego bloku; jego pola odczytaj w powiązanej referencji.command "counter.add"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.event "order.placed"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.}Zamknięcie struktury otwartej we wcześniejszych liniach.
| Cecha | Wartość |
|---|---|
| Parametry / typy | nazwy z kropkami |
| Wynik | — |
| Wymagania | opcjonalne; wymagane do wywołania komendy |
| Ograniczenia | nazwa spoza listy jest odrzucana przez brokera |
| Możliwe błędy | KCS-KRL-02xx |
| Wprowadzono | 1.0 (pole wcześniej PROVISIONAL) |
limits, runtime, resourcePolicy, isolation
Limity pamięci/CPU, profil zasobów, progi nadzorcy, preferowana izolacja.
limits {
memory { max 64MB }
cpu { max 5% }
}
runtime { profile "light" }
isolation { preferred "sandbox" }
Czytanie kodu linia po linii
Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.
limits {Początek nazwanego bloku; jego pola odczytaj w powiązanej referencji.memory { max 64MB }Początek nazwanego bloku; jego pola odczytaj w powiązanej referencji.cpu { max 5% }Początek nazwanego bloku; jego pola odczytaj w powiązanej referencji.}Zamknięcie struktury otwartej we wcześniejszych liniach.runtime { profile "light" }Początek nazwanego bloku; jego pola odczytaj w powiązanej referencji.isolation { preferred "sandbox" }Początek nazwanego bloku; jego pola odczytaj w powiązanej referencji.
| Cecha | Wartość |
|---|---|
| Parametry / typy | memory.max 1 MB – 64 GB; cpu.max w %; profil light|standard|advanced; izolacja process|sandbox |
| Wynik | — |
| Wymagania | opcjonalne |
| Ograniczenia | obcinane do sufitu profilu; host może podnieść izolację, nigdy jej nie obniża |
| Możliwe błędy | KCS-KRL-0191 (ostrzeżenie / warning) |
| Wprowadzono | 1.0 |
runtimeData
Deklaracja obszarów danych: database userData cache logs backup temp.
runtimeData {
database {
path "Disk/"
}
}
Czytanie kodu linia po linii
Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.
runtimeData {Początek nazwanego bloku; jego pola odczytaj w powiązanej referencji.database {Początek nazwanego bloku; jego pola odczytaj w powiązanej referencji.path "Disk/"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.}Zamknięcie struktury otwartej we wcześniejszych liniach.}Zamknięcie struktury otwartej we wcześniejszych liniach.
| Cecha | Wartość |
|---|---|
| Parametry / typy | ścieżka względna bez .., \, : |
| Wynik | — |
| Wymagania | opcjonalne |
| Ograniczenia | położenie fizyczne wyznacza host (KL-C01) |
| Możliwe błędy | KL-I11/I12 (odrzucenie / rejected) |
| Wprowadzono | 1.0 |
environment
Deklaracja platform (preferred/supported/experimental) i architektur.
environment {
platforms {
supported "windows"
}
architectures {
supported "x64"
}
}
Czytanie kodu linia po linii
Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.
environment {Początek nazwanego bloku; jego pola odczytaj w powiązanej referencji.platforms {Początek nazwanego bloku; jego pola odczytaj w powiązanej referencji.supported "windows"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.}Zamknięcie struktury otwartej we wcześniejszych liniach.architectures {Początek nazwanego bloku; jego pola odczytaj w powiązanej referencji.supported "x64"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.}Zamknięcie struktury otwartej we wcześniejszych liniach.}Zamknięcie struktury otwartej we wcześniejszych liniach.
| Cecha | Wartość |
|---|---|
| Parametry / typy | teksty |
| Wynik | — |
| Wymagania | opcjonalne |
| Ograniczenia | platformSupport jest przestarzałe (informacja KCS-KRL-0190) |
| Możliwe błędy | KCS-KRL-0190 |
| Wprowadzono | 1.0 |
project
Włącza mapę projektu KretM.
project {
map "project.kretm"
module "App"
}
Czytanie kodu linia po linii
Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.
project {Początek nazwanego bloku; jego pola odczytaj w powiązanej referencji.map "project.kretm"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.module "App"Deklaracja modułu KretS; porównaj nazwę z nazwą pliku.}Zamknięcie struktury otwartej we wcześniejszych liniach.
| Cecha | Wartość |
|---|---|
| Parametry / typy | ścieżka mapy, opcjonalnie moduł |
| Wynik | — |
| Wymagania | opcjonalne |
| Ograniczenia | niczego nie przyznaje |
| Możliwe błędy | KCS-KRM-* |
| Wprowadzono | 1.0 |
dependencies, recovery, conflicts, provides, requires, …
Sekcje walidowane schematem sekcji i zapisywane w paczce (dependencies conflicts provides requires hardwareRequirements resources suspendPolicy recovery security update platformBundles platformCapabilities conditions).
dependencies {
required {
plugin "LOCAL-KPL-CALCAAAA" version ">=1.0.0"
}
}
recovery {
maxRetries 3
retryDelay 2s
}
Czytanie kodu linia po linii
Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.
dependencies {Początek nazwanego bloku; jego pola odczytaj w powiązanej referencji.required {Początek nazwanego bloku; jego pola odczytaj w powiązanej referencji.plugin "LOCAL-KPL-CALCAAAA" version ">=1.0.0"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.}Zamknięcie struktury otwartej we wcześniejszych liniach.}Zamknięcie struktury otwartej we wcześniejszych liniach.recovery {Początek nazwanego bloku; jego pola odczytaj w powiązanej referencji.maxRetries 3Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.retryDelay 2sOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.}Zamknięcie struktury otwartej we wcześniejszych liniach.
| Cecha | Wartość |
|---|---|
| Parametry / typy | wg schematu sekcji |
| Wynik | — |
| Wymagania | opcjonalne |
| Ograniczenia | recovery to deklaracja — o restarcie decyduje host |
| Możliwe błędy | KCS-KRL-0202 |
| Wprowadzono | 1.0 |
KretL — samouczek BASIC
KretL — samouczek BASIC
Status 1.0: `FROZEN_1_0` — pełny zakres 1.0, stabilny kontrakt, testy zgodności. Gramatyka/wersja: kretl-1.0. Status języka nie nadaje uprawnień KCS ani prawa do działania w Production.Cel: pierwszy plik, podstawowa struktura, najprostszy działający przykład, najczęstszy błąd, sposób uruchomienia.
Narzędzia: kret = <SDK>\Compiler\kret.exe (SDK 1.0.0-rc.3+kret.local.3), kretui-host = <SDK>\UiHost\kretui-host.exe. {DATA}/{OUT} = nowe, puste katalogi.
1. Najczęstsze błędy manifestu (tryb ścisły) (KRETL-B02-CommonManifestErrors)
Projekt: ../../Examples/BASIC_CommonManifestErrors/ · klasyfikacja VALIDATION_ONLY · Playground LOCAL_VALIDATE
Kroki (katalog roboczy: katalog przykładu):
kret check valid --json— w wyniku:"succeeded": truekret check unknown-field --json— oczekiwany błąd — w wyniku:KCS-KRL-0202kret check unknown-permission --json— oczekiwany błąd — w wyniku:KCS-KRL-0206kret check missing-handler --json— oczekiwany błąd — w wyniku:KCS-KRL-0301
Wynik tej rundy: PASS — zob. EXPECTED_OUTPUT.txt.
2. Pierwszy manifest plugin.kretl (KRETL-B01-HelloManifest)
Projekt: ../../Examples/BASIC_HelloManifest/ · klasyfikacja RUNNABLE_LOCAL · Playground LOCAL_EXECUTE
Kroki (katalog roboczy: katalog przykładu):
kret check . --json— w wyniku:"succeeded": truekret build .— w wyniku:OKkret run . --policy host-policy.json --data {DATA}— w wyniku:manifest poprawny
Wynik tej rundy: PASS — zob. EXPECTED_OUTPUT.txt.
Ćwiczenie i sprawdzenie wiedzy
Porównaj valid, unknown-field i missing-handler w przykładzie błędów. Zapisz, która zmiana powoduje KCS-KRL-0202, a która KCS-KRL-0301.
Szkic nie jest wysyłany na serwer i znika po opuszczeniu lekcji. Przed wyjściem możesz go skopiować.Podpowiedzi
- KretL opisuje plugin: tożsamość, zgodność z Core i API, uprawnienia (deklaracje), cykl życia, tryb wykonania, limity, izolację, obszary danych, zależności i komendy hosta. Nie zawiera logiki. Jedyny manifest bieżącej generacji to `plugin.kretl` w katalogu głównym projektu.
- Odczytaj ograniczenia i oczekiwane błędy z dostarczonego samouczka; check i run są oddzielnymi krokami.
Omówienie rozwiązania
Odpowiedź oprzyj na pokazanym kodzie i rozdziale źródłowym. Zacznij od plugin.kretl w katalogu projektu. manifestVersion opisuje format dokumentu, a version wewnątrz plugin — wersję Twojego pluginu. compatibility określa zgodność Core/API. Funkcje nie należą do manifestu: lifecycle wskazuje handlery z plików KretS.
Podsumowanie i następny krok
Zacznij od plugin.kretl w katalogu projektu. manifestVersion opisuje format dokumentu, a version wewnątrz plugin — wersję Twojego pluginu. compatibility określa zgodność Core/API. Funkcje nie należą do manifestu: lifecycle wskazuje handlery z plików KretS.
Zaloguj się na konto użytkownika, aby zapisywać postęp i zakładki. Konta obsługi mogą czytać bez zapisu postępu. Logowanie →