@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.
- package/README.md +13 -13
- package/dist/api-address.d.ts +57 -0
- package/dist/api-address.d.ts.map +1 -0
- package/dist/api-address.js +144 -0
- package/dist/api-address.js.map +1 -0
- package/dist/build/defaults.d.ts +9 -0
- package/dist/build/defaults.d.ts.map +1 -1
- package/dist/build/defaults.js +132 -30
- package/dist/build/defaults.js.map +1 -1
- package/dist/build/hosted.d.ts +32 -0
- package/dist/build/hosted.d.ts.map +1 -0
- package/dist/build/hosted.js +62 -0
- package/dist/build/hosted.js.map +1 -0
- package/dist/build/runners.d.ts +10 -0
- package/dist/build/runners.d.ts.map +1 -1
- package/dist/commands/adapters.d.ts.map +1 -1
- package/dist/commands/adapters.js +5 -9
- package/dist/commands/adapters.js.map +1 -1
- package/dist/commands/agents.d.ts.map +1 -1
- package/dist/commands/agents.js +2 -1
- package/dist/commands/agents.js.map +1 -1
- package/dist/commands/artifacts.js +1 -1
- package/dist/commands/artifacts.js.map +1 -1
- package/dist/commands/auth.d.ts.map +1 -1
- package/dist/commands/auth.js +6 -5
- package/dist/commands/auth.js.map +1 -1
- package/dist/commands/blocks.d.ts.map +1 -1
- package/dist/commands/blocks.js +4 -3
- package/dist/commands/blocks.js.map +1 -1
- package/dist/commands/build.d.ts.map +1 -1
- package/dist/commands/build.js +191 -47
- package/dist/commands/build.js.map +1 -1
- package/dist/commands/conversations.js +1 -1
- package/dist/commands/conversations.js.map +1 -1
- package/dist/commands/deploy.d.ts.map +1 -1
- package/dist/commands/deploy.js +296 -36
- package/dist/commands/deploy.js.map +1 -1
- package/dist/commands/dev.d.ts +0 -2
- package/dist/commands/dev.d.ts.map +1 -1
- package/dist/commands/dev.js +74 -54
- package/dist/commands/dev.js.map +1 -1
- package/dist/commands/doctor.d.ts +1 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +66 -3
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/flows.d.ts.map +1 -1
- package/dist/commands/flows.js +2 -1
- package/dist/commands/flows.js.map +1 -1
- package/dist/commands/init.d.ts +1 -1
- package/dist/commands/init.js +13 -12
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/license.d.ts.map +1 -1
- package/dist/commands/license.js +130 -5
- package/dist/commands/license.js.map +1 -1
- package/dist/commands/projects.d.ts.map +1 -1
- package/dist/commands/projects.js +67 -8
- package/dist/commands/projects.js.map +1 -1
- package/dist/commands/runs.d.ts.map +1 -1
- package/dist/commands/runs.js +2 -2
- package/dist/commands/runs.js.map +1 -1
- package/dist/commands/schedules.d.ts.map +1 -1
- package/dist/commands/schedules.js +30 -2
- package/dist/commands/schedules.js.map +1 -1
- package/dist/commands/secrets.js +1 -1
- package/dist/commands/secrets.js.map +1 -1
- package/dist/commands/skills.d.ts +42 -6
- package/dist/commands/skills.d.ts.map +1 -1
- package/dist/commands/skills.js +258 -158
- package/dist/commands/skills.js.map +1 -1
- package/dist/commands/sso.d.ts.map +1 -1
- package/dist/commands/sso.js +5 -2
- package/dist/commands/sso.js.map +1 -1
- package/dist/commands/webhooks.d.ts +0 -6
- package/dist/commands/webhooks.d.ts.map +1 -1
- package/dist/commands/webhooks.js +12 -85
- package/dist/commands/webhooks.js.map +1 -1
- package/dist/config.d.ts +34 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +58 -20
- package/dist/config.js.map +1 -1
- package/dist/context.d.ts +8 -0
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +1 -0
- package/dist/context.js.map +1 -1
- package/dist/deploy/defaults.d.ts.map +1 -1
- package/dist/deploy/defaults.js +5 -1
- package/dist/deploy/defaults.js.map +1 -1
- package/dist/deploy/post.d.ts +9 -1
- package/dist/deploy/post.d.ts.map +1 -1
- package/dist/deploy/post.js +100 -2
- package/dist/deploy/post.js.map +1 -1
- package/dist/deploy/response.d.ts.map +1 -1
- package/dist/deploy/response.js +3 -0
- package/dist/deploy/response.js.map +1 -1
- package/dist/deploy/runners.d.ts +67 -0
- package/dist/deploy/runners.d.ts.map +1 -1
- package/dist/dev/blocked.d.ts +57 -0
- package/dist/dev/blocked.d.ts.map +1 -0
- package/dist/dev/blocked.js +127 -0
- package/dist/dev/blocked.js.map +1 -0
- package/dist/dev/defaults.d.ts +2 -1
- package/dist/dev/defaults.d.ts.map +1 -1
- package/dist/dev/defaults.js +20 -5
- package/dist/dev/defaults.js.map +1 -1
- package/dist/dev/port.d.ts +2 -1
- package/dist/dev/port.d.ts.map +1 -1
- package/dist/dev/port.js +11 -3
- package/dist/dev/port.js.map +1 -1
- package/dist/dev/preview-expiry.d.ts +35 -0
- package/dist/dev/preview-expiry.d.ts.map +1 -0
- package/dist/dev/preview-expiry.js +57 -0
- package/dist/dev/preview-expiry.js.map +1 -0
- package/dist/dev/runners.d.ts +6 -2
- package/dist/dev/runners.d.ts.map +1 -1
- package/dist/dev/runtime-container.d.ts +2 -0
- package/dist/dev/runtime-container.d.ts.map +1 -1
- package/dist/dev/runtime-container.js +18 -5
- package/dist/dev/runtime-container.js.map +1 -1
- package/dist/dev/runtime-image.d.ts +4 -3
- package/dist/dev/runtime-image.d.ts.map +1 -1
- package/dist/dev/runtime-image.js +4 -3
- package/dist/dev/runtime-image.js.map +1 -1
- package/dist/dev/runtime-registry.d.ts +6 -11
- package/dist/dev/runtime-registry.d.ts.map +1 -1
- package/dist/dev/runtime-registry.js +26 -17
- package/dist/dev/runtime-registry.js.map +1 -1
- package/dist/init/augment-scaffolder.d.ts +1 -1
- package/dist/init/augment-scaffolder.d.ts.map +1 -1
- package/dist/init/augment-scaffolder.js +5 -3
- package/dist/init/augment-scaffolder.js.map +1 -1
- package/dist/init/dependency-specs.d.ts +1 -1
- package/dist/init/dependency-specs.d.ts.map +1 -1
- package/dist/init/dependency-specs.js +1 -1
- package/dist/init/dependency-specs.js.map +1 -1
- package/dist/init/gitignore-patcher.d.ts +13 -3
- package/dist/init/gitignore-patcher.d.ts.map +1 -1
- package/dist/init/gitignore-patcher.js +8 -4
- package/dist/init/gitignore-patcher.js.map +1 -1
- package/dist/init/java-augment.js +1 -1
- package/dist/init/java-augment.js.map +1 -1
- package/dist/init/mode-detect.d.ts.map +1 -1
- package/dist/init/mode-detect.js +3 -2
- package/dist/init/mode-detect.js.map +1 -1
- package/dist/init/python-augment.d.ts.map +1 -1
- package/dist/init/python-augment.js +5 -4
- package/dist/init/python-augment.js.map +1 -1
- package/dist/init/scala-augment.js +2 -2
- package/dist/init/scala-augment.js.map +1 -1
- package/dist/license/expiry.d.ts +3 -1
- package/dist/license/expiry.d.ts.map +1 -1
- package/dist/license/expiry.js +4 -2
- package/dist/license/expiry.js.map +1 -1
- package/dist/license/license-key.d.ts.map +1 -1
- package/dist/license/license-key.js +2 -0
- package/dist/license/license-key.js.map +1 -1
- package/dist/license/protocol.d.ts +25 -0
- package/dist/license/protocol.d.ts.map +1 -1
- package/dist/license/protocol.js +65 -0
- package/dist/license/protocol.js.map +1 -1
- package/dist/license/renew.d.ts +18 -1
- package/dist/license/renew.d.ts.map +1 -1
- package/dist/license/renew.js +33 -4
- package/dist/license/renew.js.map +1 -1
- package/dist/license/stores.d.ts.map +1 -1
- package/dist/license/stores.js +2 -1
- package/dist/license/stores.js.map +1 -1
- package/dist/main.d.ts +3 -0
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +1 -0
- package/dist/main.js.map +1 -1
- package/dist/providers/models-guide.d.ts +7 -0
- package/dist/providers/models-guide.d.ts.map +1 -0
- package/dist/providers/models-guide.js +11 -0
- package/dist/providers/models-guide.js.map +1 -0
- package/dist/rate-limit-wait.d.ts +42 -0
- package/dist/rate-limit-wait.d.ts.map +1 -0
- package/dist/rate-limit-wait.js +104 -0
- package/dist/rate-limit-wait.js.map +1 -0
- package/dist/sdk-skills/kindgi-authoring-agents/SKILL.md +1 -1
- package/dist/sdk-skills/kindgi-authoring-flows/SKILL.md +1 -1
- package/dist/sdk-skills/kindgi-authoring-guardrails/SKILL.md +1 -1
- package/dist/sdk-skills/kindgi-authoring-mcp-servers/SKILL.md +1 -1
- package/dist/sdk-skills/kindgi-authoring-providers/SKILL.md +75 -5
- package/dist/sdk-skills/kindgi-authoring-tools/SKILL.md +4 -2
- package/dist/sdk-skills/kindgi-framework-feedback/SKILL.md +1 -1
- package/dist/sdk-skills/kindgi-getting-started/SKILL.md +37 -11
- package/dist/sdk-skills/kindgi-java-authoring-agents/SKILL.md +3 -3
- package/dist/sdk-skills/kindgi-java-authoring-flows/SKILL.md +9 -3
- package/dist/sdk-skills/kindgi-java-authoring-guardrails/SKILL.md +3 -3
- package/dist/sdk-skills/kindgi-java-authoring-tools/SKILL.md +9 -4
- package/dist/sdk-skills/kindgi-java-getting-started/SKILL.md +33 -8
- package/dist/sdk-skills/kindgi-python-authoring-agents/SKILL.md +1 -1
- package/dist/sdk-skills/kindgi-python-authoring-flows/SKILL.md +1 -1
- package/dist/sdk-skills/kindgi-python-authoring-guardrails/SKILL.md +1 -1
- package/dist/sdk-skills/kindgi-python-authoring-tools/SKILL.md +6 -2
- package/dist/sdk-skills/kindgi-python-getting-started/SKILL.md +33 -8
- package/dist/sdk-skills/kindgi-scala-authoring-agents/SKILL.md +3 -3
- package/dist/sdk-skills/kindgi-scala-authoring-flows/SKILL.md +9 -3
- package/dist/sdk-skills/kindgi-scala-authoring-guardrails/SKILL.md +3 -3
- package/dist/sdk-skills/kindgi-scala-authoring-tools/SKILL.md +9 -4
- package/dist/sdk-skills/kindgi-scala-getting-started/SKILL.md +33 -8
- package/dist/sdk-skills/kindgi-using/SKILL.md +1 -1
- package/dist/templates/drupal/AGENTS.md +40 -15
- package/dist/templates/drupal/README.md.tmpl +2 -3
- package/dist/templates/drupal/kindgi.config.ts.tmpl +23 -19
- package/dist/templates/java/AGENTS.md +32 -3
- package/dist/templates/java/README.md.tmpl +1 -1
- package/dist/templates/minimal/AGENTS.md +42 -17
- package/dist/templates/minimal/README.md.tmpl +11 -10
- package/dist/templates/minimal/kindgi.config.ts.tmpl +23 -22
- package/dist/templates/python/AGENTS.md +28 -8
- package/dist/templates/python/README.md.tmpl +1 -1
- package/dist/templates/python/pyproject.toml.tmpl +10 -6
- package/dist/templates/sample/AGENTS.md +42 -17
- package/dist/templates/sample/README.md.tmpl +1 -1
- package/dist/templates/sample/kindgi.config.ts.tmpl +23 -19
- package/dist/templates/scala/AGENTS.md +32 -3
- package/dist/templates/scala/README.md.tmpl +1 -1
- package/dist/templates/woocommerce/AGENTS.md +38 -13
- package/dist/templates/woocommerce/README.md.tmpl +28 -3
- package/dist/templates/woocommerce/kindgi.config.ts.tmpl +23 -19
- package/package.json +13 -13
|
@@ -14,8 +14,8 @@ description: >
|
|
|
14
14
|
primitive.
|
|
15
15
|
type: core
|
|
16
16
|
library: "@kindgi/sdk"
|
|
17
|
-
version: "0.3.
|
|
18
|
-
sdk_version: "0.1.
|
|
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
|
|
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`
|
|
294
|
-
framework SDK ships a new version of a
|
|
295
|
-
example, new capabilities), the pack's local
|
|
296
|
-
you resync. `kindgi dev` boot prints a warning when
|
|
297
|
-
run `kindgi skills sync` to pull the latest framework
|
|
298
|
-
Local edits are preserved by default (marked
|
|
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.
|
|
19
|
-
sdk_version: "0.1.
|
|
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
|
|
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.
|
|
19
|
-
sdk_version: "0.1.
|
|
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
|
|
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.
|
|
18
|
-
sdk_version: "0.1.
|
|
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
|
|
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.
|
|
18
|
-
sdk_version: "0.1.
|
|
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
|
|
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()
|
|
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.
|
|
20
|
-
sdk_version: "0.1.
|
|
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
|
|
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
|
-
|
|
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
|
|
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/`
|
|
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
|
|
@@ -14,8 +14,8 @@ description: >
|
|
|
14
14
|
kindgi-python-getting-started.
|
|
15
15
|
type: core
|
|
16
16
|
library: "kindgi (Python)"
|
|
17
|
-
version: "0.1.
|
|
18
|
-
sdk_version: "0.1.
|
|
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.
|
|
18
|
-
sdk_version: "0.1.
|
|
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
|
-
|
|
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
|
|
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/`
|
|
339
|
-
(local edits are kept unless `--force`); `kindgi dev` says
|
|
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.
|
|
20
|
-
sdk_version: "0.1.
|
|
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
|
|
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.
|
|
20
|
-
sdk_version: "0.1.
|
|
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
|
|
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.
|
|
19
|
-
sdk_version: "0.1.
|
|
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
|
|
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.
|
|
19
|
-
sdk_version: "0.1.
|
|
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
|
|
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
|
|
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.
|
|
20
|
-
sdk_version: "0.1.
|
|
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
|
|
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
|
-
|
|
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
|
|
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/`
|
|
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
|