KRET LANGUAGE ACADEMY · DOKUMENTACJA ZE ŹRÓDEŁ
KretUiDemo
Demonstracja interfejsu: układ (kolumny, wiersze), komponenty (tekst, pole, przycisk, lista, status, okno dialogowe), zdarzenia (akcje do komend KretS, `open`), binding stanu, motyw (KTheme z wariantami dark/highContrast), style (KretStyle: stany, `media`) i podgląd rendererem SDK. Komponenty niewspierane (`tooltip`, `menu`, `chart`, animacje, canvas) są poza zakresem.
- SDK
- RUNNABLE_LOCAL
- Core
- BLOCKED_KCS_D_KCS_01 (logs.own.write, kretdb.*)
- 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.
Pełne źródła projektu
# Baza przykładu UiDemo: notatki numerowane od 1 i licznik notatek.
database UiDemo {
version = 1
table notes {
id: Int primary key
text: String
}
table counters {
name: String primary key
value: Int
}
}
Czytanie kodu linia po linii
Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.
# Baza przykładu UiDemo: notatki numerowane od 1 i licznik notatek.Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.database UiDemo {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.version = 1Pole tożsamości lub wersji w otaczającym bloku; zachowaj jego kontekst.Pusta linia oddziela fragmenty źródła.table notes {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.id: Int primary keyOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.text: StringOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.}Zamknięcie struktury otwartej we wcześniejszych liniach.Pusta linia oddziela fragmenty źródła.table counters {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.name: String primary keyOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.value: IntOdczytaj 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.
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 — KretUiDemo
BUILD_INSTRUCTIONS — KretUiDemo
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 / Step | Polecenie / Command |
|---|---|---|
| 1 | Utworzenie projektu / create | Przykład SDK 11_Examples/UiDemo (źródło kandydata SDK). / SDK example 11_Examples/UiDemo. Nowy projekt od zera / from scratch: kret new basic <katalog> --name KretUiDemo |
| 2 | Kod / code | src/plugin.kretl, src/Script/**.krs, src/Disk/Schema.kdb, src/Ui/* |
| 3 | Sprawdzenie / check | kret check src --json |
| 4 | Build | kret build src → src/Build/plugin.kbc, manifest.json |
| 5 | Testy / tests | — (brak modułów Tests/ / no Tests/ modules) |
| 5a | Uruchomienie lokalne / local run | kret run src --policy examples/host-policy.json --data <nowy katalog> |
| 6 | Paczka / pack | kret publish pack src --channel dev --include-sources -o package → package/LOCAL-KPL-WDGTDEM3-1.0.0-dev.kpkg |
| 7 | Weryfikacja / verify | kret publish verify package/LOCAL-KPL-WDGTDEM3-1.0.0-dev.kpkg --report package/verify-report.json |
Uwagi / notes:
--include-sourcesjest 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.jsonnigdy nie trafia do.kpkg(lista dozwolonych KretPublish). / Never packed.
COMPATIBILITY — KretUiDemo
COMPATIBILITY — KretUiDemo
| Składnik / Component | Wersja / Version | Stan / State |
|---|---|---|
| KretL | kretl-1.0, manifestVersion "1.0" | FROZEN_1_0 |
| Języki / languages | KretL, KretS, KretDB, KretUI, KretStyle, KTheme | zob. rejestr / see registry (KRET_AI_KNOWLEDGE_BASE → LANGUAGE_REGISTRY.json) |
| Kret SDK | 1.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-test610 | zgodny (to samo źródło + SFI-B01/T01) |
| KretStudio | 0.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 / KretCore | 1.0.0-test.6.11-draft.1 | BLOCKED_KCS_D_KCS_01 (logs.own.write, kretdb.*) |
compatibility w manifeście | core min 0.5.0 (0.5.0), api min 1.6 | ABI pluginów SDK 1.6 |
| Bytecode | KBC format 2 | — |
| System | Windows 11 x64 | Linux/macOS: NOT_RUN |
06 — KretUiDemo
06 — KretUiDemo
| Pole | Wartość |
|---|---|
| Identyfikator | LOCAL-KPL-WDGTDEM3 (lokalny, rodzina KPL) |
| Wersja | 1.0.0 |
| Technologie | KretL, KretS, KretDB, KretUI, KretStyle, KTheme |
| Stan przykładu | RUNNABLE_LOCAL |
| Stan w Kret Engine (Core) | **BLOCKED_KCS_D_KCS_01 (logs.own.write, kretdb.*)** |
| Paczka | package/LOCAL-KPL-WDGTDEM3-1.0.0-dev.kpkg (dev, niepodpisana, ze źródłami) |
| Pochodzenie | Przykład SDK 11_Examples/UiDemo (źródło kandydata SDK). / SDK example 11_Examples/UiDemo. |
Cel
Demonstracja interfejsu: układ (kolumny, wiersze), komponenty (tekst, pole, przycisk, lista, status, okno dialogowe), zdarzenia (akcje do komend KretS, open), binding stanu, motyw (KTheme z wariantami dark/highContrast), style (KretStyle: stany, media) i podgląd rendererem SDK. Komponenty niewspierane (tooltip, menu, chart, animacje, canvas) są poza zakresem.
Struktura
| Ścieżka | Zawartość |
|---|---|
src/ | projekt SDK w oficjalnym układzie (plugin.kretl w katalogu głównym projektu, Script/, Disk/, Ui/, ) — 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 |
screenshots/ | prawdziwe klatki renderera KretUI (kretui-host --self-test) |
BUILD_INSTRUCTIONS.md, INSTALL_INSTRUCTIONS.md | pełny cykl: projekt → kod → check → build → test → pack → verify → KPM → instalacja Developer → start → aktualizacja → usunięcie |
SECURITY_PERMISSIONS.md, COMPATIBILITY.md | uprawnienia i zgodność wersji |
TEST_RESULTS.json | wyniki 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>
Czytanie kodu linia po linii
Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.
kret check src --jsonOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.kret run src --policy examples/host-policy.json --data <nowy katalog>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.
SECURITY_PERMISSIONS — KretUiDemo
SECURITY_PERMISSIONS — KretUiDemo
Zadeklarowane uprawnienia / declared permissions (src/plugin.kretl)
permissions {
required {
logs.own.write
kretdb.open
kretdb.read
kretdb.write
}
}
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.kretdb.openOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.kretdb.readOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.kretdb.writeOdczytaj 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.
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.jsonto polityka hosta testowego SDK (allowProvisionalRisktylko 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: **BLOCKED_KCS_D_KCS_01 (logs.own.write, kretdb.*)**. 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.
KretUiDemo — architektura / architecture
KretUiDemo — architektura / architecture
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)
- kretui-host (renderer, osobny proces) → Security Broker (KCS przy każdym wywołaniu) · komendy
- Security Broker (KCS przy każdym wywołaniu) → KretDB: baza pluginu należy do brokera
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"]
L2["KretDB"]
L3["KretUI"]
L4["KretStyle"]
L5["KTheme"]
Manifest["src/plugin.kretl"] --> Broker
UI["kretui-host (renderer, osobny proces)"] -->|komendy| Broker
Broker --> DB[("KretDB: baza pluginu należy do brokera")]Pochodzenie / provenance: Przykład SDK 11_Examples/UiDemo (źródło kandydata SDK). / SDK example 11_Examples/UiDemo.
Architecture diagram
Architecture diagram
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)
- kretui-host (renderer, osobny proces) → Security Broker (KCS przy każdym wywołaniu) · komendy
- Security Broker (KCS przy każdym wywołaniu) → KretDB: baza pluginu należy do brokera
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"]
L2["KretDB"]
L3["KretUI"]
L4["KretStyle"]
L5["KTheme"]
Manifest["src/plugin.kretl"] --> Broker
UI["kretui-host (renderer, osobny proces)"] -->|komendy| Broker
Broker --> DB[("KretDB: baza pluginu należy do brokera")]
Pochodzenie / provenance
Pochodzenie / provenance
Przykład SDK 11_Examples/UiDemo (źródło kandydata SDK). / SDK example 11_Examples/UiDemo.
Dokumentacja wygenerowana przez eksport KretLanguageDocumentation (2026-11-01). Wszystkie polecenia z BUILD_INSTRUCTIONS.md zostały wykonane; wyniki w TEST_RESULTS.json.
UiDemo — notatki (KretUI + KretStyle + KTheme + KretS + KretDB)
UiDemo — notatki (KretUI + KretStyle + KTheme + KretS + KretDB)
Mała aplikacja z listą notatek. Pokazuje podział odpowiedzialności:
| Plik | Rola |
|---|---|
Ui/Notes.kretui | struktura widoku, stan, akcje |
Ui/App.kstyle | wygląd (kaskada, stany, reguły dla małego okna i dotyku) |
Ui/App.ktheme | motyw z wariantami dark i highContrast oraz wymaganiami kontrastu |
Script/Main.krs | logika: komendy notes.load, notes.add, notes.clear |
Disk/Schema.kdb | baza KretDB |
plugin.kretl | manifest: uprawnienia i lista komend, które host może wywołać |
host-policy.json | uprawnienia przyznane przez hosta |
Uruchomienie
Kontrola projektu (interfejs razem z logiką i manifestem) oraz logika bez okna — komendy interfejsu wywołane przez brokera:
kret check 11_Examples\UiDemo
kret run 11_Examples\UiDemo --policy 11_Examples\UiDemo\host-policy.json --data %TEMP%\kret-data -o %TEMP%\kret-build\UiDemo --invoke "notes.add=[\"pierwsza notatka\"]" --invoke notes.load
Czytanie kodu linia po linii
Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.
kret check 11_Examples\UiDemoOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.kret run 11_Examples\UiDemo --policy 11_Examples\UiDemo\host-policy.json --data %TEMP%\kret-data -o %TEMP%\kret-build\UiDemo --invoke "notes.add=[\"pierwsza notatka\"]" --invoke notes.loadOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
Okno wymaga hosta interfejsu. Zbuduj go (artefakty poza katalogiem roboczym):
dotnet build 04_Languages\KretUI\src\Kret.Ui.Host\Kret.Ui.Host.csproj -c Release --artifacts-path %TEMP%\kcs-build\final
Czytanie kodu linia po linii
Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.
dotnet build 04_Languages\KretUI\src\Kret.Ui.Host\Kret.Ui.Host.csproj -c Release --artifacts-path %TEMP%\kcs-build\finalOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
Okno:
%TEMP%\kcs-build\final\bin\Kret.Ui.Host\release\kretui-host.exe 11_Examples\UiDemo
Czytanie kodu linia po linii
Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.
%TEMP%\kcs-build\final\bin\Kret.Ui.Host\release\kretui-host.exe 11_Examples\UiDemoOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
Warianty: --variant dark, --variant highContrast, --touch, --width 420.
Test bez okna (obraz i opis kontrolek w katalogu wyników):
kretui-host 11_Examples\UiDemo --self-test %TEMP%\uidemo-out --input "0/2/0=Kupić mleko" --click 0/2/1
Czytanie kodu linia po linii
Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.
kretui-host 11_Examples\UiDemo --self-test %TEMP%\uidemo-out --input "0/2/0=Kupić mleko" --click 0/2/1Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
Oczekiwane zachowanie
- Po otwarciu widok wywołuje
notes.loadi pokazuje zapisane notatki (albo „Brak notatek.”). - Przycisk Dodaj jest nieaktywny, dopóki pole jest puste. Po wpisaniu tekstu i kliknięciu (albo Enter) notatka trafia
do bazy, lista się odświeża, a pole się czyści.
- Wyczyść… otwiera okno potwierdzenia; Usuń kasuje notatki w jednej transakcji, Anuluj zamyka okno.
- Notatki zostają po zamknięciu i ponownym uruchomieniu.
- Błąd logiki (np. pusta notatka wysłana z pominięciem interfejsu) pojawia się jako komunikat w widoku.
Test automatyczny
08_Testing/KretTest/Kret.Ui.Tests → Demo_host_renders_the_example_and_handles_input_end_to_end,
Preview_runs_project_logic_in_a_separate_process_under_host_policy, Preview_without_granted_permissions_fails_closed,
Preview_rejects_ui_that_does_not_match_logic_or_manifest; oraz MandatoryExamplesTests.UiDemo_is_checked_with_its_logic_and_starts_in_isolation
(kontrola projektu i komendy interfejsu przez kret run).
Wynik (Windows 11 x64, 2026-10-11): PASS.
Stan bezpieczeństwa
- Logika działa w osobnym procesie (
Kret.PluginHost) za brokerem; host rysuje tylko interfejs. - Plugin ma wyłącznie uprawnienia z
host-policy.json: dziennik i własna baza KretDB. Bez polityki nie uruchomi się. - Host może wywołać tylko komendy z bloku
handlersmanifestu; typy argumentów sprawdza proces pluginu. - Przykład nie korzysta z sieci, plików użytkownika ani modeli AI.
- Proces logiki działa na poziomie izolacji hosta (domyślnie ograniczony token i niski poziom integralności). Ten poziom nie
blokuje odczytu plików użytkownika ani sieci — niezaufane pluginy uruchamia się w kontenerze aplikacji
(07_Security/SecurityBroker/README.md).
KretUiDemo — karta przykładowego pluginu
KretUiDemo — karta przykładowego pluginu
StatusRUNNABLE_LOCALoznacza uruchomienie lokalne przez SDK — to nie jestPRODUCTION_READY. Paczka .kpkg nie jest dostępna do publicznego pobrania.
Demonstracja interfejsu: układ (kolumny, wiersze), komponenty (tekst, pole, przycisk, lista, status, okno dialogowe), zdarzenia (akcje do komend KretS, open), binding stanu, motyw (KTheme z wariantami dark/highContrast), style (KretStyle: stany, media) i podgląd rendererem SDK. Komponenty niewspierane (tooltip, menu, chart, animacje, canvas) są poza zakresem.
| Pole | Wartość |
|---|---|
| Nazwa | KretUiDemo (UiDemo) |
| ID | LOCAL-KPL-WDGTDEM3 |
| Wersja | 1.0.0 |
| Zastosowanie / uwagi | Wymaga logs.own.write i kretdb.* (PROVISIONAL, D-KCS-01); podgląd KretUI z kretui-host. |
| Technologie Kret | KretL, KretS, KretDB, KretUI, KretStyle, KTheme |
| Wymagania | SDK 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 wymagane | logs.own.write, kretdb.open, kretdb.read, kretdb.write |
| Uprawnienia opcjonalne | brak |
| Status w SDK | RUNNABLE_LOCAL |
| Status w Core | BLOCKED_KCS_D_KCS_01 (logs.own.write, kretdb.*) |
| Kod źródłowy | src/ |
| Budowanie | BUILD_INSTRUCTIONS.md |
| Instalacja | tylko profil Developer (instrukcja wewnętrzna) |
| Zrzuty | screenshots/ui-dark.png, screenshots/ui-default.png |
| Testy | eksport 7/7 PASS; ponownie 2026-11-01: PASS |
| Publiczne pobieranie | .kpkg: NIEDOSTĘPNE; źródła: kandydat po zgodzie właściciela |