Przejdź do treści

KRET LANGUAGE ACADEMY · DOKUMENTACJA ZE ŹRÓDEŁ

Kontrakt usługi `.klink`: kompilacja i schemat

BASICVALIDATION_ONLYKretLink

Kontrakt `klink "1.0"` z usługą, wersją SemVer, metodami (parametry, wynik, termin, uprawnienie) i typami KretS. `kret link compile` daje postać kanoniczną JSON i skrót SHA-256, `kret link schema` — JSON Schema żądań i wyników (pochodna kontraktu, nie drugie źródło prawdy). Kontrakt **nie daje prawa do komunikacji**.

Edycja i zapisane wyniki

Witryna nie wykonuje kodu ani nie prowadzi walidacji SDK. Wyniki poniżej pochodzą z eksportu określonej wersji i przestają opisywać kod po jego zmianie.

Kanoniczne pliki projektu

klink "1.0"

// Wersjonowany kontrakt usługi notatek.
service notes.api {
    version "1.2.0"

    method add {
        description "Dodaje notatkę i zwraca wszystkie notatki."
        param text String
        returns "List<String>"
        permission kretlink.publish
        timeout 5s
    }
    method count {
        description "Liczba notatek."
        returns Int64
    }
    method find {
        description "Pierwsza notatka z prefiksem albo null."
        param prefix String
        returns "String?"
    }
}

Czytanie kodu linia po linii

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

  1. klink "1.0"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  2. Pusta linia oddziela fragmenty źródła.
  3. // Wersjonowany kontrakt usługi notatek.Komentarz autora; nie jest wykonywany.
  4. service notes.api {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  5. version "1.2.0"Pole tożsamości lub wersji w otaczającym bloku; zachowaj jego kontekst.
  6. Pusta linia oddziela fragmenty źródła.
  7. method add {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  8. description "Dodaje notatkę i zwraca wszystkie notatki."Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  9. param text StringOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  10. returns "List<String>"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  11. permission kretlink.publishOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  12. timeout 5sOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  13. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  14. method count {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  15. description "Liczba notatek."Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  16. returns Int64Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  17. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  18. method find {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  19. description "Pierwsza notatka z prefiksem albo null."Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  20. param prefix StringOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  21. returns "String?"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  22. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  23. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  24. Pusta linia oddziela fragmenty źródła.

Wynik i typowy błąd

Kod 0 w obu krokach; schemat wymienia usługę `notes.api` i jej metody.

Na co uważać

Rekord jako typ parametru — rekordy w kontraktach 1.0 są NOT_SUPPORTED. Dozwolone: `Bool Int64 Float64 String Bytes Unit List<T> Map<String,T> T?`.

Wymagania wersji i procedura lokalna

sdk
1.0.0-rc.3+kret.local.3
sdkInfoReports
1.0.0-rc.3
core
1.0.0-test.6.11-draft.1
os
Windows 11 x64
dotnet
.NET 10 runtime

Polecenia poniżej są instrukcją do samodzielnego wykonania z właściwym lokalnym SDK. DATA/OUT muszą wskazywać nowe katalogi testowe. Nie ma przycisku uruchamiania na serwerze.

  1. compilekret link compile Bridge/notes.klink -o {OUT}/notes.jsonKatalog: project · Oczekiwany kod wyjścia: 0
  2. schemakret link schema Bridge/notes.klinkKatalog: project · Oczekiwany kod wyjścia: 0

Wyniki zapisane w pakiecie źródłowym

To dowód z eksportu, nie wynik bieżącego wykonania w przeglądarce.

# EXPECTED_OUTPUT — KRETLINK-B01-ContractCompileSchema
# Rzeczywisty wynik uruchomienia (SDK 1.0.0-rc.3+kret.local.3, 2026-11-01T12:46:33Z). Ścieżki zastąpione znacznikami <project>, <data>, <out>, <sdk>.
# Actual output of the run. Paths replaced by placeholders.

### 1. compile  (exit 0, PASS)
> kret link compile Bridge/notes.klink -o {OUT}/notes.json

[stderr]
OK: notes.api 1.2.0, metod: 3, sha256: c16099f474fad0fda0c82f44cefd7fb5e4c4db89f72f1218c3cdab3708ab517e

### 2. schema  (exit 0, PASS)
> kret link schema Bridge/notes.klink
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "notes.api 1.2.0",
  "$defs": {
    "add.request": {
      "type": "array",
      "minItems": 1,
      "maxItems": 1,
      "prefixItems": [
        {
          "type": "string",
          "maxLength": 16384
        }
      ],
      "items": false
    },
    "add.result": {
      "type": "array",
      "maxItems": 100000,
      "items": {
        "type": "string",
        "maxLength": 16384
      }
    },
    "count.request": {
      "type": "array",
      "minItems": 0,
      "maxItems": 0,
      "prefixItems": [],
      "items": false
    },
    "count.result": {
      "type": "integer"
    },
    "find.request": {
      "type": "array",
      "minItems": 1,
      "maxItems": 1,
      "prefixItems": [
        {
          "type": "string",
          "maxLength": 16384
        }
      ],
      "items": false
    },
    "find.result": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 16384
        },
        {
          "type": "null"
        }
      ]
    }
  }
}


Czytanie kodu linia po linii

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

  1. # EXPECTED_OUTPUT — KRETLINK-B01-ContractCompileSchemaOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  2. # Rzeczywisty wynik uruchomienia (SDK 1.0.0-rc.3+kret.local.3, 2026-11-01T12:46:33Z). Ścieżki zastąpione znacznikami <project>, <data>, <out>, <sdk>.Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  3. # Actual output of the run. Paths replaced by placeholders.Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  4. Pusta linia oddziela fragmenty źródła.
  5. ### 1. compile (exit 0, PASS)Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  6. > kret link compile Bridge/notes.klink -o {OUT}/notes.jsonOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  7. Pusta linia oddziela fragmenty źródła.
  8. [stderr]Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  9. OK: notes.api 1.2.0, metod: 3, sha256: c16099f474fad0fda0c82f44cefd7fb5e4c4db89f72f1218c3cdab3708ab517eOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  10. Pusta linia oddziela fragmenty źródła.
  11. ### 2. schema (exit 0, PASS)Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  12. > kret link schema Bridge/notes.klinkOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  13. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  14. "$schema": "https://json-schema.org/draft/2020-12/schema",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  15. "title": "notes.api 1.2.0",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  16. "$defs": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  17. "add.request": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  18. "type": "array",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  19. "minItems": 1,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  20. "maxItems": 1,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  21. "prefixItems": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  22. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  23. "type": "string",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  24. "maxLength": 16384Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  25. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  26. ],Zamknięcie struktury otwartej we wcześniejszych liniach.
  27. "items": falsePole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  28. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  29. "add.result": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  30. "type": "array",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  31. "maxItems": 100000,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  32. "items": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  33. "type": "string",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  34. "maxLength": 16384Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  35. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  36. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  37. "count.request": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  38. "type": "array",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  39. "minItems": 0,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  40. "maxItems": 0,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  41. "prefixItems": [],Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  42. "items": falsePole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  43. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  44. "count.result": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  45. "type": "integer"Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  46. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  47. "find.request": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  48. "type": "array",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  49. "minItems": 1,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  50. "maxItems": 1,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  51. "prefixItems": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  52. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  53. "type": "string",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  54. "maxLength": 16384Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  55. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  56. ],Zamknięcie struktury otwartej we wcześniejszych liniach.
  57. "items": falsePole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  58. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  59. "find.result": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  60. "anyOf": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  61. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  62. "type": "string",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  63. "maxLength": 16384Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  64. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  65. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  66. "type": "null"Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  67. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  68. ]Zamknięcie struktury otwartej we wcześniejszych liniach.
  69. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  70. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  71. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  72. Pusta linia oddziela fragmenty źródła.
  73. Pusta linia oddziela fragmenty źródła.
Diagnostyka i raporty testów

null
Czytanie kodu linia po linii

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

  1. nullOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
Pochodzenie i integralność

KRET_LANGUAGE_KRETLINK.zip:KretLink/Examples/BASIC_ContractCompileSchema/example.json

02_PLAYGROUND/EXAMPLES/KRETLINK-B01-ContractCompileSchema.json
SHA-256 3BAB3936720EE4E3EDBECF08F994B5C0F6B9B3CD9D80C22733DDDA8413EF88E1

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.

KRETLINK-B01-ContractCompileSchema — Kontrakt usługi `.klink`: kompilacja i schemat
🇬🇧 English version below.
PoleWartość
TechnologiaKretLink
PoziomBASIC
KlasyfikacjaVALIDATION_ONLY — Tylko walidacja (bez wykonania)
PlaygroundPUBLIC_STATIC — publicznie: tylko podgląd kodu i gotowe wyniki
SDK1.0.0-rc.3+kret.local.3 (kandydat lokalny, niepodpisany)
Wynik testuTEST_RESULTS.json, rzeczywisty wynik: EXPECTED_OUTPUT.txt

Co pokazuje

Kontrakt klink "1.0" z usługą, wersją SemVer, metodami (parametry, wynik, termin, uprawnienie) i typami KretS. kret link compile daje postać kanoniczną JSON i skrót SHA-256, kret link schema — JSON Schema żądań i wyników (pochodna kontraktu, nie drugie źródło prawdy). Kontrakt nie daje prawa do komunikacji.

Pliki

Plik
Bridge/notes.klink

Jak uruchomić

Katalog roboczy: katalog tego przykładu. kret oznacza <SDK>\Compiler\kret.exe, kretui-host — <SDK>\UiHost\kretui-host.exe. {DATA} / {OUT} to nowe, puste katalogi poza projektem. Wymagania: REQUIREMENTS.md.

  1. kret link compile Bridge/notes.klink -o {OUT}/notes.json — postać kanoniczna JSON
  2. kret link schema Bridge/notes.klink — JSON Schema

Oczekiwany wynik

Kod 0 w obu krokach; schemat wymienia usługę notes.api i jej metody.

Najczęstszy błąd

Rekord jako typ parametru — rekordy w kontraktach 1.0 są NOT_SUPPORTED. Dozwolone: Bool Int64 Float64 String Bytes Unit List<T> Map<String,T> T?.

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

Zaloguj się na konto użytkownika, aby zapisywać postęp i zakładki. Konta obsługi mogą czytać bez zapisu postępu. Logowanie →

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

Polityka prywatności