Przejdź do treści

KRET LANGUAGE ACADEMY · DOKUMENTACJA ZE ŹRÓDEŁ

Uprawnienia, komendy hosta, limity i izolacja

INTERMEDIATERUNNABLE_LOCALKretL

Manifest deklaruje uprawnienie wymagane (`logs.own.write`) i opcjonalne (`kretdb.read`), komendę hosta `counter.add`, limity pamięci i CPU, profil `light`, preferowaną izolację `sandbox` oraz deklarację obszaru danych `runtimeData`. Polityka hosta testowego przyznaje tylko `logs.own.write` — deklaracja nie jest przyznaniem.

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

module Main

fn Start() -> String {
    log.info("start: uprawnienie logs.own.write przyznane przez hosta")
    return "gotowy"
}

fn Shutdown() {
}

// Komenda hosta zadeklarowana w bloku handlers manifestu. Host przekazuje argumenty, typy sprawdza proces pluginu.
on counter.add(a: Int, b: Int) -> Int {
    return a + b
}

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. fn Start() -> String {Sygnatura funkcji: nazwa, argumenty i ewentualny typ wyniku.
  4. log.info("start: uprawnienie logs.own.write przyznane przez hosta")Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  5. return "gotowy"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. fn Shutdown() {Sygnatura funkcji: nazwa, argumenty i ewentualny typ wyniku.
  9. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  10. Pusta linia oddziela fragmenty źródła.
  11. // Komenda hosta zadeklarowana w bloku handlers manifestu. Host przekazuje argumenty, typy sprawdza proces pluginu.Komentarz autora; nie jest wykonywany.
  12. on counter.add(a: Int, b: Int) -> Int {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  13. return a + bZwrócenie wartości z funkcji; nie jest zapisem do dziennika.
  14. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  15. Pusta linia oddziela fragmenty źródła.

Wynik i typowy błąd

Wynik `start` = „gotowy”, wynik komendy = 42, w dzienniku wpis z `log.info`. Uprawnienie opcjonalne `kretdb.read` nie zostało przyznane i nie jest używane.

Na co uważać

Wywołanie komendy, której nie ma w bloku `handlers` — broker ją odrzuci, nawet gdy handler `on …` istnieje w kodzie.

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. checkkret check . --jsonKatalog: project · Oczekiwany kod wyjścia: 0
  2. run-invokekret run . --policy host-policy.json --data {DATA} --invoke counter.add=[2,40]Katalog: 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 — KRETL-I01-PermissionsHandlersLimits
# Rzeczywisty wynik uruchomienia (SDK 1.0.0-rc.3+kret.local.3, 2026-11-01T12:46:32Z). Ścieżki zastąpione znacznikami <project>, <data>, <out>, <sdk>.
# Actual output of the run. Paths replaced by placeholders.

### 1. check  (exit 0, PASS)
> kret check . --json
{
  "format": "kret-diagnostics/1",
  "project": "<project>",
  "succeeded": true,
  "plugin": {
    "id": "LOCAL-KPL-KLM2PERM",
    "name": "PermissionsHandlersLimits",
    "version": "1.0.0",
    "profile": "light",
    "isolation": "sandbox",
    "database": false
  },
  "permissions": {
    "required": [
      "logs.own.write"
    ],
    "optional": [
      "kretdb.read"
    ]
  },
  "handlers": {
    "lifecycle": [
      "start",
      "shutdown"
    ],
    "events": [],
    "commands": [
      "counter.add"
    ]
  },
  "diagnostics": []
}

### 2. run-invoke  (exit 0, PASS)
> kret run . --policy host-policy.json --data {DATA} --invoke counter.add=[2,40]
{
  "broker": {
    "pid": 49520,
    "startupMs": 41.0986,
    "pluginHostSha256": "93405d128c95234d913efcd6e28fe54073caa0375135a2184290f958e7f7cfe5",
    "allowProvisionalRisk": true,
    "memoryIdle": {
      "managedBytes": 1193408,
      "allocatedBytes": 1190768,
      "workingSetBytes": 32587776,
      "privateBytes": 10113024,
      "peakWorkingSetBytes": 32587776,
      "cpuMs": 93.75
    }
  },
  "brokerWithPlugins": {
    "memory": {
      "managedBytes": 1549520,
      "allocatedBytes": 1546400,
      "workingSetBytes": 41263104,
      "privateBytes": 14135296,
      "peakWorkingSetBytes": 41308160,
      "cpuMs": 187.5
    }
  },
  "plugins": [
    {
      "package": "<project>\\Build",
      "admitted": true,
      "startMs": 169.3413,
      "subject": "LOCAL-KPL-KLM2PERM",
      "instance": "01a19725-b136-73ba-a28c-c5b2b92cc8a0",
      "pid": 30224,
      "jobObject": true,
      "isolation": {
        "level": "AppContainer",
        "restrictedToken": false,
        "lowIntegrity": false,
        "appContainer": true
      },
      "limits": {
        "profile": "light",
        "scriptMemoryBytes": 64000000,
        "processMemoryBytes": 201326592,
        "cpuPercent": 5,
        "maxInstructions": 5000000,
        "clamped": []
      },
      "calls": [
        {
          "operation": "start",
          "ok": true,
          "status": "Completed",
          "type": "String",
          "value": "gotowy",
          "brokerMs": 13.068,
          "vmMs": 10.2455,
          "instructions": 4,
          "hostCalls": 1,
          "pluginReportedMemory": {
            "managedBytes": 740264,
            "allocatedBytes": 738200,
            "workingSetBytes": 31944704,
            "privateBytes": 10977280,
            "peakWorkingSetBytes": 32256000,
            "cpuMs": 93.75
          }
        },
        {
          "operation": "on counter.add",
          "ok": true,
          "status": "Completed",
          "type": "Int64",
          "value": 42,
          "brokerMs": 2.0793,
          "vmMs": 0.0014,
          "instructions": 4,
          "hostCalls": 0,
          "pluginReportedMemory": {
            "managedBytes": 748488,
            "allocatedBytes": 746400,
            "workingSetBytes": 31977472,
            "privateBytes": 10985472,
            "peakWorkingSetBytes": 32256000,
            "cpuMs": 93.75
          }
        },
        {
          "operation": "shutdown",
          "ok": true,
          "status": "Completed",
          "type": "Unit",
          "value": null,
          "brokerMs": 0.3877,
          "vmMs": 0.0016,
          "instructions": 1,
          "hostCalls": 0,
          "pluginReportedMemory": {
            "managedBytes": 756712,
            "allocatedBytes": 754600,
            "workingSetBytes": 31985664,
            "privateBytes": 10985472,
            "peakWorkingSetBytes": 32256000,
            "cpuMs": 93.75
          }
        }
      ],
      "processMemoryMeasuredByBroker": {
        "workingSetBytes": 31985664,
        "privateBytes": 10985472,
        "peakWorkingSetBytes": 32256000,
        "cpuMs": 93.75
      },
      "summary": {
        "exitCode": 0,
        "killed": false,
        "hostCalls": 1,
        "denials": 0,
        "peakCommitBytes": 11870208,
        "log": [
          "[info] start: uprawnienie logs.own.write przyznane przez hosta"
        ]
      }
    }
  ],
  "brokerAfterClose": {
    "memory": {
      "managedBytes": 603552,
      "allocatedBytes": 1546400,
      "workingSetBytes": 42528768,
      "privateBytes": 14979072,
      "peakWorkingSetBytes": 42528768,
      "cpuMs": 203.125
    }
  },
  "audit": {
    "entries": 15,
    "denials": 0,
    "grantsIssued": 1,
    "denied": []
  },
  "exitCode": 0
}


Czytanie kodu linia po linii

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

  1. # EXPECTED_OUTPUT — KRETL-I01-PermissionsHandlersLimitsOdczytaj 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:32Z). Ś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. check (exit 0, PASS)Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  6. > kret check . --jsonOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  7. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  8. "format": "kret-diagnostics/1",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  9. "project": "<project>",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  10. "succeeded": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  11. "plugin": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  12. "id": "LOCAL-KPL-KLM2PERM",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  13. "name": "PermissionsHandlersLimits",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  14. "version": "1.0.0",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  15. "profile": "light",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  16. "isolation": "sandbox",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  17. "database": falsePole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  18. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  19. "permissions": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  20. "required": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  21. "logs.own.write"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. "optional": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  24. "kretdb.read"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  25. ]Zamknięcie struktury otwartej we wcześniejszych liniach.
  26. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  27. "handlers": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  28. "lifecycle": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  29. "start",Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  30. "shutdown"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  31. ],Zamknięcie struktury otwartej we wcześniejszych liniach.
  32. "events": [],Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  33. "commands": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  34. "counter.add"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  35. ]Zamknięcie struktury otwartej we wcześniejszych liniach.
  36. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  37. "diagnostics": []Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  38. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  39. Pusta linia oddziela fragmenty źródła.
  40. ### 2. run-invoke (exit 0, PASS)Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  41. > kret run . --policy host-policy.json --data {DATA} --invoke counter.add=[2,40]Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  42. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  43. "broker": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  44. "pid": 49520,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  45. "startupMs": 41.0986,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  46. "pluginHostSha256": "93405d128c95234d913efcd6e28fe54073caa0375135a2184290f958e7f7cfe5",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  47. "allowProvisionalRisk": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  48. "memoryIdle": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  49. "managedBytes": 1193408,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  50. "allocatedBytes": 1190768,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  51. "workingSetBytes": 32587776,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  52. "privateBytes": 10113024,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  53. "peakWorkingSetBytes": 32587776,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  54. "cpuMs": 93.75Pole 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. "brokerWithPlugins": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  58. "memory": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  59. "managedBytes": 1549520,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  60. "allocatedBytes": 1546400,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  61. "workingSetBytes": 41263104,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  62. "privateBytes": 14135296,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  63. "peakWorkingSetBytes": 41308160,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  64. "cpuMs": 187.5Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  65. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  66. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  67. "plugins": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  68. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  69. "package": "<project>\\Build",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  70. "admitted": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  71. "startMs": 169.3413,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  72. "subject": "LOCAL-KPL-KLM2PERM",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  73. "instance": "01a19725-b136-73ba-a28c-c5b2b92cc8a0",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  74. "pid": 30224,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  75. "jobObject": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  76. "isolation": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  77. "level": "AppContainer",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  78. "restrictedToken": false,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  79. "lowIntegrity": false,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  80. "appContainer": truePole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  81. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  82. "limits": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  83. "profile": "light",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  84. "scriptMemoryBytes": 64000000,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  85. "processMemoryBytes": 201326592,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  86. "cpuPercent": 5,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  87. "maxInstructions": 5000000,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  88. "clamped": []Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  89. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  90. "calls": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  91. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  92. "operation": "start",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  93. "ok": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  94. "status": "Completed",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  95. "type": "String",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  96. "value": "gotowy",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  97. "brokerMs": 13.068,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  98. "vmMs": 10.2455,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  99. "instructions": 4,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  100. "hostCalls": 1,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  101. "pluginReportedMemory": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  102. "managedBytes": 740264,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  103. "allocatedBytes": 738200,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  104. "workingSetBytes": 31944704,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  105. "privateBytes": 10977280,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  106. "peakWorkingSetBytes": 32256000,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  107. "cpuMs": 93.75Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  108. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  109. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  110. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  111. "operation": "on counter.add",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  112. "ok": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  113. "status": "Completed",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  114. "type": "Int64",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  115. "value": 42,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  116. "brokerMs": 2.0793,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  117. "vmMs": 0.0014,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  118. "instructions": 4,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  119. "hostCalls": 0,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  120. "pluginReportedMemory": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  121. "managedBytes": 748488,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  122. "allocatedBytes": 746400,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  123. "workingSetBytes": 31977472,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  124. "privateBytes": 10985472,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  125. "peakWorkingSetBytes": 32256000,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  126. "cpuMs": 93.75Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  127. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  128. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  129. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  130. "operation": "shutdown",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  131. "ok": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  132. "status": "Completed",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  133. "type": "Unit",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  134. "value": null,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  135. "brokerMs": 0.3877,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  136. "vmMs": 0.0016,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  137. "instructions": 1,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  138. "hostCalls": 0,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  139. "pluginReportedMemory": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  140. "managedBytes": 756712,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  141. "allocatedBytes": 754600,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  142. "workingSetBytes": 31985664,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  143. "privateBytes": 10985472,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  144. "peakWorkingSetBytes": 32256000,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  145. "cpuMs": 93.75Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  146. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  147. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  148. ],Zamknięcie struktury otwartej we wcześniejszych liniach.
  149. "processMemoryMeasuredByBroker": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  150. "workingSetBytes": 31985664,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  151. "privateBytes": 10985472,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  152. "peakWorkingSetBytes": 32256000,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  153. "cpuMs": 93.75Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  154. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  155. "summary": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  156. "exitCode": 0,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  157. "killed": false,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  158. "hostCalls": 1,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  159. "denials": 0,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  160. "peakCommitBytes": 11870208,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  161. "log": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  162. "[info] start: uprawnienie logs.own.write przyznane przez hosta"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  163. ]Zamknięcie struktury otwartej we wcześniejszych liniach.
  164. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  165. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  166. ],Zamknięcie struktury otwartej we wcześniejszych liniach.
  167. "brokerAfterClose": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  168. "memory": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  169. "managedBytes": 603552,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  170. "allocatedBytes": 1546400,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  171. "workingSetBytes": 42528768,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  172. "privateBytes": 14979072,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  173. "peakWorkingSetBytes": 42528768,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  174. "cpuMs": 203.125Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  175. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  176. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  177. "audit": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  178. "entries": 15,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  179. "denials": 0,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  180. "grantsIssued": 1,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  181. "denied": []Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  182. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  183. "exitCode": 0Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  184. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  185. Pusta linia oddziela fragmenty źródła.
  186. 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_KRETL.zip:KretL/Examples/INTERMEDIATE_PermissionsHandlersLimits/example.json

02_PLAYGROUND/EXAMPLES/KRETL-I01-PermissionsHandlersLimits.json
SHA-256 86CD5E15E8700F61774201493BD7708A952CB761D866EBF8794190EB4EA17ED2

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.

KRETL-I01-PermissionsHandlersLimits — Uprawnienia, komendy hosta, limity i izolacja

KRETL-I01-PermissionsHandlersLimits — Uprawnienia, komendy hosta, limity i izolacja

🇬🇧 English version below.
PoleWartość
TechnologiaKretL
PoziomINTERMEDIATE
KlasyfikacjaRUNNABLE_LOCAL — Uruchamialny lokalnie (SDK, izolowany proces pluginu)
PlaygroundLOCAL_EXECUTE — lokalnie: wykonanie w KretStudio / SDK (publicznie: tylko statycznie)
SDK1.0.0-rc.3+kret.local.3 (kandydat lokalny, niepodpisany)
Wynik testuTEST_RESULTS.json, rzeczywisty wynik: EXPECTED_OUTPUT.txt

Co pokazuje

Manifest deklaruje uprawnienie wymagane (logs.own.write) i opcjonalne (kretdb.read), komendę hosta counter.add, limity pamięci i CPU, profil light, preferowaną izolację sandbox oraz deklarację obszaru danych runtimeData. Polityka hosta testowego przyznaje tylko logs.own.write — deklaracja nie jest przyznaniem.

Pliki

Plik
Script/Main.krs
host-policy.json
plugin.kretl

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 check . --json — walidacja
  2. kret run . --policy host-policy.json --data {DATA} --invoke counter.add=[2,40] — start + wywołanie komendy counter.add z argumentami 2 i 40

Oczekiwany wynik

Wynik start = „gotowy”, wynik komendy = 42, w dzienniku wpis z log.info. Uprawnienie opcjonalne kretdb.read nie zostało przyznane i nie jest używane.

Najczęstszy błąd

Wywołanie komendy, której nie ma w bloku handlers — broker ją odrzuci, nawet gdy handler on … istnieje w kodzie.

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