Przejdź do treści

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.

Wersja projektu: 1.0.0

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.

  1. # 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.
  2. database UiDemo {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  3. version = 1Pole tożsamości lub wersji w otaczającym bloku; zachowaj jego kontekst.
  4. Pusta linia oddziela fragmenty źródła.
  5. table notes {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  6. id: Int primary keyOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  7. text: StringOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  8. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  9. Pusta linia oddziela fragmenty źródła.
  10. table counters {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  11. name: String primary keyOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  12. value: IntOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  13. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  14. }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 / StepPolecenie / Command
1Utworzenie projektu / createPrzykł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
2Kod / codesrc/plugin.kretl, src/Script/**.krs, src/Disk/Schema.kdb, src/Ui/*
3Sprawdzenie / checkkret check src --json
4Buildkret build src → src/Build/plugin.kbc, manifest.json
5Testy / tests— (brak modułów Tests/ / no Tests/ modules)
5aUruchomienie lokalne / local runkret run src --policy examples/host-policy.json --data <nowy katalog>
6Paczka / packkret publish pack src --channel dev --include-sources -o package → package/LOCAL-KPL-WDGTDEM3-1.0.0-dev.kpkg
7Weryfikacja / verifykret publish verify package/LOCAL-KPL-WDGTDEM3-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 — KretUiDemo

COMPATIBILITY — KretUiDemo

Składnik / ComponentWersja / VersionStan / State
KretLkretl-1.0, manifestVersion "1.0"FROZEN_1_0
Języki / languagesKretL, KretS, KretDB, KretUI, KretStyle, KThemezob. 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.1BLOCKED_KCS_D_KCS_01 (logs.own.write, kretdb.*)
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 →
06 — KretUiDemo

06 — KretUiDemo

PoleWartość
IdentyfikatorLOCAL-KPL-WDGTDEM3 (lokalny, rodzina KPL)
Wersja1.0.0
TechnologieKretL, KretS, KretDB, KretUI, KretStyle, KTheme
Stan przykładuRUNNABLE_LOCAL
Stan w Kret Engine (Core)**BLOCKED_KCS_D_KCS_01 (logs.own.write, kretdb.*)**
Paczkapackage/LOCAL-KPL-WDGTDEM3-1.0.0-dev.kpkg (dev, niepodpisana, ze źródłami)
PochodzeniePrzykł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żkaZawartość
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.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>
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>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 — 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.

  1. permissions {Początek nazwanego bloku; jego pola odczytaj w powiązanej referencji.
  2. required {Początek nazwanego bloku; jego pola odczytaj w powiązanej referencji.
  3. logs.own.writeOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  4. kretdb.openOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  5. kretdb.readOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  6. kretdb.writeOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  7. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  8. }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.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: **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.
Otwórz cały rozdział ze źródłem →
KretUiDemo — architektura / architecture

KretUiDemo — architektura / architecture

komendyHost: 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 + weryfikatorKretLKretLKretSKretSKretDBKretDBKretUIKretUIKretStyleKretStyleKThemeKThemesrc/plugin.kretlsrc/plugin.kretlkretui-host (renderer, osobny proces)kretui-host (renderer, osobny proces)KretDB: baza pluginu należy do brokeraKretDB: baza pluginu należy do brokera
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)
  • 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.

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

Architecture diagram

komendyHost: 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 + weryfikatorKretLKretLKretSKretSKretDBKretDBKretUIKretUIKretStyleKretStyleKThemeKThemesrc/plugin.kretlsrc/plugin.kretlkretui-host (renderer, osobny proces)kretui-host (renderer, osobny proces)KretDB: baza pluginu należy do brokeraKretDB: baza pluginu należy do brokera
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)
  • 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")]
Otwórz cały rozdział ze źródłem →
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.

Otwórz cały rozdział ze źródłem →
UiDemo — notatki (KretUI + KretStyle + KTheme + KretS + KretDB)

UiDemo — notatki (KretUI + KretStyle + KTheme + KretS + KretDB)

Mała aplikacja z listą notatek. Pokazuje podział odpowiedzialności:

PlikRola
Ui/Notes.kretuistruktura widoku, stan, akcje
Ui/App.kstylewygląd (kaskada, stany, reguły dla małego okna i dotyku)
Ui/App.kthememotyw z wariantami dark i highContrast oraz wymaganiami kontrastu
Script/Main.krslogika: komendy notes.load, notes.add, notes.clear
Disk/Schema.kdbbaza KretDB
plugin.kretlmanifest: uprawnienia i lista komend, które host może wywołać
host-policy.jsonuprawnienia 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.

  1. kret check 11_Examples\UiDemoOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  2. 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.

  1. 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.

  1. %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.

  1. 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

  1. Po otwarciu widok wywołuje notes.load i pokazuje zapisane notatki (albo „Brak notatek.”).
  2. 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.

  1. Wyczyść… otwiera okno potwierdzenia; Usuń kasuje notatki w jednej transakcji, Anuluj zamyka okno.
  2. Notatki zostają po zamknięciu i ponownym uruchomieniu.
  3. 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 handlers manifestu; 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).

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

KretUiDemo — 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.

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.

PoleWartość
NazwaKretUiDemo (UiDemo)
IDLOCAL-KPL-WDGTDEM3
Wersja1.0.0
Zastosowanie / uwagiWymaga logs.own.write i kretdb.* (PROVISIONAL, D-KCS-01); podgląd KretUI z kretui-host.
Technologie KretKretL, KretS, KretDB, KretUI, KretStyle, KTheme
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 wymaganelogs.own.write, kretdb.open, kretdb.read, kretdb.write
Uprawnienia opcjonalnebrak
Status w SDKRUNNABLE_LOCAL
Status w CoreBLOCKED_KCS_D_KCS_01 (logs.own.write, kretdb.*)
Kod źródłowysrc/
BudowanieBUILD_INSTRUCTIONS.md
Instalacjatylko profil Developer (instrukcja wewnętrzna)
Zrzutyscreenshots/ui-dark.png, screenshots/ui-default.png
Testyeksport 7/7 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