KRET LANGUAGE ACADEMY · DOKUMENTACJA ZE ŹRÓDEŁ
Schemat, typy i profile
Czego się nauczysz
- Prześledź źródła i wyjaśnij opisany kontrakt.
- W SchemaAndProfiles powiąż wartość profilu z typem i zakresem w schemacie.
Wymagania wstępne
- Ukończ Podstawy i wcześniejszy poziom tej ścieżki.
Wyjaśnienie krok po kroku
KretConfig oddziela schemat ustawień od profili. Typ, jednostka, zakres i dozwolone wartości opisują poprawną konfigurację. Parametr tajny nie powinien zawierać sekretu w pliku: tajne dane obsługuje Vault.
Praca z kodem źródłowym
Schemat ustawień, profile i polityka hosta (PROVISIONAL)
Na podstawie przykładu SDK `ConfigProfiles`: `schema.kconfig` (typy z jednostkami, zakresy, `allowed`, `hotReload`, ustawienie tajne), `project.kconfig` (profile `default`, `gaming extends default`, `quiet`), `policy.kconfig` (blokada i górna granica). `kret config show` składa warstwy i pokazuje pochodzenie każdej wartości; KretS czyta ustawienia przez `Kret.Config`, a sekretu **nie** dostaje.
kconfig "1.0"
// Polityka hosta: ograniczenia, których żaden profil ani użytkownik nie może przekroczyć.
policy {
lock telemetry.enabled false
max fan.target 90%
}
Czytanie kodu linia po linii
Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.
kconfig "1.0"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.Pusta linia oddziela fragmenty źródła.// Polityka hosta: ograniczenia, których żaden profil ani użytkownik nie może przekroczyć.Komentarz autora; nie jest wykonywany.policy {Początek nazwanego bloku; jego pola odczytaj w powiązanej referencji.lock telemetry.enabled falseOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.max fan.target 90%Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.}Zamknięcie struktury otwartej we wcześniejszych liniach.
Oczekiwany wynik: `show` podaje wartości z pochodzeniem (`default`, `project:…`, `policy`); `run` zwraca tryb `performance`, a komenda `settings.secret` — opis odmowy zamiast wartości.
Typowy błąd: Wpisanie wartości sekretu wprost do pliku (`api.token "abc"`) → `KCS-CFG-0007` (przykład KRETCONFIG-I01). Vault działa tylko na Windows (DPAPI).
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.
KretConfig — wprowadzenie
KretConfig — wprowadzenie
Status 1.0: `PROVISIONAL_VERSIONED` — zdefiniowane i przetestowane, za mało dowodów na stabilne 1.0; własna ścieżka rozwoju. Gramatyka/wersja: kconfig-1.0. Status języka nie nadaje uprawnień KCS ani prawa do działania w Production.Czym jest
KretConfig opisuje ustawienia pluginu: schemat (typy z jednostkami, zakresy, wartości dozwolone, hotReload, ustawienia tajne), profile (z dziedziczeniem), warstwy (domyślne → użytkownik → projekt → moduł) i politykę hosta, która zawsze wygrywa. Sekrety wyłącznie przez Vault (Windows DPAPI). Status PROVISIONAL_VERSIONED (własna ścieżka rozwoju).
Dla początkujących
Definiujesz ustawienia (np. „co ile odświeżać”, „tryb”) z typem i wartością domyślną, potem profile z innymi wartościami. Plugin czyta gotową, sprawdzoną konfigurację; hasła i klucze nie trafiają do plików.
Dla zaawansowanych programistów
Każda wartość ma pochodzenie (default, user:p, project:p, module:p, policy). Hot reload dwufazowy: błąd walidacji albo wyjątek odbiorcy wycofuje całą zmianę; ustawienie bez hotReload true → KCS-CFG-0205 (wymaga restartu). Blok policy poza plikiem polityki hosta → KCS-CFG-0203. KretS (getString/getInt/getFloat/getBool) nie odczyta sekretu (sprawdzone: odmowa KCS-CFG-0007). Vault na Linux/macOS → KCS-CFG-0207 (nie udaje ochrony).
Jakie problemy rozwiązuje
Typowana, warstwowa konfiguracja z nadrzędną polityką hosta i bez sekretów w plikach.
Kiedy używać
- ustawienia pluginu i profile (np.
gaming,quiet) - ograniczenia hosta (blokady, minimum/maksimum)
- klucze API przez Vault (dla hosta, np. brama modeli)
Kiedy nie używać
- sekrety wpisane wprost (
KCS-CFG-0007) - ustawienia typu lista/rekord (NOT_SUPPORTED)
- Vault poza Windows
- traktowanie jako FROZEN — status PROVISIONAL
Współpraca z innymi technologiami
KretS (use Kret.Config as config), KretAI (sekret klucza modelu), Core (warstwa Store ✓, Vault ✗).
Obecny status
PROVISIONAL_VERSIONED — zdefiniowane i przetestowane, za mało dowodów na stabilne 1.0; własna ścieżka rozwoju.
Dalej: ARCHITECTURE.md · SYNTAX_REFERENCE.md · ../Tutorials/BASIC/TUTORIAL_PL.md
KretConfig — referencja składni
KretConfig — referencja składni
Status 1.0: `PROVISIONAL_VERSIONED` — zdefiniowane i przetestowane, za mało dowodów na stabilne 1.0; własna ścieżka rozwoju. Gramatyka/wersja: kconfig-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).
schema / setting
Definicje ustawień.
schema {
setting refresh.interval {
type Duration
default 5s
min 1s
max 1h
hotReload true
}
setting api.token {
type String
secret true
}
}
Czytanie kodu linia po linii
Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.
schema {Początek nazwanego bloku; jego pola odczytaj w powiązanej referencji.setting refresh.interval {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.type DurationOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.default 5sOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.min 1sOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.max 1hOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.hotReload trueOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.}Zamknięcie struktury otwartej we wcześniejszych liniach.setting api.token {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.type StringOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.secret trueOdczytaj 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 | type default min max allowed secret hotReload description |
| Wynik | — |
| Wymagania | default wymagane (poza tajnymi, które go nie mogą mieć) |
| Ograniczenia | secret tylko String |
| Możliwe błędy | KCS-CFG-0001…0005 |
| Wprowadzono | kconfig 1.0 |
profile / extends / vault
Profile z dziedziczeniem; sekret jako odwołanie do Vault.
profile default {
refresh.interval 10s
api.token vault "nazwa-wpisu"
}
profile gaming extends default {
mode "performance"
}
Czytanie kodu linia po linii
Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.
profile default {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.refresh.interval 10sOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.api.token vault "nazwa-wpisu"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.}Zamknięcie struktury otwartej we wcześniejszych liniach.profile gaming extends default {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.mode "performance"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 | — |
| Wynik | — |
| Wymagania | — |
| Ograniczenia | cykl/nieznany profil bazowy = błąd |
| Możliwe błędy | KCS-CFG-0007, 0201, 0202 |
| Wprowadzono | kconfig 1.0 |
policy
Ograniczenia hosta; zawsze wygrywają.
policy {
lock telemetry.enabled false
max fan.target 90%
min refresh.interval 2s
}
Czytanie kodu linia po linii
Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.
policy {Początek nazwanego bloku; jego pola odczytaj w powiązanej referencji.lock telemetry.enabled falseOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.max fan.target 90%Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.min refresh.interval 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 | lock, max, min |
| Wynik | — |
| Wymagania | tylko w policy.kconfig hosta |
| Ograniczenia | — |
| Możliwe błędy | KCS-CFG-0203, 0204, 0006 |
| Wprowadzono | kconfig 1.0 |
config.get* (KretS)
Odczyt złożonej konfiguracji przez brokera.
use Kret.Config as config
let ms = config.getInt("refresh.interval")
Czytanie kodu linia po linii
Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.
use Kret.Config as configOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.let ms = config.getInt("refresh.interval")Wiązanie wartości; typ i możliwość zmiany zależą od użytej deklaracji.
| Cecha | Wartość |
|---|---|
| Parametry / typy | klucz |
| Wynik | String/Int/Float/Bool (Duration w ms) |
| Wymagania | brak uprawnień; sekret zawsze odmowa |
| Ograniczenia | — |
| Możliwe błędy | KCS-CFG-0007 |
| Wprowadzono | kconfig 1.0 |
KretConfig — samouczek BASIC
KretConfig — samouczek BASIC
Status 1.0: `PROVISIONAL_VERSIONED` — zdefiniowane i przetestowane, za mało dowodów na stabilne 1.0; własna ścieżka rozwoju. Gramatyka/wersja: kconfig-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. Schemat ustawień, profile i polityka hosta (PROVISIONAL) (KRETCONFIG-B01-SchemaAndProfiles)
Projekt: ../../Examples/BASIC_SchemaAndProfiles/ · klasyfikacja RUNNABLE_LOCAL · Playground LOCAL_EXECUTE
Kroki (katalog roboczy: katalog przykładu):
kret check . --json— w wyniku:"succeeded": truekret config show .— w wyniku:10skret config show . --profile gaming— w wyniku:performancekret run . --policy host-policy.json --data {DATA} --profile gaming --invoke settings.secret— w wyniku:performance
Wynik tej rundy: PASS — zob. EXPECTED_OUTPUT.txt.
Ćwiczenie i sprawdzenie wiedzy
W SchemaAndProfiles powiąż wartość profilu z typem i zakresem w schemacie.
Szkic nie jest wysyłany na serwer i znika po opuszczeniu lekcji. Przed wyjściem możesz go skopiować.Podpowiedzi
- KretConfig opisuje ustawienia pluginu: schemat (typy z jednostkami, zakresy, wartości dozwolone, `hotReload`, ustawienia tajne), profile (z dziedziczeniem), warstwy (domyślne → użytkownik → projekt → moduł) i politykę hosta, która zawsze wygrywa. Sekrety wyłącznie przez Vault (Windows DPAPI). Status **PROVISIONAL_VERSIONED** (własna ścieżka rozwoju).
- 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. KretConfig oddziela schemat ustawień od profili. Typ, jednostka, zakres i dozwolone wartości opisują poprawną konfigurację. Parametr tajny nie powinien zawierać sekretu w pliku: tajne dane obsługuje Vault.
Podsumowanie i następny krok
KretConfig oddziela schemat ustawień od profili. Typ, jednostka, zakres i dozwolone wartości opisują poprawną konfigurację. Parametr tajny nie powinien zawierać sekretu w pliku: tajne dane obsługuje Vault.
Zaloguj się na konto użytkownika, aby zapisywać postęp i zakładki. Konta obsługi mogą czytać bez zapisu postępu. Logowanie →