@kindgi/cli 0.1.7 → 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 +1 -1
- 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.js +1 -1
- 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 +64 -2
- 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 +16 -4
- package/dist/dev/runtime-container.js.map +1 -1
- package/dist/dev/runtime-image.d.ts +1 -1
- package/dist/dev/runtime-image.d.ts.map +1 -1
- package/dist/dev/runtime-image.js +1 -1
- package/dist/dev/runtime-image.js.map +1 -1
- package/dist/dev/runtime-registry.d.ts +6 -2
- package/dist/dev/runtime-registry.d.ts.map +1 -1
- package/dist/dev/runtime-registry.js +14 -15
- 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
|
@@ -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
|
|
@@ -10,12 +10,12 @@ Agents answer through a model provider. `kindgi dev` gives a new pack
|
|
|
10
10
|
`dev-echo`, a fallback that isn't a model: it calls the first tool and
|
|
11
11
|
replies "Tool responded: …" after a warning line, while no other provider
|
|
12
12
|
fits. For a real model, put one LLM provider's key in `.env`
|
|
13
|
-
(`ANTHROPIC_API_KEY`, `OPENAI_API_KEY`, `GEMINI_API_KEY`, `GROQ_API_KEY`
|
|
14
|
-
`OPENROUTER_API_KEY`) and declare its preset
|
|
15
|
-
`'openai'`, `'gemini-api'`, `'groq'` or
|
|
16
|
-
`kindgi.config.ts`'s `providers`: `kindgi dev` then
|
|
17
|
-
boot, in every worktree. Other providers and
|
|
18
|
-
|
|
13
|
+
(`ANTHROPIC_API_KEY`, `OPENAI_API_KEY`, `GEMINI_API_KEY`, `GROQ_API_KEY`
|
|
14
|
+
or `OPENROUTER_API_KEY`) and declare its preset
|
|
15
|
+
(`{ preset: 'anthropic' }`, `'openai'`, `'gemini-api'`, `'groq'` or
|
|
16
|
+
`'openrouter'`) in `kindgi.config.ts`'s `providers`: `kindgi dev` then
|
|
17
|
+
registers it on every boot, in every worktree. Other providers and
|
|
18
|
+
per-agent model choice: the `kindgi-authoring-providers` skill.
|
|
19
19
|
|
|
20
20
|
## This pack: a Drupal site
|
|
21
21
|
|
|
@@ -46,17 +46,42 @@ README.md explains the whole design; keep it true when you change the pack.
|
|
|
46
46
|
- **The client secret is a secret** (`DRUPAL_CLIENT_SECRET`, set with
|
|
47
47
|
`kindgi secrets set`): never write it in a file, a test or the chat.
|
|
48
48
|
|
|
49
|
-
##
|
|
49
|
+
## Skills
|
|
50
50
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
`.claude/skills
|
|
55
|
-
|
|
56
|
-
|
|
51
|
+
`.claude/skills/` and `.agents/skills/` hold the same Kindgi skills: getting
|
|
52
|
+
started, tools, guardrails, agents and flows, model providers, MCP servers,
|
|
53
|
+
framework feedback, and guiding the person in using what you built
|
|
54
|
+
(`kindgi-using`). Claude Code loads `.claude/skills/` on its own; Codex and
|
|
55
|
+
Gemini CLI look in `.agents/skills/`; any other coding agent can read
|
|
56
|
+
either. `kindgi skills sync` refreshes both.
|
|
57
|
+
|
|
58
|
+
When you diagnose a framework bug (something in Kindgi itself, not in this
|
|
59
|
+
pack's code), append an entry to `FEEDBACK.md` at the pack root via
|
|
60
|
+
`kindgi feedback write` — see the `kindgi-framework-feedback` skill. Mark
|
|
61
|
+
items fixed by adding a `> **Fixed:** <note>` line right after their
|
|
62
|
+
header; the file is a plain markdown list you edit directly.
|
|
57
63
|
|
|
58
64
|
When the person asks how to use what you built (where something is in
|
|
59
65
|
Kindgi's console, what an agent did, what it cost, who has access), answer
|
|
60
66
|
from `kindgi`'s read-only commands and give the console link beside it —
|
|
61
|
-
see
|
|
62
|
-
|
|
67
|
+
see the `kindgi-using` skill. Deciding approvals, erasing, adding people
|
|
68
|
+
and rating answers stay with the person.
|
|
69
|
+
|
|
70
|
+
## Commands for the person's own terminal
|
|
71
|
+
|
|
72
|
+
Two commands are always the person's to run, in their own terminal, since
|
|
73
|
+
they ask for a secret: `kindgi secrets set` and `kindgi auth registry`.
|
|
74
|
+
Others need what a coding agent's sandbox often blocks: `kindgi dev` and any
|
|
75
|
+
dev server (they keep running), and `kindgi build` or anything else that
|
|
76
|
+
needs Docker. When your sandbox blocks a command (a process it can't start,
|
|
77
|
+
`spawn EPERM`; Docker's socket denied; `localhost` refused; a folder it
|
|
78
|
+
keeps read-only, as Codex's keeps `.agents/`, which `kindgi skills sync`
|
|
79
|
+
writes), don't work around it: don't turn your sandbox off, and don't start
|
|
80
|
+
the command in the background. Give the person the exact command, the folder
|
|
81
|
+
to run it in and what they'll see, then wait for them. Once they say
|
|
82
|
+
`kindgi dev` is running, starting it yourself exits 3 and says where theirs
|
|
83
|
+
runs: use that one.
|
|
84
|
+
|
|
85
|
+
A tool's own `EPERM` while it runs under `kindgi dev` is something else:
|
|
86
|
+
Kindgi's dev sandbox, which the tools skill covers. Never turn that one off
|
|
87
|
+
either.
|
|
@@ -218,8 +218,7 @@ calls the first tool. For Claude, with `kindgi dev` running:
|
|
|
218
218
|
{{KINDGI}} providers register --preset=anthropic
|
|
219
219
|
```
|
|
220
220
|
|
|
221
|
-
|
|
222
|
-
providers.
|
|
221
|
+
The `kindgi-authoring-providers` skill has the other providers.
|
|
223
222
|
|
|
224
223
|
Ask the content agent something:
|
|
225
224
|
|
|
@@ -286,7 +285,7 @@ starts a run:
|
|
|
286
285
|
```sh
|
|
287
286
|
composer require drupal/webhooks:^3.0@rc && drush en webhooks
|
|
288
287
|
{{KINDGI}} webhooks register --flow={{PACK_ID}}.content-review --flow-version={{PACK_VERSION}} \
|
|
289
|
-
--preset=drupal-webhooks --generate-secret --secret=DRUPAL_WEBHOOK_SECRET
|
|
288
|
+
--preset=drupal-webhooks --generate-secret --secret=DRUPAL_WEBHOOK_SECRET \
|
|
290
289
|
--label="Drupal articles"
|
|
291
290
|
```
|
|
292
291
|
|
|
@@ -13,28 +13,32 @@ const config = {
|
|
|
13
13
|
flows: 'flows/**/*.ts',
|
|
14
14
|
},
|
|
15
15
|
// ---------------------------------------------------------------
|
|
16
|
-
// Environments
|
|
17
|
-
//
|
|
18
|
-
//
|
|
16
|
+
// Environments: one entry per place you deploy to, picked with
|
|
17
|
+
// `--env <name>` (default `staging`). `kindgi build` reads `build`,
|
|
18
|
+
// `registry`, `signingKey` and `tenantId`; `kindgi deploy` reads
|
|
19
|
+
// `endpoint`. Local `kindgi dev` doesn't read this block.
|
|
19
20
|
//
|
|
20
|
-
//
|
|
21
|
-
// `kindgi
|
|
21
|
+
// Your API key goes only to the address you signed in to
|
|
22
|
+
// (`kindgi auth login --url <url>`), so an `endpoint` here must be
|
|
23
|
+
// that address. Builds are signed with a key of yours: make it with
|
|
24
|
+
// `kindgi key create <id>`, and let the runtime trust it with
|
|
25
|
+
// `kindgi key trust <id>` (once).
|
|
22
26
|
// ---------------------------------------------------------------
|
|
23
27
|
environments: {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
production: {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
},
|
|
28
|
+
// Kindgi Cloud: `kindgi deploy --env=prod` builds there and deploys.
|
|
29
|
+
// prod: {
|
|
30
|
+
// build: 'hosted',
|
|
31
|
+
// signingKey: '~/.kindgi/keys/<id>.pem',
|
|
32
|
+
// },
|
|
33
|
+
//
|
|
34
|
+
// A runtime of your own:
|
|
35
|
+
// production: {
|
|
36
|
+
// endpoint: 'https://kindgi.your-company.example', // the address you signed in to
|
|
37
|
+
// build: 'https://build.your-company.example', // your Kindgi build server
|
|
38
|
+
// registry: 'ghcr.io/your-org',
|
|
39
|
+
// signingKey: '~/.kindgi/keys/<id>.pem',
|
|
40
|
+
// tenantId: '<your tenant id>',
|
|
41
|
+
// },
|
|
38
42
|
},
|
|
39
43
|
} as const;
|
|
40
44
|
|