@kindgi/cli 0.1.7-rc.0 → 0.1.8-rc.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (222) hide show
  1. package/README.md +13 -13
  2. package/dist/api-address.d.ts +57 -0
  3. package/dist/api-address.d.ts.map +1 -0
  4. package/dist/api-address.js +144 -0
  5. package/dist/api-address.js.map +1 -0
  6. package/dist/build/defaults.d.ts +9 -0
  7. package/dist/build/defaults.d.ts.map +1 -1
  8. package/dist/build/defaults.js +132 -30
  9. package/dist/build/defaults.js.map +1 -1
  10. package/dist/build/hosted.d.ts +32 -0
  11. package/dist/build/hosted.d.ts.map +1 -0
  12. package/dist/build/hosted.js +62 -0
  13. package/dist/build/hosted.js.map +1 -0
  14. package/dist/build/runners.d.ts +10 -0
  15. package/dist/build/runners.d.ts.map +1 -1
  16. package/dist/commands/adapters.d.ts.map +1 -1
  17. package/dist/commands/adapters.js +5 -9
  18. package/dist/commands/adapters.js.map +1 -1
  19. package/dist/commands/agents.d.ts.map +1 -1
  20. package/dist/commands/agents.js +2 -1
  21. package/dist/commands/agents.js.map +1 -1
  22. package/dist/commands/artifacts.js +1 -1
  23. package/dist/commands/artifacts.js.map +1 -1
  24. package/dist/commands/auth.d.ts.map +1 -1
  25. package/dist/commands/auth.js +6 -5
  26. package/dist/commands/auth.js.map +1 -1
  27. package/dist/commands/blocks.d.ts.map +1 -1
  28. package/dist/commands/blocks.js +4 -3
  29. package/dist/commands/blocks.js.map +1 -1
  30. package/dist/commands/build.d.ts.map +1 -1
  31. package/dist/commands/build.js +191 -47
  32. package/dist/commands/build.js.map +1 -1
  33. package/dist/commands/conversations.js +1 -1
  34. package/dist/commands/conversations.js.map +1 -1
  35. package/dist/commands/deploy.d.ts.map +1 -1
  36. package/dist/commands/deploy.js +296 -36
  37. package/dist/commands/deploy.js.map +1 -1
  38. package/dist/commands/dev.d.ts +0 -2
  39. package/dist/commands/dev.d.ts.map +1 -1
  40. package/dist/commands/dev.js +74 -54
  41. package/dist/commands/dev.js.map +1 -1
  42. package/dist/commands/doctor.d.ts +1 -1
  43. package/dist/commands/doctor.d.ts.map +1 -1
  44. package/dist/commands/doctor.js +66 -3
  45. package/dist/commands/doctor.js.map +1 -1
  46. package/dist/commands/flows.d.ts.map +1 -1
  47. package/dist/commands/flows.js +2 -1
  48. package/dist/commands/flows.js.map +1 -1
  49. package/dist/commands/init.d.ts +1 -1
  50. package/dist/commands/init.js +13 -12
  51. package/dist/commands/init.js.map +1 -1
  52. package/dist/commands/license.d.ts.map +1 -1
  53. package/dist/commands/license.js +130 -5
  54. package/dist/commands/license.js.map +1 -1
  55. package/dist/commands/projects.d.ts.map +1 -1
  56. package/dist/commands/projects.js +67 -8
  57. package/dist/commands/projects.js.map +1 -1
  58. package/dist/commands/runs.d.ts.map +1 -1
  59. package/dist/commands/runs.js +2 -2
  60. package/dist/commands/runs.js.map +1 -1
  61. package/dist/commands/schedules.d.ts.map +1 -1
  62. package/dist/commands/schedules.js +30 -2
  63. package/dist/commands/schedules.js.map +1 -1
  64. package/dist/commands/secrets.js +1 -1
  65. package/dist/commands/secrets.js.map +1 -1
  66. package/dist/commands/skills.d.ts +42 -6
  67. package/dist/commands/skills.d.ts.map +1 -1
  68. package/dist/commands/skills.js +258 -158
  69. package/dist/commands/skills.js.map +1 -1
  70. package/dist/commands/sso.d.ts.map +1 -1
  71. package/dist/commands/sso.js +5 -2
  72. package/dist/commands/sso.js.map +1 -1
  73. package/dist/commands/webhooks.d.ts +0 -6
  74. package/dist/commands/webhooks.d.ts.map +1 -1
  75. package/dist/commands/webhooks.js +12 -85
  76. package/dist/commands/webhooks.js.map +1 -1
  77. package/dist/config.d.ts +34 -0
  78. package/dist/config.d.ts.map +1 -1
  79. package/dist/config.js +58 -20
  80. package/dist/config.js.map +1 -1
  81. package/dist/context.d.ts +8 -0
  82. package/dist/context.d.ts.map +1 -1
  83. package/dist/context.js +1 -0
  84. package/dist/context.js.map +1 -1
  85. package/dist/deploy/defaults.d.ts.map +1 -1
  86. package/dist/deploy/defaults.js +5 -1
  87. package/dist/deploy/defaults.js.map +1 -1
  88. package/dist/deploy/post.d.ts +9 -1
  89. package/dist/deploy/post.d.ts.map +1 -1
  90. package/dist/deploy/post.js +100 -2
  91. package/dist/deploy/post.js.map +1 -1
  92. package/dist/deploy/response.d.ts.map +1 -1
  93. package/dist/deploy/response.js +3 -0
  94. package/dist/deploy/response.js.map +1 -1
  95. package/dist/deploy/runners.d.ts +67 -0
  96. package/dist/deploy/runners.d.ts.map +1 -1
  97. package/dist/dev/blocked.d.ts +57 -0
  98. package/dist/dev/blocked.d.ts.map +1 -0
  99. package/dist/dev/blocked.js +127 -0
  100. package/dist/dev/blocked.js.map +1 -0
  101. package/dist/dev/defaults.d.ts +2 -1
  102. package/dist/dev/defaults.d.ts.map +1 -1
  103. package/dist/dev/defaults.js +20 -5
  104. package/dist/dev/defaults.js.map +1 -1
  105. package/dist/dev/port.d.ts +2 -1
  106. package/dist/dev/port.d.ts.map +1 -1
  107. package/dist/dev/port.js +11 -3
  108. package/dist/dev/port.js.map +1 -1
  109. package/dist/dev/preview-expiry.d.ts +35 -0
  110. package/dist/dev/preview-expiry.d.ts.map +1 -0
  111. package/dist/dev/preview-expiry.js +57 -0
  112. package/dist/dev/preview-expiry.js.map +1 -0
  113. package/dist/dev/runners.d.ts +6 -2
  114. package/dist/dev/runners.d.ts.map +1 -1
  115. package/dist/dev/runtime-container.d.ts +2 -0
  116. package/dist/dev/runtime-container.d.ts.map +1 -1
  117. package/dist/dev/runtime-container.js +18 -5
  118. package/dist/dev/runtime-container.js.map +1 -1
  119. package/dist/dev/runtime-image.d.ts +4 -3
  120. package/dist/dev/runtime-image.d.ts.map +1 -1
  121. package/dist/dev/runtime-image.js +4 -3
  122. package/dist/dev/runtime-image.js.map +1 -1
  123. package/dist/dev/runtime-registry.d.ts +6 -11
  124. package/dist/dev/runtime-registry.d.ts.map +1 -1
  125. package/dist/dev/runtime-registry.js +26 -17
  126. package/dist/dev/runtime-registry.js.map +1 -1
  127. package/dist/init/augment-scaffolder.d.ts +1 -1
  128. package/dist/init/augment-scaffolder.d.ts.map +1 -1
  129. package/dist/init/augment-scaffolder.js +5 -3
  130. package/dist/init/augment-scaffolder.js.map +1 -1
  131. package/dist/init/dependency-specs.d.ts +1 -1
  132. package/dist/init/dependency-specs.d.ts.map +1 -1
  133. package/dist/init/dependency-specs.js +1 -1
  134. package/dist/init/dependency-specs.js.map +1 -1
  135. package/dist/init/gitignore-patcher.d.ts +13 -3
  136. package/dist/init/gitignore-patcher.d.ts.map +1 -1
  137. package/dist/init/gitignore-patcher.js +8 -4
  138. package/dist/init/gitignore-patcher.js.map +1 -1
  139. package/dist/init/java-augment.js +1 -1
  140. package/dist/init/java-augment.js.map +1 -1
  141. package/dist/init/mode-detect.d.ts.map +1 -1
  142. package/dist/init/mode-detect.js +3 -2
  143. package/dist/init/mode-detect.js.map +1 -1
  144. package/dist/init/python-augment.d.ts.map +1 -1
  145. package/dist/init/python-augment.js +5 -4
  146. package/dist/init/python-augment.js.map +1 -1
  147. package/dist/init/scala-augment.js +2 -2
  148. package/dist/init/scala-augment.js.map +1 -1
  149. package/dist/license/expiry.d.ts +3 -1
  150. package/dist/license/expiry.d.ts.map +1 -1
  151. package/dist/license/expiry.js +4 -2
  152. package/dist/license/expiry.js.map +1 -1
  153. package/dist/license/license-key.d.ts.map +1 -1
  154. package/dist/license/license-key.js +2 -0
  155. package/dist/license/license-key.js.map +1 -1
  156. package/dist/license/protocol.d.ts +25 -0
  157. package/dist/license/protocol.d.ts.map +1 -1
  158. package/dist/license/protocol.js +65 -0
  159. package/dist/license/protocol.js.map +1 -1
  160. package/dist/license/renew.d.ts +18 -1
  161. package/dist/license/renew.d.ts.map +1 -1
  162. package/dist/license/renew.js +33 -4
  163. package/dist/license/renew.js.map +1 -1
  164. package/dist/license/stores.d.ts.map +1 -1
  165. package/dist/license/stores.js +2 -1
  166. package/dist/license/stores.js.map +1 -1
  167. package/dist/main.d.ts +3 -0
  168. package/dist/main.d.ts.map +1 -1
  169. package/dist/main.js +1 -0
  170. package/dist/main.js.map +1 -1
  171. package/dist/providers/models-guide.d.ts +7 -0
  172. package/dist/providers/models-guide.d.ts.map +1 -0
  173. package/dist/providers/models-guide.js +11 -0
  174. package/dist/providers/models-guide.js.map +1 -0
  175. package/dist/rate-limit-wait.d.ts +42 -0
  176. package/dist/rate-limit-wait.d.ts.map +1 -0
  177. package/dist/rate-limit-wait.js +104 -0
  178. package/dist/rate-limit-wait.js.map +1 -0
  179. package/dist/sdk-skills/kindgi-authoring-agents/SKILL.md +1 -1
  180. package/dist/sdk-skills/kindgi-authoring-flows/SKILL.md +1 -1
  181. package/dist/sdk-skills/kindgi-authoring-guardrails/SKILL.md +1 -1
  182. package/dist/sdk-skills/kindgi-authoring-mcp-servers/SKILL.md +1 -1
  183. package/dist/sdk-skills/kindgi-authoring-providers/SKILL.md +75 -5
  184. package/dist/sdk-skills/kindgi-authoring-tools/SKILL.md +4 -2
  185. package/dist/sdk-skills/kindgi-framework-feedback/SKILL.md +1 -1
  186. package/dist/sdk-skills/kindgi-getting-started/SKILL.md +37 -11
  187. package/dist/sdk-skills/kindgi-java-authoring-agents/SKILL.md +3 -3
  188. package/dist/sdk-skills/kindgi-java-authoring-flows/SKILL.md +9 -3
  189. package/dist/sdk-skills/kindgi-java-authoring-guardrails/SKILL.md +3 -3
  190. package/dist/sdk-skills/kindgi-java-authoring-tools/SKILL.md +9 -4
  191. package/dist/sdk-skills/kindgi-java-getting-started/SKILL.md +33 -8
  192. package/dist/sdk-skills/kindgi-python-authoring-agents/SKILL.md +1 -1
  193. package/dist/sdk-skills/kindgi-python-authoring-flows/SKILL.md +1 -1
  194. package/dist/sdk-skills/kindgi-python-authoring-guardrails/SKILL.md +1 -1
  195. package/dist/sdk-skills/kindgi-python-authoring-tools/SKILL.md +6 -2
  196. package/dist/sdk-skills/kindgi-python-getting-started/SKILL.md +33 -8
  197. package/dist/sdk-skills/kindgi-scala-authoring-agents/SKILL.md +3 -3
  198. package/dist/sdk-skills/kindgi-scala-authoring-flows/SKILL.md +9 -3
  199. package/dist/sdk-skills/kindgi-scala-authoring-guardrails/SKILL.md +3 -3
  200. package/dist/sdk-skills/kindgi-scala-authoring-tools/SKILL.md +9 -4
  201. package/dist/sdk-skills/kindgi-scala-getting-started/SKILL.md +33 -8
  202. package/dist/sdk-skills/kindgi-using/SKILL.md +1 -1
  203. package/dist/templates/drupal/AGENTS.md +40 -15
  204. package/dist/templates/drupal/README.md.tmpl +2 -3
  205. package/dist/templates/drupal/kindgi.config.ts.tmpl +23 -19
  206. package/dist/templates/java/AGENTS.md +32 -3
  207. package/dist/templates/java/README.md.tmpl +1 -1
  208. package/dist/templates/minimal/AGENTS.md +42 -17
  209. package/dist/templates/minimal/README.md.tmpl +11 -10
  210. package/dist/templates/minimal/kindgi.config.ts.tmpl +23 -22
  211. package/dist/templates/python/AGENTS.md +28 -8
  212. package/dist/templates/python/README.md.tmpl +1 -1
  213. package/dist/templates/python/pyproject.toml.tmpl +10 -6
  214. package/dist/templates/sample/AGENTS.md +42 -17
  215. package/dist/templates/sample/README.md.tmpl +1 -1
  216. package/dist/templates/sample/kindgi.config.ts.tmpl +23 -19
  217. package/dist/templates/scala/AGENTS.md +32 -3
  218. package/dist/templates/scala/README.md.tmpl +1 -1
  219. package/dist/templates/woocommerce/AGENTS.md +38 -13
  220. package/dist/templates/woocommerce/README.md.tmpl +28 -3
  221. package/dist/templates/woocommerce/kindgi.config.ts.tmpl +23 -19
  222. package/package.json +13 -13
@@ -15,7 +15,7 @@ description: >
15
15
  type: core
16
16
  library: "@kindgi/sdk"
17
17
  version: "0.4.3"
18
- sdk_version: "0.1.7-rc.0"
18
+ sdk_version: "0.1.8-rc.0"
19
19
  pack_languages: [node, python, java, scala]
20
20
  ---
21
21
 
@@ -14,8 +14,8 @@ description: >
14
14
  primitive.
15
15
  type: core
16
16
  library: "@kindgi/sdk"
17
- version: "0.3.11"
18
- sdk_version: "0.1.7-rc.0"
17
+ version: "0.3.12"
18
+ sdk_version: "0.1.8-rc.0"
19
19
  pack_languages: [node]
20
20
  ---
21
21
 
@@ -152,6 +152,8 @@ my-pack/
152
152
  ├── tsconfig.json
153
153
  ├── .claude/
154
154
  │ └── skills/ # auto-copied from @kindgi/sdk on init
155
+ ├── .agents/
156
+ │ └── skills/ # the same skills, where Codex and Gemini CLI look
155
157
  ├── tools/ # place `<name>/index.ts` per tool
156
158
  ├── agents/ # place `<name>/index.ts` per agent
157
159
  ├── guardrails/ # place `<name>/index.ts` per guardrail
@@ -188,6 +190,27 @@ Most of the setup is automatable, but two require your knowledge:
188
190
  by hand: `kindgi providers register --preset=anthropic`. See
189
191
  `kindgi-authoring-providers`.
190
192
 
193
+ ## Commands for the person's own terminal
194
+
195
+ Two commands are always the person's to run, in their own terminal, since
196
+ they ask for a secret:
197
+
198
+ - `kindgi secrets set`, which asks for the value without echoing it;
199
+ - `kindgi auth registry`, which logs Docker in to the runtime image's registry.
200
+
201
+ Others need what a coding agent's sandbox often blocks: `kindgi dev` and any dev
202
+ server of the app (they keep running), and `kindgi build` or anything else that
203
+ needs Docker. When your sandbox blocks a command (a process it can't start,
204
+ `spawn EPERM`; Docker's socket denied; `localhost` refused; a folder it keeps
205
+ read-only, as Codex's keeps `.agents/`, which `kindgi skills sync` writes),
206
+ don't work around it: don't turn your sandbox off, and don't start the command
207
+ in the background. Give the person the exact command, the folder to run it in
208
+ and what they'll see, then wait for them. Once they say `kindgi dev` is running,
209
+ starting it yourself exits 3 and says where theirs runs: use that one.
210
+
211
+ A tool's own `EPERM` while it runs under `kindgi dev` is something else:
212
+ Kindgi's dev sandbox (see the tools skill). Never turn that one off either.
213
+
191
214
  ## Keys and tokens: hands off
192
215
 
193
216
  Never open, read, grep, `cat`, copy or print the files that hold keys and
@@ -206,8 +229,11 @@ model provider. To see which secrets exist, run
206
229
  `kindgi secrets list --env=local --scope=tenant` (names only). To store one,
207
230
  ask the person to run `kindgi secrets set NAME --env=local --scope=tenant`
208
231
  themselves: it prompts without echoing. Never put a value on a command line.
209
- `kindgi init` adds these files to the deny rules in `.claude/settings.json`;
210
- in a monorepo, also to the repository root's, under the pack's path.
232
+ `kindgi init` adds these files to the deny rules in `.claude/settings.json`
233
+ (Claude Code); in a monorepo, also to the repository root's, under the pack's
234
+ path. It adds them to `.cursorignore`, `.geminiignore` or `.aiderignore` too
235
+ when the project has one. Nothing `kindgi init` writes binds Codex. Whichever
236
+ agent you are, keep to the rule above yourself.
211
237
 
212
238
  ## Your app and Kindgi's data
213
239
 
@@ -290,13 +316,13 @@ own tables. Docs: https://docs.kindgi.com/v0.1/guides/runs/show-runs-in-your-app
290
316
 
291
317
  ## Keeping skills up to date
292
318
 
293
- Skills in `.claude/skills/` are copied at `kindgi init` time. When the
294
- framework SDK ships a new version of a skill (better docs, corrected
295
- example, new capabilities), the pack's local copy stays stale until
296
- you resync. `kindgi dev` boot prints a warning when it detects drift;
297
- run `kindgi skills sync` to pull the latest framework skills.
298
- Local edits are preserved by default (marked `skipped-modified`);
299
- pass `--force` to overwrite them.
319
+ Skills in `.claude/skills/` and `.agents/skills/` are copied at `kindgi init`
320
+ time, the same copy in each. When the framework SDK ships a new version of a
321
+ skill (better docs, corrected example, new capabilities), the pack's local
322
+ copies stay stale until you resync. `kindgi dev` boot prints a warning when
323
+ it detects drift; run `kindgi skills sync` to pull the latest framework
324
+ skills into both folders. Local edits are preserved by default (marked
325
+ `skipped-modified`), in each folder; pass `--force` to overwrite them.
300
326
 
301
327
  ## When the framework itself is the problem
302
328
 
@@ -15,8 +15,8 @@ description: >
15
15
  kindgi-authoring-providers.
16
16
  type: core
17
17
  library: "kindgi-pack (Java)"
18
- version: "0.1.0"
19
- sdk_version: "0.1.7-rc.0"
18
+ version: "0.1.1"
19
+ sdk_version: "0.1.8-rc.0"
20
20
  pack_languages: [java]
21
21
  sources:
22
22
  - sdks/java/kindgi-pack/README.md
@@ -33,7 +33,7 @@ sources:
33
33
  > `./mvnw`.
34
34
  >
35
35
  > Java support is in preview: tested and supported, but the API may still
36
- > change in 0.1.6 without the usual deprecation period.
36
+ > change in a later release without the usual deprecation period.
37
37
 
38
38
  An **agent** is a versioned, model-driven orchestrator. It's made of:
39
39
  - instructions (a prompt template);
@@ -15,8 +15,8 @@ description: >
15
15
  kindgi-java-authoring-tools, Java agents by kindgi-java-authoring-agents.
16
16
  type: core
17
17
  library: "kindgi-pack (Java)"
18
- version: "0.1.0"
19
- sdk_version: "0.1.7-rc.0"
18
+ version: "0.1.2"
19
+ sdk_version: "0.1.8-rc.0"
20
20
  pack_languages: [java]
21
21
  sources:
22
22
  - sdks/java/kindgi-pack/README.md
@@ -32,7 +32,7 @@ sources:
32
32
  > `./mvnw`.
33
33
  >
34
34
  > Java support is in preview: tested and supported, but the API may still
35
- > change in 0.1.6 without the usual deprecation period.
35
+ > change in a later release without the usual deprecation period.
36
36
 
37
37
  A **flow** is a versioned, durable graph of steps: tools (your code) and
38
38
  agents (a model's judgment), joined by edges that can carry conditions. It
@@ -252,6 +252,12 @@ public final class TriageTicket {
252
252
  `outputSchema`). `convergence` decides the result: `all-succeed`,
253
253
  `any-succeed` (the first success wins), or `settle-all` (wait for every
254
254
  branch and report each).
255
+ Every branch gets the fanout's whole input: the output of the step
256
+ before it (the run input after `$start`). A record refuses
257
+ properties it doesn't name, so when a branch tool takes only some of
258
+ them, its input record says `@JsonIgnoreProperties(ignoreUnknown = true)`
259
+ (`com.fasterxml.jackson.annotation`). Without it, the branch fails with
260
+ `input-validation-failed`.
255
261
  - **A sub-flow** (`"kind": "subgraph"`) is part of the flow schema, but a run
256
262
  refuses it today (`flow-unbound`). Inline the steps instead.
257
263
 
@@ -14,8 +14,8 @@ description: >
14
14
  by kindgi-java-authoring-tools.
15
15
  type: core
16
16
  library: "kindgi-pack (Java)"
17
- version: "0.1.0"
18
- sdk_version: "0.1.7-rc.0"
17
+ version: "0.1.1"
18
+ sdk_version: "0.1.8-rc.0"
19
19
  pack_languages: [java]
20
20
  sources:
21
21
  - sdks/java/kindgi-pack/README.md
@@ -31,7 +31,7 @@ sources:
31
31
  > `./mvnw`.
32
32
  >
33
33
  > Java support is in preview: tested and supported, but the API may still
34
- > change in 0.1.6 without the usual deprecation period.
34
+ > change in a later release without the usual deprecation period.
35
35
 
36
36
  A **guardrail** is a rule an agent's turn must satisfy: a **check** (a
37
37
  function over the turn's trace) plus an **action** (what happens when it
@@ -14,8 +14,8 @@ description: >
14
14
  by kindgi-java-getting-started.
15
15
  type: core
16
16
  library: "kindgi-pack (Java)"
17
- version: "0.1.0"
18
- sdk_version: "0.1.7-rc.0"
17
+ version: "0.1.2"
18
+ sdk_version: "0.1.8-rc.0"
19
19
  pack_languages: [java]
20
20
  sources:
21
21
  - sdks/java/kindgi-pack/README.md
@@ -31,7 +31,7 @@ sources:
31
31
  > Windows). Maven runs as `./mvnw` (or the app's own `mvn`).
32
32
  >
33
33
  > Java support is in preview: tested and supported, but the API may still
34
- > change in 0.1.6 without the usual deprecation period.
34
+ > change in a later release without the usual deprecation period.
35
35
 
36
36
  A **tool** is a unit of work an agent (or a flow step) calls: typed input,
37
37
  typed output, your code in between. In a Java pack it is a
@@ -181,7 +181,12 @@ final class Citator {
181
181
  `onCancel(action)`.
182
182
  - `ctx.secrets()`: the secrets the tool declares (below). Printing the
183
183
  context shows their names, never their values.
184
- - `ctx.env()`, `ctx.config()`: **reserved, empty today**.
184
+ - `ctx.env()`: the env values the tool declares (`set("needsSpec",
185
+ Map.of("env", …))`), resolved for the call: its project's value, else its
186
+ org's, else the tenant's (`kindgi env set NAME <value>
187
+ --scope=project:<id> --env=<env>`), with a declared `default` filled in.
188
+ Strings, and not secret.
189
+ - `ctx.config()`: **reserved, empty today**.
185
190
 
186
191
  ## Configuration and secrets
187
192
 
@@ -16,8 +16,8 @@ description: >
16
16
  kindgi-authoring-providers.
17
17
  type: core
18
18
  library: "kindgi-pack (Java)"
19
- version: "0.1.0"
20
- sdk_version: "0.1.7-rc.0"
19
+ version: "0.1.2"
20
+ sdk_version: "0.1.8-rc.0"
21
21
  pack_languages: [java]
22
22
  sources:
23
23
  - sdks/java/kindgi-pack/README.md
@@ -34,7 +34,7 @@ sources:
34
34
  > `./kindgiw <command>`, and `./kindgiw upgrade` moves the pin.
35
35
  >
36
36
  > **Preview:** Java and Scala support is tested and supported, but its API
37
- > may still change in 0.1.6 without the usual deprecation period.
37
+ > may still change in a later release without the usual deprecation period.
38
38
 
39
39
  ## What a pack is
40
40
 
@@ -127,7 +127,8 @@ my-pack/
127
127
  │ ├── agents/EchoAgent.java # Agent.define(...)
128
128
  │ └── flows/EchoFlow.java # Flow.define(...)
129
129
  ├── src/test/java/mypack/ToolsTest.java # the tools, called directly
130
- └── .claude/skills/ # these skills (`./kindgiw skills sync` refreshes them)
130
+ ├── .claude/skills/ # these skills (`./kindgiw skills sync` refreshes them)
131
+ └── .agents/skills/ # the same skills, where Codex and Gemini CLI look
131
132
  ```
132
133
 
133
134
  The package comes from the pack's id (`my-pack` becomes `mypack`).
@@ -256,6 +257,27 @@ names it; one the pack doesn't declare is dropped before the code loads
256
257
  primitive (`<pack-id>.<name>`): pick it once.
257
258
  - **Model credentials.** Ask for the key; never invent or hard-code one.
258
259
 
260
+ ## Commands for the person's own terminal
261
+
262
+ Two commands are always the person's to run, in their own terminal, since
263
+ they ask for a secret:
264
+
265
+ - `./kindgiw secrets set`, which asks for the value without echoing it;
266
+ - `./kindgiw auth registry`, which logs Docker in to the runtime image's registry.
267
+
268
+ Others need what a coding agent's sandbox often blocks: `./kindgiw dev` and any
269
+ dev server of the app (they keep running), and `./kindgiw build` or anything
270
+ else that needs Docker. When your sandbox blocks a command (a process it can't
271
+ start, `spawn EPERM`; Docker's socket denied; `localhost` refused; a folder it
272
+ keeps read-only, as Codex's keeps `.agents/`, which `./kindgiw skills sync`
273
+ writes), don't work around it: don't turn your sandbox off, and don't start the
274
+ command in the background. Give the person the exact command, the folder to run
275
+ it in and what they'll see, then wait for them. Once they say `./kindgiw dev` is
276
+ running, starting it yourself exits 3 and says where theirs runs: use that one.
277
+
278
+ A tool's own `EPERM` while it runs under `./kindgiw dev` is something else:
279
+ Kindgi's dev sandbox (see the tools skill). Never turn that one off either.
280
+
259
281
  ## Keys and tokens: hands off
260
282
 
261
283
  Never open, read, grep, `cat`, copy or print the files that hold keys and
@@ -274,8 +296,11 @@ model provider. To see which secrets exist, run
274
296
  `./kindgiw secrets list --env=local --scope=tenant` (names only). To store one,
275
297
  ask the person to run `./kindgiw secrets set NAME --env=local --scope=tenant`
276
298
  themselves: it prompts without echoing. Never put a value on a command line.
277
- `kindgi init` adds these files to the deny rules in `.claude/settings.json`;
278
- in a monorepo, also to the repository root's, under the pack's path.
299
+ `kindgi init` adds these files to the deny rules in `.claude/settings.json`
300
+ (Claude Code); in a monorepo, also to the repository root's, under the pack's
301
+ path. It adds them to `.cursorignore`, `.geminiignore` or `.aiderignore` too
302
+ when the project has one. Nothing `kindgi init` writes binds Codex. Whichever
303
+ agent you are, keep to the rule above yourself.
279
304
 
280
305
  ## Next
281
306
 
@@ -289,8 +314,8 @@ in a monorepo, also to the repository root's, under the pack's path.
289
314
 
290
315
  ## Keeping skills up to date
291
316
 
292
- `./kindgiw skills sync` refreshes `.claude/skills/` from the CLI's copy
293
- (local edits are kept unless `--force`). `kindgi dev` says when they are out
317
+ `./kindgiw skills sync` refreshes `.claude/skills/` and `.agents/skills/`
318
+ from the CLI's copy (local edits are kept unless `--force`). `kindgi dev` says when they are out
294
319
  of date.
295
320
 
296
321
  ## When the framework itself is the problem
@@ -16,7 +16,7 @@ description: >
16
16
  type: core
17
17
  library: "kindgi (Python)"
18
18
  version: "0.1.5"
19
- sdk_version: "0.1.7-rc.0"
19
+ sdk_version: "0.1.8-rc.0"
20
20
  pack_languages: [python]
21
21
  sources:
22
22
  - sdks/python/src/kindgi/pack/define.py
@@ -17,7 +17,7 @@ description: >
17
17
  type: core
18
18
  library: "kindgi (Python)"
19
19
  version: "0.1.2"
20
- sdk_version: "0.1.7-rc.0"
20
+ sdk_version: "0.1.8-rc.0"
21
21
  pack_languages: [python]
22
22
  sources:
23
23
  - sdks/python/src/kindgi/pack/define.py
@@ -15,7 +15,7 @@ description: >
15
15
  type: core
16
16
  library: "kindgi (Python)"
17
17
  version: "0.1.4"
18
- sdk_version: "0.1.7-rc.0"
18
+ sdk_version: "0.1.8-rc.0"
19
19
  pack_languages: [python]
20
20
  sources:
21
21
  - sdks/python/src/kindgi/pack/define.py
@@ -14,8 +14,8 @@ description: >
14
14
  kindgi-python-getting-started.
15
15
  type: core
16
16
  library: "kindgi (Python)"
17
- version: "0.1.3"
18
- sdk_version: "0.1.7-rc.0"
17
+ version: "0.1.4"
18
+ sdk_version: "0.1.8-rc.0"
19
19
  pack_languages: [python]
20
20
  sources:
21
21
  - sdks/python/src/kindgi/pack/define.py
@@ -279,6 +279,10 @@ lookup_case = http_tool(
279
279
  - Also `timeout_ms=` (default 30000), `parse_json=` (default `True`),
280
280
  `success_status=(200, 299)`, `effects=`, `version=`, and
281
281
  `mutating=False` for a request that changes nothing (a GET, usually).
282
+ - `timeout_ms` covers the whole call, reading the response included, and
283
+ so does a run's cancel. A response body over 10 MiB, counted after it's
284
+ decompressed, fails the call. So point the tool at an endpoint that
285
+ pages or filters, not one that returns everything.
282
286
 
283
287
  The spec is checked where it's declared, against the same schema as
284
288
  TypeScript's. Calling the tool in Python raises: it runs in Kindgi, so
@@ -14,8 +14,8 @@ description: >
14
14
  kindgi-python-authoring-agents; models by kindgi-authoring-providers.
15
15
  type: core
16
16
  library: "kindgi (Python)"
17
- version: "0.1.7"
18
- sdk_version: "0.1.7-rc.0"
17
+ version: "0.1.8"
18
+ sdk_version: "0.1.8-rc.0"
19
19
  pack_languages: [python]
20
20
  sources:
21
21
  - sdks/python/README.md
@@ -115,7 +115,8 @@ my-pack/
115
115
  ├── flows/echo_flow.py # Flow(...)
116
116
  ├── tests/test_tools.py # the tools and the check, called directly
117
117
  ├── README.md
118
- └── .claude/skills/ # these skills (`kindgi skills sync` refreshes them)
118
+ ├── .claude/skills/ # these skills (`kindgi skills sync` refreshes them)
119
+ └── .agents/skills/ # the same skills, where Codex and Gemini CLI look
119
120
  ```
120
121
 
121
122
  The `[tool.kindgi]` keys are the ones `kindgi.config.ts` takes —
@@ -302,6 +303,27 @@ build before anything uploads, with the range to use.
302
303
  every primitive (`<pack-id>.<name>`); pick it once.
303
304
  - **Model credentials.** Ask for the key; never invent or hard-code one.
304
305
 
306
+ ## Commands for the person's own terminal
307
+
308
+ Two commands are always the person's to run, in their own terminal, since
309
+ they ask for a secret:
310
+
311
+ - `kindgi secrets set`, which asks for the value without echoing it;
312
+ - `kindgi auth registry`, which logs Docker in to the runtime image's registry.
313
+
314
+ Others need what a coding agent's sandbox often blocks: `kindgi dev` and any dev
315
+ server of the app (they keep running), and `kindgi build` or anything else that
316
+ needs Docker. When your sandbox blocks a command (a process it can't start,
317
+ `spawn EPERM`; Docker's socket denied; `localhost` refused; a folder it keeps
318
+ read-only, as Codex's keeps `.agents/`, which `kindgi skills sync` writes),
319
+ don't work around it: don't turn your sandbox off, and don't start the command
320
+ in the background. Give the person the exact command, the folder to run it in
321
+ and what they'll see, then wait for them. Once they say `kindgi dev` is running,
322
+ starting it yourself exits 3 and says where theirs runs: use that one.
323
+
324
+ A tool's own `EPERM` while it runs under `kindgi dev` is something else:
325
+ Kindgi's dev sandbox (see the tools skill). Never turn that one off either.
326
+
305
327
  ## Keys and tokens: hands off
306
328
 
307
329
  Never open, read, grep, `cat`, copy or print the files that hold keys and
@@ -320,8 +342,11 @@ model provider. To see which secrets exist, run
320
342
  `kindgi secrets list --env=local --scope=tenant` (names only). To store one,
321
343
  ask the person to run `kindgi secrets set NAME --env=local --scope=tenant`
322
344
  themselves: it prompts without echoing. Never put a value on a command line.
323
- `kindgi init` adds these files to the deny rules in `.claude/settings.json`;
324
- in a monorepo, also to the repository root's, under the pack's path.
345
+ `kindgi init` adds these files to the deny rules in `.claude/settings.json`
346
+ (Claude Code); in a monorepo, also to the repository root's, under the pack's
347
+ path. It adds them to `.cursorignore`, `.geminiignore` or `.aiderignore` too
348
+ when the project has one. Nothing `kindgi init` writes binds Codex. Whichever
349
+ agent you are, keep to the rule above yourself.
325
350
 
326
351
  ## Next
327
352
 
@@ -335,9 +360,9 @@ in a monorepo, also to the repository root's, under the pack's path.
335
360
 
336
361
  ## Keeping skills up to date
337
362
 
338
- `kindgi skills sync` refreshes `.claude/skills/` from the CLI's copy
339
- (local edits are kept unless `--force`); `kindgi dev` says when they are
340
- out of date.
363
+ `kindgi skills sync` refreshes `.claude/skills/` and `.agents/skills/` from
364
+ the CLI's copy (local edits are kept unless `--force`); `kindgi dev` says
365
+ when they are out of date.
341
366
 
342
367
  ## When the framework itself is the problem
343
368
 
@@ -16,8 +16,8 @@ description: >
16
16
  kindgi-authoring-providers.
17
17
  type: core
18
18
  library: "kindgi-pack-scala"
19
- version: "0.1.0"
20
- sdk_version: "0.1.7-rc.0"
19
+ version: "0.1.1"
20
+ sdk_version: "0.1.8-rc.0"
21
21
  pack_languages: [scala]
22
22
  sources:
23
23
  - sdks/scala/README.md
@@ -33,7 +33,7 @@ sources:
33
33
  > `kindgi <command>` below runs as `./kindgiw <command>`.
34
34
  >
35
35
  > Scala support is in preview: tested and supported, but the API may still
36
- > change in 0.1.6 without the usual deprecation period.
36
+ > change in a later release without the usual deprecation period.
37
37
 
38
38
  An **agent** is a versioned, model-driven orchestrator. It's made of:
39
39
  - instructions (a prompt template);
@@ -16,8 +16,8 @@ description: >
16
16
  kindgi-scala-authoring-agents.
17
17
  type: core
18
18
  library: "kindgi-pack-scala"
19
- version: "0.1.0"
20
- sdk_version: "0.1.7-rc.0"
19
+ version: "0.1.2"
20
+ sdk_version: "0.1.8-rc.0"
21
21
  pack_languages: [scala]
22
22
  sources:
23
23
  - sdks/scala/README.md
@@ -32,7 +32,7 @@ sources:
32
32
  > `kindgi <command>` below runs as `./kindgiw <command>`.
33
33
  >
34
34
  > Scala support is in preview: tested and supported, but the API may still
35
- > change in 0.1.6 without the usual deprecation period.
35
+ > change in a later release without the usual deprecation period.
36
36
 
37
37
  A **flow** is a versioned, durable graph of steps: tools (your code) and
38
38
  agents (a model's judgment), joined by edges that can carry conditions. It
@@ -228,6 +228,12 @@ object TriageTicket {
228
228
  `outputSchema`). `convergence` decides the result: `all-succeed`,
229
229
  `any-succeed` (the first success wins), or `settle-all` (wait for every
230
230
  branch and report each).
231
+ Every branch gets the fanout's whole input: the output of the step
232
+ before it (the run input after `$start`). A case class refuses
233
+ properties it doesn't name, so when a branch tool takes only some of
234
+ them, its input case class says `@JsonIgnoreProperties(ignoreUnknown = true)`
235
+ (`com.fasterxml.jackson.annotation`). Without it, the branch fails with
236
+ `input-validation-failed`.
231
237
  - **A sub-flow** (`"kind" -> "subgraph"`) is part of the flow schema, but a
232
238
  run refuses it today (`flow-unbound`). Inline the steps instead.
233
239
 
@@ -15,8 +15,8 @@ description: >
15
15
  tools by kindgi-scala-authoring-tools.
16
16
  type: core
17
17
  library: "kindgi-pack-scala"
18
- version: "0.1.0"
19
- sdk_version: "0.1.7-rc.0"
18
+ version: "0.1.1"
19
+ sdk_version: "0.1.8-rc.0"
20
20
  pack_languages: [scala]
21
21
  sources:
22
22
  - sdks/scala/README.md
@@ -31,7 +31,7 @@ sources:
31
31
  > `kindgi <command>` below runs as `./kindgiw <command>`.
32
32
  >
33
33
  > Scala support is in preview: tested and supported, but the API may still
34
- > change in 0.1.6 without the usual deprecation period.
34
+ > change in a later release without the usual deprecation period.
35
35
 
36
36
  A **guardrail** is a rule an agent's turn must satisfy: a **check** (a
37
37
  function over the turn's trace) plus an **action** (what happens when it
@@ -15,8 +15,8 @@ description: >
15
15
  kindgi-scala-getting-started.
16
16
  type: core
17
17
  library: "kindgi-pack-scala"
18
- version: "0.1.0"
19
- sdk_version: "0.1.7-rc.0"
18
+ version: "0.1.2"
19
+ sdk_version: "0.1.8-rc.0"
20
20
  pack_languages: [scala]
21
21
  sources:
22
22
  - sdks/scala/README.md
@@ -32,7 +32,7 @@ sources:
32
32
  > your `PATH`.
33
33
  >
34
34
  > Scala support is in preview: tested and supported, but the API may still
35
- > change in 0.1.6 without the usual deprecation period.
35
+ > change in a later release without the usual deprecation period.
36
36
 
37
37
  A **tool** is a unit of work an agent (or a flow step) calls: typed input,
38
38
  typed output, your code in between. In a Scala pack it is a `val` of type
@@ -167,7 +167,12 @@ object Citator {
167
167
  `ctx.cancellation.onCancel(() => …)`.
168
168
  - `ctx.secrets`: the secrets the tool declares (below), as a Java map.
169
169
  Printing the context shows their names, never their values.
170
- - `ctx.env`, `ctx.config`: **reserved, empty today**.
170
+ - `ctx.env`: the env values the tool declares (`set("needsSpec",
171
+ Map("env" -> …))`), resolved for the call, as a Java map: its project's
172
+ value, else its org's, else the tenant's (`kindgi env set NAME <value>
173
+ --scope=project:<id> --env=<env>`), with a declared `default` filled in.
174
+ Strings, and not secret.
175
+ - `ctx.config`: **reserved, empty today**.
171
176
 
172
177
  ## Configuration and secrets
173
178
 
@@ -16,8 +16,8 @@ description: >
16
16
  kindgi-authoring-providers.
17
17
  type: core
18
18
  library: "kindgi-pack-scala"
19
- version: "0.1.0"
20
- sdk_version: "0.1.7-rc.0"
19
+ version: "0.1.2"
20
+ sdk_version: "0.1.8-rc.0"
21
21
  pack_languages: [scala]
22
22
  sources:
23
23
  - sdks/scala/README.md
@@ -33,7 +33,7 @@ sources:
33
33
  > moves the pin, and kindgi-pack-scala's version in `build.sbt` with it.
34
34
  >
35
35
  > **Preview:** Java and Scala support is tested and supported, but its API
36
- > may still change in 0.1.6 without the usual deprecation period.
36
+ > may still change in a later release without the usual deprecation period.
37
37
 
38
38
  ## What a pack is
39
39
 
@@ -139,7 +139,8 @@ my-pack/
139
139
  │ ├── agents/EchoAgent.scala # Agent(...)
140
140
  │ └── flows/EchoFlow.scala # Flow(...)
141
141
  ├── src/test/scala/mypack/ToolsSuite.scala # the tools, called directly (munit)
142
- └── .claude/skills/ # these skills (`./kindgiw skills sync` refreshes them)
142
+ ├── .claude/skills/ # these skills (`./kindgiw skills sync` refreshes them)
143
+ └── .agents/skills/ # the same skills, where Codex and Gemini CLI look
143
144
  ```
144
145
 
145
146
  The package comes from the pack's id, with Java's and Scala's keywords
@@ -287,6 +288,27 @@ names it; one the pack doesn't declare is dropped before the code loads
287
288
  primitive (`<pack-id>.<name>`): pick it once.
288
289
  - **Model credentials.** Ask for the key; never invent or hard-code one.
289
290
 
291
+ ## Commands for the person's own terminal
292
+
293
+ Two commands are always the person's to run, in their own terminal, since
294
+ they ask for a secret:
295
+
296
+ - `./kindgiw secrets set`, which asks for the value without echoing it;
297
+ - `./kindgiw auth registry`, which logs Docker in to the runtime image's registry.
298
+
299
+ Others need what a coding agent's sandbox often blocks: `./kindgiw dev` and any
300
+ dev server of the app (they keep running), and `./kindgiw build` or anything
301
+ else that needs Docker. When your sandbox blocks a command (a process it can't
302
+ start, `spawn EPERM`; Docker's socket denied; `localhost` refused; a folder it
303
+ keeps read-only, as Codex's keeps `.agents/`, which `./kindgiw skills sync`
304
+ writes), don't work around it: don't turn your sandbox off, and don't start the
305
+ command in the background. Give the person the exact command, the folder to run
306
+ it in and what they'll see, then wait for them. Once they say `./kindgiw dev` is
307
+ running, starting it yourself exits 3 and says where theirs runs: use that one.
308
+
309
+ A tool's own `EPERM` while it runs under `./kindgiw dev` is something else:
310
+ Kindgi's dev sandbox (see the tools skill). Never turn that one off either.
311
+
290
312
  ## Keys and tokens: hands off
291
313
 
292
314
  Never open, read, grep, `cat`, copy or print the files that hold keys and
@@ -305,8 +327,11 @@ model provider. To see which secrets exist, run
305
327
  `./kindgiw secrets list --env=local --scope=tenant` (names only). To store one,
306
328
  ask the person to run `./kindgiw secrets set NAME --env=local --scope=tenant`
307
329
  themselves: it prompts without echoing. Never put a value on a command line.
308
- `kindgi init` adds these files to the deny rules in `.claude/settings.json`;
309
- in a monorepo, also to the repository root's, under the pack's path.
330
+ `kindgi init` adds these files to the deny rules in `.claude/settings.json`
331
+ (Claude Code); in a monorepo, also to the repository root's, under the pack's
332
+ path. It adds them to `.cursorignore`, `.geminiignore` or `.aiderignore` too
333
+ when the project has one. Nothing `kindgi init` writes binds Codex. Whichever
334
+ agent you are, keep to the rule above yourself.
310
335
 
311
336
  ## Next
312
337
 
@@ -320,8 +345,8 @@ in a monorepo, also to the repository root's, under the pack's path.
320
345
 
321
346
  ## Keeping skills up to date
322
347
 
323
- `./kindgiw skills sync` refreshes `.claude/skills/` from the CLI's copy
324
- (local edits are kept unless `--force`). `kindgi dev` says when they are out
348
+ `./kindgiw skills sync` refreshes `.claude/skills/` and `.agents/skills/`
349
+ from the CLI's copy (local edits are kept unless `--force`). `kindgi dev` says when they are out
325
350
  of date.
326
351
 
327
352
  ## When the framework itself is the problem
@@ -15,7 +15,7 @@ description: >
15
15
  type: core
16
16
  library: "@kindgi/sdk"
17
17
  version: "0.1.0"
18
- sdk_version: "0.1.7-rc.0"
18
+ sdk_version: "0.1.8-rc.0"
19
19
  pack_languages: [node, python, java, scala]
20
20
  ---
21
21