Przejdź do treści

KRET LANGUAGE ACADEMY · DOKUMENTACJA ZE ŹRÓDEŁ

KretHello

Najprostszy plugin: manifest KretL, logika KretS, cykl życia, komunikat startowy i komunikat zakończenia, jedna komenda hosta i testy. **Nie deklaruje żadnych uprawnień** — komunikaty są zwracane jako wartości handlerów (log wymagałby `logs.own.write`, które w Core blokuje otwarte D-KCS-01).

Wersja projektu: 1.0.0

SDK
RUNNABLE_LOCAL
Core
ELIGIBLE_DEV (brak uprawnień — nie zależy od D-KCS-01)
Production
NOT_PRODUCTION_READY

Źródła projektu są do nauki. Witryna nie udostępnia niezatwierdzonej paczki .kpkg. Uprawnienia UI/DB i inne otwarte decyzje nie są aktywowane przez kurs.

Twój pierwszy plugin — KretHello

Pełne źródła projektu

module Main

// Komunikat startowy: wartość zwracana przez handler „start” trafia do hosta (wynik start w kret run / plugin start).
fn Start() -> String {
    return "KretHello: plugin uruchomiony"
}

// Komunikat zakończenia.
fn Shutdown() -> String {
    return "KretHello: plugin zatrzymany"
}

fn greeting(name: String) -> String {
    let clean = name.trim()
    if len(clean) == 0 {
        return "Cześć, nieznajomy!"
    }
    return "Cześć, " + clean + "!"
}

// Komenda hosta zadeklarowana w handlers manifestu.
on hello.greet(name: String) -> String {
    return greeting(name)
}

Czytanie kodu linia po linii

Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.

  1. module MainDeklaracja modułu KretS; porównaj nazwę z nazwą pliku.
  2. Pusta linia oddziela fragmenty źródła.
  3. // Komunikat startowy: wartość zwracana przez handler „start” trafia do hosta (wynik start w kret run / plugin start).Komentarz autora; nie jest wykonywany.
  4. fn Start() -> String {Sygnatura funkcji: nazwa, argumenty i ewentualny typ wyniku.
  5. return "KretHello: plugin uruchomiony"Zwrócenie wartości z funkcji; nie jest zapisem do dziennika.
  6. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  7. Pusta linia oddziela fragmenty źródła.
  8. // Komunikat zakończenia.Komentarz autora; nie jest wykonywany.
  9. fn Shutdown() -> String {Sygnatura funkcji: nazwa, argumenty i ewentualny typ wyniku.
  10. return "KretHello: plugin zatrzymany"Zwrócenie wartości z funkcji; nie jest zapisem do dziennika.
  11. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  12. Pusta linia oddziela fragmenty źródła.
  13. fn greeting(name: String) -> String {Sygnatura funkcji: nazwa, argumenty i ewentualny typ wyniku.
  14. let clean = name.trim()Wiązanie wartości; typ i możliwość zmiany zależą od użytej deklaracji.
  15. if len(clean) == 0 {Sterowanie lub obsługa błędu KretS; szczegóły określa referencja tej konstrukcji.
  16. return "Cześć, nieznajomy!"Zwrócenie wartości z funkcji; nie jest zapisem do dziennika.
  17. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  18. return "Cześć, " + clean + "!"Zwrócenie wartości z funkcji; nie jest zapisem do dziennika.
  19. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  20. Pusta linia oddziela fragmenty źródła.
  21. // Komenda hosta zadeklarowana w handlers manifestu.Komentarz autora; nie jest wykonywany.
  22. on hello.greet(name: String) -> String {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  23. return greeting(name)Zwrócenie wartości z funkcji; nie jest zapisem do dziennika.
  24. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  25. Pusta linia oddziela fragmenty źródła.

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.

BUILD_INSTRUCTIONS — KretHello

BUILD_INSTRUCTIONS — KretHello

Katalog roboczy / working directory: folder tego pluginu (zawiera src/). kret = <SDK>\Compiler\kret.exe z SDK 1.0.0-rc.3+kret.local.3 (lub pinned Vendor Core rc.3+kc-base-test610). Wszystkie polecenia poniżej zostały wykonane w tej rundzie — wyniki: TEST_RESULTS.json.

#Krok / StepPolecenie / Command
1Utworzenie projektu / createNowy projekt eksportu (wzorzec: szablon SDK basic). / New export project (pattern: SDK template basic). Nowy projekt od zera / from scratch: kret new basic <katalog> --name KretHello
2Kod / codesrc/plugin.kretl, src/Script/**.krs
3Sprawdzenie / checkkret check src --json
4Buildkret build src → src/Build/plugin.kbc, manifest.json
5Testy / testskret test src --json --policy examples/host-policy.json
5aUruchomienie lokalne / local runkret run src --policy examples/host-policy.json --data <nowy katalog> --invoke 'hello.greet=["Kret"]'
6Paczka / packkret publish pack src --channel dev --include-sources -o package → package/LOCAL-KPL-HELL2KRT-1.0.0-dev.kpkg
7Weryfikacja / verifykret publish verify package/LOCAL-KPL-HELL2KRT-1.0.0-dev.kpkg --report package/verify-report.json

Uwagi / notes:

  • --include-sources jest wymagane dla KPM Core: Core kompiluje plugin ze źródeł i odrzuca paczkę z samym bytecode (source_package_required, STUDIO-R02). / Required for Core KPM.
  • Kanał dev: paczka niepodpisana (signature: SKIPPED, nie PASS). Brak podpisu produkcyjnego — ceremonia C1 nie odbyła się. / Unsigned dev package; no production signature exists.
  • host-policy.json nigdy nie trafia do .kpkg (lista dozwolonych KretPublish). / Never packed.
Otwórz cały rozdział ze źródłem →
COMPATIBILITY — KretHello

COMPATIBILITY — KretHello

Składnik / ComponentWersja / VersionStan / State
KretLkretl-1.0, manifestVersion "1.0"FROZEN_1_0
Języki / languagesKretL, KretSzob. rejestr / see registry (KRET_AI_KNOWLEDGE_BASE → LANGUAGE_REGISTRY.json)
Kret SDK1.0.0-rc.3+kret.local.3 (kandydat lokalny, niepodpisany)testy tej rundy / tested this round
Kret SDK (Core pinned)1.0.0-rc.3+kc-base-test610zgodny (to samo źródło + SFI-B01/T01)
KretStudio0.3.0-beta.2 + patch SFI (kopia testowa)Pack/test/run przez SDK; oryginał KretStudio (lokalna instalacja / local install) 0.2.0 ma SDK rc.2
Kret Engine / KretCore1.0.0-test.6.11-draft.1ELIGIBLE_DEV (brak uprawnień — nie zależy od D-KCS-01)
compatibility w manifeściecore min 0.5.0 (0.5.0), api min 1.6ABI pluginów SDK 1.6
BytecodeKBC format 2—
SystemWindows 11 x64Linux/macOS: NOT_RUN
Otwórz cały rozdział ze źródłem →
01 — KretHello

01 — KretHello

PoleWartość
IdentyfikatorLOCAL-KPL-HELL2KRT (lokalny, rodzina KPL)
Wersja1.0.0
TechnologieKretL, KretS
Stan przykładuRUNNABLE_LOCAL
Stan w Kret Engine (Core)ELIGIBLE_DEV (brak uprawnień — nie zależy od D-KCS-01)
Paczkapackage/LOCAL-KPL-HELL2KRT-1.0.0-dev.kpkg (dev, niepodpisana, ze źródłami)
PochodzenieNowy projekt eksportu (wzorzec: szablon SDK basic). / New export project (pattern: SDK template basic).

Cel

Najprostszy plugin: manifest KretL, logika KretS, cykl życia, komunikat startowy i komunikat zakończenia, jedna komenda hosta i testy. Nie deklaruje żadnych uprawnień — komunikaty są zwracane jako wartości handlerów (log wymagałby logs.own.write, które w Core blokuje otwarte D-KCS-01).

Struktura

ŚcieżkaZawartość
src/projekt SDK w oficjalnym układzie (plugin.kretl w katalogu głównym projektu, Script/, Tests/) — osobny folder manifest/ nie istnieje, bo SDK wymaga manifestu w katalogu projektu
tests/opis testów i surowe logi kroków (tests/logs/)
docs/architektura (Mermaid), pochodzenie źródeł
examples/polityka hosta testowego SDK (tylko lokalnie)
package/.kpkg + raport weryfikacji + SHA-256
BUILD_INSTRUCTIONS.md, INSTALL_INSTRUCTIONS.mdpełny cykl: projekt → kod → check → build → test → pack → verify → KPM → instalacja Developer → start → aktualizacja → usunięcie
SECURITY_PERMISSIONS.md, COMPATIBILITY.mduprawnienia i zgodność wersji
TEST_RESULTS.jsonwyniki tej rundy (SDK; KPM w Core — jeśli wykonano)

Szybki start

kret check src --json
kret run src --policy examples/host-policy.json --data <nowy katalog> --invoke 'hello.greet=["Kret"]'
Czytanie kodu linia po linii

Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.

  1. kret check src --jsonOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  2. kret run src --policy examples/host-policy.json --data <nowy katalog> --invoke 'hello.greet=["Kret"]'Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.

Status języka nie nadaje uprawnień KCS ani prawa do Production.

Otwórz cały rozdział ze źródłem →
SECURITY_PERMISSIONS — KretHello

SECURITY_PERMISSIONS — KretHello

Zadeklarowane uprawnienia / declared permissions (src/plugin.kretl)

// brak bloku permissions — plugin nie deklaruje żadnych uprawnień / no permissions declared
Czytanie kodu linia po linii

Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.

  1. // brak bloku permissions — plugin nie deklaruje żadnych uprawnień / no permissions declaredKomentarz autora; nie jest wykonywany.

Zasady / rules

  • Deklaracja ≠ przyznanie (KCS-PERM-3). Dostęp daje polityka hosta i KCS przy każdym wywołaniu (Security Broker). / Declaration is not a grant.
  • examples/host-policy.json to polityka hosta testowego SDK (allowProvisionalRisk tylko dla testów). Nigdy nie importuj jej do Core ani do danych użytkownika. / Test-host policy only; never import into Core.
  • Logika działa w osobnym procesie pluginu (Job Object, token ograniczony / AppContainer). Interfejs KretUI nie nadaje uprawnień i nie przechowuje sekretów. / Logic runs in a separate restricted process.
  • Status w Core / Core status: ELIGIBLE_DEV (brak uprawnień — nie zależy od D-KCS-01). D-KCS-01 pozostaje OPEN; uprawnienia PROVISIONAL nie są aktywowane w Production. / Not activated in Production.
  • Paczka: kanał dev, niepodpisana, z źródłami; nie zawiera kluczy, haseł ani polityki hosta (kontrola sekretów KretPublish). / Dev channel, unsigned, no keys or secrets.
Otwórz cały rozdział ze źródłem →
KretHello — architektura / architecture

KretHello — architektura / architecture

Host: kret run / KretStudio / Kret EngineHost: kret run / KretStudio / Kret EngineSecurity Broker (KCS przy każdym wywołaniu)Security Broker (KCS przy każdym wywołaniu)Proces pluginu (Job Object, AppContainer)Proces pluginu (Job Object, AppContainer)Maszyna KBC 2 + weryfikatorMaszyna KBC 2 + weryfikatorKretLKretLKretSKretSsrc/plugin.kretlsrc/plugin.kretl
Statyczna architektura ze źródeł. Przerywane połączenia zachowują oryginalne ograniczenia i adnotacje. Kod nie jest wykonywany.
Opis tekstowy i źródło
  • Host: kret run / KretStudio / Kret Engine → Security Broker (KCS przy każdym wywołaniu)
  • Security Broker (KCS przy każdym wywołaniu) → Proces pluginu (Job Object, AppContainer)
  • Proces pluginu (Job Object, AppContainer) → Maszyna KBC 2 + weryfikator
  • src/plugin.kretl → Security Broker (KCS przy każdym wywołaniu)
flowchart LR
  Host["Host: kret run / KretStudio / Kret Engine"] --> Broker["Security Broker (KCS przy każdym wywołaniu)"]
  Broker --> Proc["Proces pluginu (Job Object, AppContainer)"]
  Proc --> VM["Maszyna KBC 2 + weryfikator"]
  L0["KretL"]
  L1["KretS"]
  Manifest["src/plugin.kretl"] --> Broker

Pochodzenie / provenance: Nowy projekt eksportu (wzorzec: szablon SDK basic). / New export project (pattern: SDK template basic).

Otwórz cały rozdział ze źródłem →
Architecture diagram

Architecture diagram

Host: kret run / KretStudio / Kret EngineHost: kret run / KretStudio / Kret EngineSecurity Broker (KCS przy każdym wywołaniu)Security Broker (KCS przy każdym wywołaniu)Proces pluginu (Job Object, AppContainer)Proces pluginu (Job Object, AppContainer)Maszyna KBC 2 + weryfikatorMaszyna KBC 2 + weryfikatorKretLKretLKretSKretSsrc/plugin.kretlsrc/plugin.kretl
Statyczna architektura ze źródeł. Przerywane połączenia zachowują oryginalne ograniczenia i adnotacje. Kod nie jest wykonywany.
Opis tekstowy i źródło
  • Host: kret run / KretStudio / Kret Engine → Security Broker (KCS przy każdym wywołaniu)
  • Security Broker (KCS przy każdym wywołaniu) → Proces pluginu (Job Object, AppContainer)
  • Proces pluginu (Job Object, AppContainer) → Maszyna KBC 2 + weryfikator
  • src/plugin.kretl → Security Broker (KCS przy każdym wywołaniu)
flowchart LR
  Host["Host: kret run / KretStudio / Kret Engine"] --> Broker["Security Broker (KCS przy każdym wywołaniu)"]
  Broker --> Proc["Proces pluginu (Job Object, AppContainer)"]
  Proc --> VM["Maszyna KBC 2 + weryfikator"]
  L0["KretL"]
  L1["KretS"]
  Manifest["src/plugin.kretl"] --> Broker
Otwórz cały rozdział ze źródłem →
Pochodzenie / provenance

Pochodzenie / provenance

Nowy projekt eksportu (wzorzec: szablon SDK basic). / New export project (pattern: SDK template basic).

Dokumentacja wygenerowana przez eksport KretLanguageDocumentation (2026-11-01). Wszystkie polecenia z BUILD_INSTRUCTIONS.md zostały wykonane; wyniki w TEST_RESULTS.json.

Otwórz cały rozdział ze źródłem →
KretHello — karta przykładowego pluginu

KretHello — karta przykładowego pluginu

Status RUNNABLE_LOCAL oznacza uruchomienie lokalne przez SDK — to nie jest PRODUCTION_READY. Paczka .kpkg nie jest dostępna do publicznego pobrania.

Najprostszy plugin: manifest KretL, logika KretS, cykl życia, komunikat startowy i komunikat zakończenia, jedna komenda hosta i testy. Nie deklaruje żadnych uprawnień — komunikaty są zwracane jako wartości handlerów (log wymagałby logs.own.write, które w Core blokuje otwarte D-KCS-01).

PoleWartość
NazwaKretHello (KretHello)
IDLOCAL-KPL-HELL2KRT
Wersja1.0.0
Zastosowanie / uwagiDziała lokalnie: pełny cykl KPM (import, plan, instalacja, start, aktualizacja, usunięcie) w izolowanym profilu Developer. Brak uprawnień — nie zależy od D-KCS-01.
Technologie KretKretL, KretS
WymaganiaSDK 1.0.0-rc.3+kret.local.3; Kret Engine 1.0.0-test.6.11-draft.1 (profil Developer); Windows 11 x64; .NET 10
Uprawnienia wymaganebrak
Uprawnienia opcjonalnebrak
Status w SDKRUNNABLE_LOCAL
Status w CoreELIGIBLE_DEV (brak uprawnień — nie zależy od D-KCS-01)
Kod źródłowysrc/
BudowanieBUILD_INSTRUCTIONS.md
Instalacjatylko profil Developer (instrukcja wewnętrzna)
Zrzutybrak
Testyeksport 6/6 PASS; ponownie 2026-11-01: PASS
Publiczne pobieranie.kpkg: NIEDOSTĘPNE; źródła: kandydat po zgodzie właściciela
Otwórz cały rozdział ze źródłem →

Wybierz, co możemy zapamiętać w tej przeglądarce. Możesz zmienić decyzję w każdej chwili.

Polityka prywatności