@kindgi/cli 0.1.6-rc.0 → 0.1.7-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 +23 -12
- package/dist/commands/dev.d.ts.map +1 -1
- package/dist/commands/dev.js +84 -13
- package/dist/commands/dev.js.map +1 -1
- package/dist/commands/doctor.d.ts +5 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +102 -18
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/guardrails.d.ts.map +1 -1
- package/dist/commands/guardrails.js +13 -2
- package/dist/commands/guardrails.js.map +1 -1
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +4 -0
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/init.d.ts +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +23 -3
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/license.d.ts +3 -0
- package/dist/commands/license.d.ts.map +1 -0
- package/dist/commands/license.js +187 -0
- package/dist/commands/license.js.map +1 -0
- package/dist/commands/mcp.js +1 -1
- package/dist/commands/providers.d.ts.map +1 -1
- package/dist/commands/providers.js +11 -9
- package/dist/commands/providers.js.map +1 -1
- package/dist/commands/test.d.ts.map +1 -1
- package/dist/commands/test.js +21 -9
- package/dist/commands/test.js.map +1 -1
- package/dist/commands/webhooks.d.ts +20 -0
- package/dist/commands/webhooks.d.ts.map +1 -0
- package/dist/commands/webhooks.js +444 -0
- package/dist/commands/webhooks.js.map +1 -0
- package/dist/context.d.ts +4 -0
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +1 -0
- package/dist/context.js.map +1 -1
- package/dist/dev/already-running.d.ts +22 -0
- package/dist/dev/already-running.d.ts.map +1 -0
- package/dist/dev/already-running.js +72 -0
- package/dist/dev/already-running.js.map +1 -0
- package/dist/dev/defaults.d.ts.map +1 -1
- package/dist/dev/defaults.js +5 -2
- package/dist/dev/defaults.js.map +1 -1
- package/dist/dev/dev-lock.d.ts +50 -0
- package/dist/dev/dev-lock.d.ts.map +1 -0
- package/dist/dev/dev-lock.js +203 -0
- package/dist/dev/dev-lock.js.map +1 -0
- package/dist/dev/port.d.ts +6 -2
- package/dist/dev/port.d.ts.map +1 -1
- package/dist/dev/port.js +8 -4
- package/dist/dev/port.js.map +1 -1
- package/dist/dev/providers.d.ts.map +1 -1
- package/dist/dev/providers.js +112 -23
- package/dist/dev/providers.js.map +1 -1
- package/dist/dev/runners.d.ts +21 -2
- package/dist/dev/runners.d.ts.map +1 -1
- package/dist/dev/runtime-container.d.ts +78 -3
- package/dist/dev/runtime-container.d.ts.map +1 -1
- package/dist/dev/runtime-container.js +256 -25
- package/dist/dev/runtime-container.js.map +1 -1
- package/dist/dev/runtime-image.d.ts +1 -1
- package/dist/dev/runtime-image.js +1 -1
- package/dist/dev/start-phases.d.ts +41 -0
- package/dist/dev/start-phases.d.ts.map +1 -0
- package/dist/dev/start-phases.js +103 -0
- package/dist/dev/start-phases.js.map +1 -0
- package/dist/help.js +1 -1
- package/dist/help.js.map +1 -1
- package/dist/init/augment-scaffolder.d.ts +20 -7
- package/dist/init/augment-scaffolder.d.ts.map +1 -1
- package/dist/init/augment-scaffolder.js +94 -21
- package/dist/init/augment-scaffolder.js.map +1 -1
- package/dist/init/pinning.d.ts +39 -0
- package/dist/init/pinning.d.ts.map +1 -0
- package/dist/init/pinning.js +130 -0
- package/dist/init/pinning.js.map +1 -0
- package/dist/init/template-files.d.ts +1 -1
- package/dist/init/tsconfig-paths.d.ts +29 -0
- package/dist/init/tsconfig-paths.d.ts.map +1 -0
- package/dist/init/tsconfig-paths.js +235 -0
- package/dist/init/tsconfig-paths.js.map +1 -0
- package/dist/init/vitest-setup.d.ts +41 -0
- package/dist/init/vitest-setup.d.ts.map +1 -0
- package/dist/init/vitest-setup.js +163 -0
- package/dist/init/vitest-setup.js.map +1 -0
- package/dist/license/aws.d.ts +24 -0
- package/dist/license/aws.d.ts.map +1 -0
- package/dist/license/aws.js +291 -0
- package/dist/license/aws.js.map +1 -0
- package/dist/license/cloud.d.ts +13 -0
- package/dist/license/cloud.d.ts.map +1 -0
- package/dist/license/cloud.js +193 -0
- package/dist/license/cloud.js.map +1 -0
- package/dist/license/expiry.d.ts +33 -0
- package/dist/license/expiry.d.ts.map +1 -0
- package/dist/license/expiry.js +35 -0
- package/dist/license/expiry.js.map +1 -0
- package/dist/license/license-key.d.ts +32 -0
- package/dist/license/license-key.d.ts.map +1 -0
- package/dist/license/license-key.js +91 -0
- package/dist/license/license-key.js.map +1 -0
- package/dist/license/protocol.d.ts +63 -0
- package/dist/license/protocol.d.ts.map +1 -0
- package/dist/license/protocol.js +102 -0
- package/dist/license/protocol.js.map +1 -0
- package/dist/license/renew.d.ts +59 -0
- package/dist/license/renew.d.ts.map +1 -0
- package/dist/license/renew.js +153 -0
- package/dist/license/renew.js.map +1 -0
- package/dist/license/stores.d.ts +19 -0
- package/dist/license/stores.d.ts.map +1 -0
- package/dist/license/stores.js +150 -0
- package/dist/license/stores.js.map +1 -0
- 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/package-manager.d.ts.map +1 -1
- package/dist/package-manager.js +2 -1
- package/dist/package-manager.js.map +1 -1
- package/dist/providers/preset-loader.d.ts +52 -1
- package/dist/providers/preset-loader.d.ts.map +1 -1
- package/dist/providers/preset-loader.js +85 -6
- package/dist/providers/preset-loader.js.map +1 -1
- package/dist/providers/presets/anthropic.json +1 -1
- package/dist/providers/presets/azure-openai.json +65 -0
- package/dist/providers/presets/bedrock.json +102 -0
- package/dist/sdk-skills/kindgi-authoring-agents/SKILL.md +3 -3
- package/dist/sdk-skills/kindgi-authoring-flows/SKILL.md +3 -3
- package/dist/sdk-skills/kindgi-authoring-guardrails/SKILL.md +11 -10
- package/dist/sdk-skills/kindgi-authoring-mcp-servers/SKILL.md +4 -4
- package/dist/sdk-skills/kindgi-authoring-providers/SKILL.md +16 -9
- package/dist/sdk-skills/kindgi-authoring-tools/SKILL.md +9 -11
- package/dist/sdk-skills/kindgi-framework-feedback/SKILL.md +3 -3
- package/dist/sdk-skills/kindgi-getting-started/SKILL.md +28 -5
- package/dist/sdk-skills/kindgi-java-authoring-agents/SKILL.md +1 -1
- package/dist/sdk-skills/kindgi-java-authoring-flows/SKILL.md +1 -1
- package/dist/sdk-skills/kindgi-java-authoring-guardrails/SKILL.md +1 -1
- package/dist/sdk-skills/kindgi-java-authoring-tools/SKILL.md +1 -1
- package/dist/sdk-skills/kindgi-java-getting-started/SKILL.md +6 -1
- 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 +1 -1
- package/dist/sdk-skills/kindgi-python-getting-started/SKILL.md +6 -1
- package/dist/sdk-skills/kindgi-scala-authoring-agents/SKILL.md +1 -1
- package/dist/sdk-skills/kindgi-scala-authoring-flows/SKILL.md +1 -1
- package/dist/sdk-skills/kindgi-scala-authoring-guardrails/SKILL.md +1 -1
- package/dist/sdk-skills/kindgi-scala-authoring-tools/SKILL.md +1 -1
- package/dist/sdk-skills/kindgi-scala-getting-started/SKILL.md +6 -1
- package/dist/sdk-skills/kindgi-using/SKILL.md +236 -0
- package/dist/templates/drupal/.nvmrc +1 -0
- package/dist/templates/drupal/AGENTS.md +62 -0
- package/dist/templates/drupal/README.md.tmpl +321 -0
- package/dist/templates/drupal/agents/content-agent/index.test.ts.tmpl +47 -0
- package/dist/templates/drupal/agents/content-agent/index.ts.tmpl +69 -0
- package/dist/templates/drupal/agents/content-reviewer/index.test.ts.tmpl +37 -0
- package/dist/templates/drupal/agents/content-reviewer/index.ts.tmpl +57 -0
- package/dist/templates/drupal/fixtures/node-updated.json +174 -0
- package/dist/templates/drupal/flows/content-review/index.ts.tmpl +66 -0
- package/dist/templates/drupal/gitignore +8 -0
- package/dist/templates/drupal/guardrails/no-contact-details/index.test.ts.tmpl +29 -0
- package/dist/templates/drupal/guardrails/no-contact-details/index.ts.tmpl +73 -0
- package/dist/templates/drupal/kindgi.config.ts.tmpl +41 -0
- package/dist/templates/drupal/lib/drupal.ts.tmpl +64 -0
- package/dist/templates/drupal/package.json.tmpl +31 -0
- package/dist/templates/drupal/pnpm-workspace.yaml +9 -0
- package/dist/templates/drupal/scripts/connect-drupal.mjs.tmpl +57 -0
- package/dist/templates/drupal/tools/check-content-event/index.test.ts.tmpl +72 -0
- package/dist/templates/drupal/tools/check-content-event/index.ts.tmpl +115 -0
- package/dist/templates/drupal/tsconfig.json.tmpl +28 -0
- package/dist/templates/drupal/vitest.config.ts.tmpl +14 -0
- package/dist/templates/java/AGENTS.md +6 -0
- package/dist/templates/java/README.md.tmpl +1 -1
- package/dist/templates/minimal/AGENTS.md +6 -0
- package/dist/templates/minimal/README.md.tmpl +3 -2
- package/dist/templates/minimal/package.json.tmpl +3 -2
- package/dist/templates/python/AGENTS.md +3 -2
- package/dist/templates/sample/AGENTS.md +6 -0
- package/dist/templates/sample/package.json.tmpl +3 -2
- package/dist/templates/scala/AGENTS.md +6 -0
- package/dist/templates/scala/README.md.tmpl +1 -1
- package/dist/templates/woocommerce/.nvmrc +1 -0
- package/dist/templates/woocommerce/AGENTS.md +49 -0
- package/dist/templates/woocommerce/README.md.tmpl +273 -0
- package/dist/templates/woocommerce/agents/order-reviewer/index.test.ts.tmpl +28 -0
- package/dist/templates/woocommerce/agents/order-reviewer/index.ts.tmpl +45 -0
- package/dist/templates/woocommerce/agents/store-agent/index.test.ts.tmpl +47 -0
- package/dist/templates/woocommerce/agents/store-agent/index.ts.tmpl +79 -0
- package/dist/templates/woocommerce/fixtures/order-created.json +67 -0
- package/dist/templates/woocommerce/flows/order-review/index.ts.tmpl +64 -0
- package/dist/templates/woocommerce/gitignore +8 -0
- package/dist/templates/woocommerce/guardrails/no-customer-contact-details/index.test.ts.tmpl +29 -0
- package/dist/templates/woocommerce/guardrails/no-customer-contact-details/index.ts.tmpl +74 -0
- package/dist/templates/woocommerce/kindgi.config.ts.tmpl +41 -0
- package/dist/templates/woocommerce/lib/fake-store.ts.tmpl +82 -0
- package/dist/templates/woocommerce/lib/woo.ts.tmpl +182 -0
- package/dist/templates/woocommerce/package.json.tmpl +30 -0
- package/dist/templates/woocommerce/pnpm-workspace.yaml +9 -0
- package/dist/templates/woocommerce/tools/check-order-event/index.test.ts.tmpl +76 -0
- package/dist/templates/woocommerce/tools/check-order-event/index.ts.tmpl +131 -0
- package/dist/templates/woocommerce/tools/find-orders/index.ts.tmpl +80 -0
- package/dist/templates/woocommerce/tools/publish-product/index.ts.tmpl +34 -0
- package/dist/templates/woocommerce/tools/refund/index.test.ts.tmpl +125 -0
- package/dist/templates/woocommerce/tools/refund/index.ts.tmpl +70 -0
- package/dist/templates/woocommerce/tools/refund-large/index.test.ts.tmpl +53 -0
- package/dist/templates/woocommerce/tools/refund-large/index.ts.tmpl +44 -0
- package/dist/templates/woocommerce/tools/set-price/index.ts.tmpl +36 -0
- package/dist/templates/woocommerce/tsconfig.json.tmpl +28 -0
- package/dist/templates/woocommerce/vitest.config.ts.tmpl +14 -0
- package/dist/test/defaults.d.ts +1 -1
- package/dist/test/defaults.d.ts.map +1 -1
- package/dist/test/defaults.js +2 -7
- package/dist/test/defaults.js.map +1 -1
- package/dist/test/runners.d.ts +6 -0
- package/dist/test/runners.d.ts.map +1 -1
- package/dist/test/runners.js +18 -1
- package/dist/test/runners.js.map +1 -1
- package/package.json +14 -14
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "azure-openai",
|
|
3
|
+
"description": "GPT on your Azure OpenAI deployments (key: AZURE_OPENAI_API_KEY; --resource-name, --deployments). Global Standard prices. To sign in with the runtime's Entra identity, register with --spec.",
|
|
4
|
+
"adapterId": "@kindgi/adapter-model-azure-openai",
|
|
5
|
+
"secret": "AZURE_OPENAI_API_KEY",
|
|
6
|
+
"adapterConfig": [
|
|
7
|
+
{
|
|
8
|
+
"key": "resourceName",
|
|
9
|
+
"description": "The Azure OpenAI resource, as in <name>.openai.azure.com."
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"key": "deployments",
|
|
13
|
+
"description": "The deployment serving each model you register, model=deployment,… (e.g. gpt-6.1-sol=gpt-6-1-sol,gpt-6-luna=gpt-6-luna)."
|
|
14
|
+
}
|
|
15
|
+
],
|
|
16
|
+
"pricesCheckedAt": "2026-10-09",
|
|
17
|
+
"metadata": {
|
|
18
|
+
"id": "azure-openai",
|
|
19
|
+
"region": "unspecified",
|
|
20
|
+
"defaultModel": "gpt-6.1-sol",
|
|
21
|
+
"description": "GPT on Azure OpenAI",
|
|
22
|
+
"models": [
|
|
23
|
+
{
|
|
24
|
+
"name": "gpt-6.1-sol",
|
|
25
|
+
"contextWindow": 1050000,
|
|
26
|
+
"maxOutputTokens": 128000,
|
|
27
|
+
"thinking": { "mode": "adaptive", "lowest": "low" },
|
|
28
|
+
"sampling": false,
|
|
29
|
+
"features": ["tool-use", "parallel-tool-use", "structured-output", "long-context"],
|
|
30
|
+
"cost": {
|
|
31
|
+
"promptUsdPer1kTokens": 0.002,
|
|
32
|
+
"completionUsdPer1kTokens": 0.01,
|
|
33
|
+
"cachedPromptMultiplier": 0.05,
|
|
34
|
+
"promptCacheCreationMultiplier": 1.25,
|
|
35
|
+
"longContext": {
|
|
36
|
+
"thresholdTokens": 272000,
|
|
37
|
+
"promptUsdPer1kTokens": 0.004,
|
|
38
|
+
"completionUsdPer1kTokens": 0.015
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
"description": "Balanced performance and cost."
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"name": "gpt-6-luna",
|
|
45
|
+
"contextWindow": 1050000,
|
|
46
|
+
"maxOutputTokens": 128000,
|
|
47
|
+
"thinking": { "mode": "adaptive", "lowest": "none" },
|
|
48
|
+
"sampling": false,
|
|
49
|
+
"features": ["tool-use", "parallel-tool-use", "structured-output", "long-context"],
|
|
50
|
+
"cost": {
|
|
51
|
+
"promptUsdPer1kTokens": 0.0001,
|
|
52
|
+
"completionUsdPer1kTokens": 0.0005,
|
|
53
|
+
"cachedPromptMultiplier": 0.1,
|
|
54
|
+
"promptCacheCreationMultiplier": 1.25,
|
|
55
|
+
"longContext": {
|
|
56
|
+
"thresholdTokens": 272000,
|
|
57
|
+
"promptUsdPer1kTokens": 0.0002,
|
|
58
|
+
"completionUsdPer1kTokens": 0.00075
|
|
59
|
+
}
|
|
60
|
+
},
|
|
61
|
+
"description": "Fastest and cheapest — routing, classification, simple calls."
|
|
62
|
+
}
|
|
63
|
+
]
|
|
64
|
+
}
|
|
65
|
+
}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "bedrock",
|
|
3
|
+
"description": "Claude, Nova and GPT on Amazon Bedrock, as the runtime's AWS identity (KINDGI_AWS_IDENTITY; --region=<a US region>). The models are US cross-region inference profiles.",
|
|
4
|
+
"adapterId": "@kindgi/adapter-model-bedrock",
|
|
5
|
+
"adapterConfig": [
|
|
6
|
+
{
|
|
7
|
+
"key": "region",
|
|
8
|
+
"description": "The US region Bedrock runs in, e.g. us-east-2: the preset's models are us. cross-region inference profiles.",
|
|
9
|
+
"in": "metadata"
|
|
10
|
+
}
|
|
11
|
+
],
|
|
12
|
+
"pricesCheckedAt": "2026-10-09",
|
|
13
|
+
"metadata": {
|
|
14
|
+
"id": "bedrock",
|
|
15
|
+
"defaultModel": "us.amazon.nova-pro-v1:0",
|
|
16
|
+
"description": "Amazon Bedrock",
|
|
17
|
+
"models": [
|
|
18
|
+
{
|
|
19
|
+
"name": "us.anthropic.claude-sonnet-5-5",
|
|
20
|
+
"contextWindow": 1000000,
|
|
21
|
+
"maxOutputTokens": 16000,
|
|
22
|
+
"thinking": { "mode": "adaptive", "lowest": "between_tools" },
|
|
23
|
+
"sampling": false,
|
|
24
|
+
"features": ["tool-use", "parallel-tool-use", "structured-output", "long-context"],
|
|
25
|
+
"cost": {
|
|
26
|
+
"promptUsdPer1kTokens": 0.0022,
|
|
27
|
+
"completionUsdPer1kTokens": 0.011,
|
|
28
|
+
"cachedPromptMultiplier": 0.05,
|
|
29
|
+
"promptCacheCreationMultiplier": 1.25
|
|
30
|
+
},
|
|
31
|
+
"description": "Balanced performance and cost."
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"name": "us.anthropic.claude-haiku-4-5-20251001-v1:0",
|
|
35
|
+
"contextWindow": 200000,
|
|
36
|
+
"maxOutputTokens": 16000,
|
|
37
|
+
"features": ["tool-use", "parallel-tool-use"],
|
|
38
|
+
"cost": {
|
|
39
|
+
"promptUsdPer1kTokens": 0.0011,
|
|
40
|
+
"completionUsdPer1kTokens": 0.0055,
|
|
41
|
+
"cachedPromptMultiplier": 0.1,
|
|
42
|
+
"promptCacheCreationMultiplier": 1.25
|
|
43
|
+
},
|
|
44
|
+
"description": "Claude's fast, inexpensive model."
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"name": "us.amazon.nova-pro-v1:0",
|
|
48
|
+
"contextWindow": 300000,
|
|
49
|
+
"maxOutputTokens": 10000,
|
|
50
|
+
"sampling": true,
|
|
51
|
+
"features": ["tool-use", "structured-output"],
|
|
52
|
+
"cost": {
|
|
53
|
+
"promptUsdPer1kTokens": 0.0008,
|
|
54
|
+
"completionUsdPer1kTokens": 0.0032,
|
|
55
|
+
"cachedPromptMultiplier": 0.25,
|
|
56
|
+
"promptCacheCreationMultiplier": 0
|
|
57
|
+
},
|
|
58
|
+
"description": "Amazon's own; inexpensive."
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"name": "us.openai.gpt-6.1-sol",
|
|
62
|
+
"contextWindow": 1000000,
|
|
63
|
+
"maxOutputTokens": 128000,
|
|
64
|
+
"thinking": { "mode": "adaptive", "lowest": "low" },
|
|
65
|
+
"sampling": false,
|
|
66
|
+
"features": ["tool-use", "parallel-tool-use", "structured-output", "long-context"],
|
|
67
|
+
"cost": {
|
|
68
|
+
"promptUsdPer1kTokens": 0.0022,
|
|
69
|
+
"completionUsdPer1kTokens": 0.011,
|
|
70
|
+
"cachedPromptMultiplier": 0.05,
|
|
71
|
+
"promptCacheCreationMultiplier": 1.25,
|
|
72
|
+
"longContext": {
|
|
73
|
+
"thresholdTokens": 272000,
|
|
74
|
+
"promptUsdPer1kTokens": 0.0044,
|
|
75
|
+
"completionUsdPer1kTokens": 0.0165
|
|
76
|
+
}
|
|
77
|
+
},
|
|
78
|
+
"description": "GPT's balanced model."
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
"name": "us.openai.gpt-6-luna",
|
|
82
|
+
"contextWindow": 1050000,
|
|
83
|
+
"maxOutputTokens": 128000,
|
|
84
|
+
"thinking": { "mode": "adaptive", "lowest": "none" },
|
|
85
|
+
"sampling": false,
|
|
86
|
+
"features": ["tool-use", "parallel-tool-use", "structured-output", "long-context"],
|
|
87
|
+
"cost": {
|
|
88
|
+
"promptUsdPer1kTokens": 0.00011,
|
|
89
|
+
"completionUsdPer1kTokens": 0.00055,
|
|
90
|
+
"cachedPromptMultiplier": 0.1,
|
|
91
|
+
"promptCacheCreationMultiplier": 1.25,
|
|
92
|
+
"longContext": {
|
|
93
|
+
"thresholdTokens": 272000,
|
|
94
|
+
"promptUsdPer1kTokens": 0.00022,
|
|
95
|
+
"completionUsdPer1kTokens": 0.000825
|
|
96
|
+
}
|
|
97
|
+
},
|
|
98
|
+
"description": "Fastest and cheapest — routing, classification, simple calls."
|
|
99
|
+
}
|
|
100
|
+
]
|
|
101
|
+
}
|
|
102
|
+
}
|
|
@@ -12,8 +12,8 @@ description: >
|
|
|
12
12
|
kindgi-authoring-guardrails.
|
|
13
13
|
type: core
|
|
14
14
|
library: "@kindgi/sdk"
|
|
15
|
-
version: "0.4.
|
|
16
|
-
sdk_version: "0.1.
|
|
15
|
+
version: "0.4.6"
|
|
16
|
+
sdk_version: "0.1.7-rc.0"
|
|
17
17
|
pack_languages: [node]
|
|
18
18
|
sources:
|
|
19
19
|
- packages/agents/src/types.ts
|
|
@@ -24,7 +24,7 @@ sources:
|
|
|
24
24
|
|
|
25
25
|
> **Running `kindgi`:** the CLI is a devDependency of the project (`@kindgi/cli`),
|
|
26
26
|
> not a global command. Run it through the project's package manager —
|
|
27
|
-
> `pnpm exec kindgi …`, `npx --no kindgi …` (npm), `yarn kindgi …` or
|
|
27
|
+
> `pnpm exec kindgi …`, `npx --no -- kindgi …` (npm), `yarn kindgi …` or
|
|
28
28
|
> `bun run kindgi …`. Commands below are written `kindgi …` for brevity.
|
|
29
29
|
|
|
30
30
|
An **agent** is a versioned LLM-powered orchestrator: instructions (a
|
|
@@ -13,8 +13,8 @@ description: >
|
|
|
13
13
|
kindgi-authoring-agents.
|
|
14
14
|
type: core
|
|
15
15
|
library: "@kindgi/sdk"
|
|
16
|
-
version: "0.1.
|
|
17
|
-
sdk_version: "0.1.
|
|
16
|
+
version: "0.1.3"
|
|
17
|
+
sdk_version: "0.1.7-rc.0"
|
|
18
18
|
pack_languages: [node]
|
|
19
19
|
sources:
|
|
20
20
|
- packages/flow/src/types.ts
|
|
@@ -25,7 +25,7 @@ sources:
|
|
|
25
25
|
|
|
26
26
|
> **Running `kindgi`:** the CLI is a devDependency of the project (`@kindgi/cli`),
|
|
27
27
|
> not a global command. Run it through the project's package manager —
|
|
28
|
-
> `pnpm exec kindgi …`, `npx --no kindgi …` (npm), `yarn kindgi …` or
|
|
28
|
+
> `pnpm exec kindgi …`, `npx --no -- kindgi …` (npm), `yarn kindgi …` or
|
|
29
29
|
> `bun run kindgi …`. Commands below are written `kindgi …` for brevity.
|
|
30
30
|
|
|
31
31
|
A **flow** is a versioned, durable graph of steps: tools (your code) and
|
|
@@ -15,8 +15,8 @@ description: >
|
|
|
15
15
|
kindgi-authoring-agents.
|
|
16
16
|
type: core
|
|
17
17
|
library: "@kindgi/sdk"
|
|
18
|
-
version: "0.3.
|
|
19
|
-
sdk_version: "0.1.
|
|
18
|
+
version: "0.3.9"
|
|
19
|
+
sdk_version: "0.1.7-rc.0"
|
|
20
20
|
pack_languages: [node]
|
|
21
21
|
sources:
|
|
22
22
|
- packages/guardrails/src/types.ts
|
|
@@ -32,7 +32,7 @@ sources:
|
|
|
32
32
|
|
|
33
33
|
> **Running `kindgi`:** the CLI is a devDependency of the project (`@kindgi/cli`),
|
|
34
34
|
> not a global command. Run it through the project's package manager —
|
|
35
|
-
> `pnpm exec kindgi …`, `npx --no kindgi …` (npm), `yarn kindgi …` or
|
|
35
|
+
> `pnpm exec kindgi …`, `npx --no -- kindgi …` (npm), `yarn kindgi …` or
|
|
36
36
|
> `bun run kindgi …`. Commands below are written `kindgi …` for brevity.
|
|
37
37
|
|
|
38
38
|
A **guardrail** is a safety rule an agent turn must satisfy. It combines
|
|
@@ -215,13 +215,14 @@ available to the runtime that evaluates it.
|
|
|
215
215
|
- **`check`** — the id of a registered check (built-in, or one built
|
|
216
216
|
with `defineCheck`). In a pack file it may also be the check object.
|
|
217
217
|
- **`config`** — the check's parameters, validated against the check's
|
|
218
|
-
`configSchema
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
schema defaults
|
|
218
|
+
`configSchema`: by `defineGuardrail`, and in a pack when the pack is
|
|
219
|
+
indexed (a config that doesn't fit is a file error naming where, and
|
|
220
|
+
`kindgi build` refuses the pack; see "How the pack tooling reads this
|
|
221
|
+
file"). In a pack, the declaration's `config` goes into the index and
|
|
222
|
+
the check runs with it; without one it runs with `{}`. A `defineCheck`
|
|
223
|
+
check's `evaluate` receives the config its schema resolves, with the
|
|
224
|
+
schema's defaults applied; a check written without `defineCheck` gets
|
|
225
|
+
the config as declared.
|
|
225
226
|
- **`action.on-violation`** — `'halt'`, `'retry'` (with
|
|
226
227
|
`retry.maxAttempts`, 1–10), `'escalate'` (with `escalateTo`),
|
|
227
228
|
`'log-only'`, `'compensate'` (with `compensateWith`, a tool id). In an
|
|
@@ -17,8 +17,8 @@ description: >
|
|
|
17
17
|
`kindgi secrets set` flow.
|
|
18
18
|
type: core
|
|
19
19
|
library: "@kindgi/sdk"
|
|
20
|
-
version: "0.3.
|
|
21
|
-
sdk_version: "0.1.
|
|
20
|
+
version: "0.3.3"
|
|
21
|
+
sdk_version: "0.1.7-rc.0"
|
|
22
22
|
pack_languages: [node, python, java, scala]
|
|
23
23
|
---
|
|
24
24
|
|
|
@@ -26,7 +26,7 @@ pack_languages: [node, python, java, scala]
|
|
|
26
26
|
|
|
27
27
|
> **Running `kindgi`:** in a Node project the CLI is a devDependency
|
|
28
28
|
> (`@kindgi/cli`), not a global command. Run it through the project's
|
|
29
|
-
> package manager — `pnpm exec kindgi …`, `npx --no kindgi …` (npm),
|
|
29
|
+
> package manager — `pnpm exec kindgi …`, `npx --no -- kindgi …` (npm),
|
|
30
30
|
> `yarn kindgi …` or `bun run kindgi …`. A Python pack (`[tool.kindgi]` in
|
|
31
31
|
> `pyproject.toml`) has no Node project: run the `kindgi` on `PATH`. A Java
|
|
32
32
|
> or Scala pack (`kindgi.config.json`) runs the CLI it pins: `./kindgiw …`.
|
|
@@ -89,7 +89,7 @@ Three moving parts:
|
|
|
89
89
|
`kindgi mcp add`. Every entry runs the project's own `kindgi
|
|
90
90
|
mcp-launch -- <launcher-flags>...` through its package manager
|
|
91
91
|
(`"command": "pnpm", "args": ["exec", "kindgi", "mcp-launch", …]`;
|
|
92
|
-
npm: `npx --no kindgi …`) — never a global `kindgi`, never a
|
|
92
|
+
npm: `npx --no -- kindgi …`) — never a global `kindgi`, never a
|
|
93
93
|
download. A Python pack has no Node project, so its entries run the
|
|
94
94
|
`kindgi` on `PATH` (`"command": "kindgi", "args": ["mcp-launch", …]`). A
|
|
95
95
|
Java or Scala pack's run the CLI it pins (`"command": "./kindgiw"`).
|
|
@@ -23,8 +23,8 @@ description: >
|
|
|
23
23
|
kindgi-getting-started.
|
|
24
24
|
type: core
|
|
25
25
|
library: "@kindgi/sdk"
|
|
26
|
-
version: "0.9.
|
|
27
|
-
sdk_version: "0.1.
|
|
26
|
+
version: "0.9.13"
|
|
27
|
+
sdk_version: "0.1.7-rc.0"
|
|
28
28
|
pack_languages: [node, python, java, scala]
|
|
29
29
|
sources:
|
|
30
30
|
- packages/adapters/model-anthropic/src/provider.ts
|
|
@@ -39,7 +39,7 @@ sources:
|
|
|
39
39
|
|
|
40
40
|
> **Running `kindgi`:** in a Node project the CLI is a devDependency
|
|
41
41
|
> (`@kindgi/cli`), not a global command. Run it through the project's
|
|
42
|
-
> package manager — `pnpm exec kindgi …`, `npx --no kindgi …` (npm),
|
|
42
|
+
> package manager — `pnpm exec kindgi …`, `npx --no -- kindgi …` (npm),
|
|
43
43
|
> `yarn kindgi …` or `bun run kindgi …`. A Python pack (`[tool.kindgi]` in
|
|
44
44
|
> `pyproject.toml`) has no Node project: run the `kindgi` on `PATH`. A Java
|
|
45
45
|
> or Scala pack (`kindgi.config.json`) runs the CLI it pins: `./kindgiw …`.
|
|
@@ -149,9 +149,10 @@ The Claude 5.5 and GPT-6 models take no `temperature` (`"sampling": false`:
|
|
|
149
149
|
the call goes without it, with a `sampling-unsupported` warning), and a
|
|
150
150
|
model's `thinking` says how it thinks; thinking counts against
|
|
151
151
|
`maxOutputTokens` and bills as output.
|
|
152
|
-
The preset carries the models, context windows, output
|
|
153
|
-
|
|
154
|
-
|
|
152
|
+
The preset carries the models, context windows, default output caps (what
|
|
153
|
+
a call asks for when its agent sets no `maxOutputTokens`; not the model's own
|
|
154
|
+
limit) and current prices (`kindgi providers presets` lists the presets and
|
|
155
|
+
when their prices were checked); `--max-output-tokens=<n>` sets another cap. In a pack it refuses until the key is in the pack's env files —
|
|
155
156
|
step 1. That's all for Anthropic; go to step 4. The rest of this path is
|
|
156
157
|
the same registration by hand, for a spec of your own.
|
|
157
158
|
|
|
@@ -175,9 +176,15 @@ models = ["claude-sonnet-5-5"]
|
|
|
175
176
|
```
|
|
176
177
|
In a Java or Scala pack's `kindgi.config.json`, the same keys:
|
|
177
178
|
`"providers": [{"preset": "anthropic", "models": ["claude-sonnet-5-5"]}]`.
|
|
178
|
-
- A preset entry takes `models`,
|
|
179
|
-
|
|
180
|
-
|
|
179
|
+
- A preset entry takes `models`, the settings its preset asks for (`project`
|
|
180
|
+
for `gemini`; `resourceName` and `deployments` for `azure-openai`; `region`
|
|
181
|
+
for `bedrock`), `secret` (the key's name, in place of the preset's) and
|
|
182
|
+
`maxOutputTokens`, spelled the same in `pyproject.toml` and
|
|
183
|
+
`kindgi.config.json`. Its own settings are required and another preset's
|
|
184
|
+
are refused. `deployments` is a map of model to deployment
|
|
185
|
+
(`{ "gpt-6.1-sol": "gpt-6-1-sol" }`, a `[tool.kindgi.providers.deployments]`
|
|
186
|
+
table in `pyproject.toml`, model names quoted), not the `--deployments` flag's
|
|
187
|
+
`model=deployment,…`, and it names exactly the models the entry registers;
|
|
181
188
|
a `spec` entry is a `--spec` body. A
|
|
182
189
|
key is always a secret's name (`secret_ref`); a credential in
|
|
183
190
|
`adapter_config` is refused.
|
|
@@ -12,8 +12,8 @@ description: >
|
|
|
12
12
|
authoring agents is covered by kindgi-authoring-agents.
|
|
13
13
|
type: core
|
|
14
14
|
library: "@kindgi/sdk"
|
|
15
|
-
version: "0.4.
|
|
16
|
-
sdk_version: "0.1.
|
|
15
|
+
version: "0.4.8"
|
|
16
|
+
sdk_version: "0.1.7-rc.0"
|
|
17
17
|
pack_languages: [node]
|
|
18
18
|
sources:
|
|
19
19
|
- packages/tools/src/types.ts
|
|
@@ -24,7 +24,7 @@ sources:
|
|
|
24
24
|
|
|
25
25
|
> **Running `kindgi`:** the CLI is a devDependency of the project (`@kindgi/cli`),
|
|
26
26
|
> not a global command. Run it through the project's package manager —
|
|
27
|
-
> `pnpm exec kindgi …`, `npx --no kindgi …` (npm), `yarn kindgi …` or
|
|
27
|
+
> `pnpm exec kindgi …`, `npx --no -- kindgi …` (npm), `yarn kindgi …` or
|
|
28
28
|
> `bun run kindgi …`. Commands below are written `kindgi …` for brevity.
|
|
29
29
|
|
|
30
30
|
A **tool** is a callable unit of work an agent invokes: a function with a
|
|
@@ -168,7 +168,7 @@ const defined = defineTool({
|
|
|
168
168
|
```
|
|
169
169
|
- **Not secret:** env values are recorded with each run that uses them and shown in its journal. A credential is a secret (`needsSpec.secrets`), never an env value.
|
|
170
170
|
- **Schemas compile strictly:** each `needsSpec` schema must compile as the runtime compiles it (an unknown keyword is refused), and an env `default` is a string; otherwise `defineTool` returns `invalid-tool-definition`, and a deploy fails with `deployment-validation-failed`.
|
|
171
|
-
- **In a unit test:**
|
|
171
|
+
- **In a unit test:** call it with `invokeToolForTest(tool, input, { env: { … } })` (`@kindgi/sdk/define`). It decides the values as a run does: a name you don't set takes its schema's `default`, each value is checked, and the handler sees the declared names only. A missing or invalid one is `precondition-failed` (`env-value-missing`, `env-value-invalid`). Plain `invokeTool` passes `ctx.env` as given (the runtime decides a pack tool's env itself).
|
|
172
172
|
|
|
173
173
|
Everything else comes from the process environment: `process.env.CITATOR_URL`. The pack service runs with the pack's env files in `kindgi dev` (less any secret stored with `kindgi secrets set`, which a tool declares and reads from `ctx.secrets`, and any model provider's key, which no tool gets), and with the container's environment in an image. Declare the names your code reads in `kindgi.config.ts`, `env: { required: ['CITATOR_URL'], optional: [...] }`: a deployment injects exactly those, a pack service missing a required one isn't ready and says which, and `kindgi dev` warns about it. In an image the pack service also drops every variable the pack doesn't declare before your code loads (`kindgi dev` keeps them), so an undeclared name works locally and is unset once deployed: declare every name the code reads. Values per environment go in `environments.<name>.env`, secrets only as references.
|
|
174
174
|
|
|
@@ -261,18 +261,16 @@ the agent-author to opt in.
|
|
|
261
261
|
|
|
262
262
|
## Testing a tool
|
|
263
263
|
|
|
264
|
-
Put a tool's tests beside it, `tools/<tool>/index.test.ts`. Discovery skips `*.test.*` and `*.spec.*` files (`.ts`, `.js`, `.mjs`, `.cjs`), so the indexer never loads a test as a primitive: don't move tests elsewhere to keep them out. `invokeTool(tool, input, ctx)` from `@kindgi/sdk/define` calls the tool the way Kindgi does, schemas included, and returns a `Result`.
|
|
264
|
+
Put a tool's tests beside it, `tools/<tool>/index.test.ts`. Discovery skips `*.test.*` and `*.spec.*` files (`.ts`, `.js`, `.mjs`, `.cjs`), so the indexer never loads a test as a primitive: don't move tests elsewhere to keep them out. `invokeTool(tool, input, ctx)` from `@kindgi/sdk/define` calls the tool the way Kindgi does, schemas included, and returns a `Result`. `toolContextForTest()` builds its `ctx` (tenant `tenant-test`, run `run-test`, an abort signal) and takes what to change: `env`, `secrets`, `projectId`.
|
|
265
265
|
|
|
266
266
|
```ts
|
|
267
|
-
import { invokeTool } from '@kindgi/sdk/define';
|
|
268
|
-
import type { TenantId } from '@kindgi/sdk/types';
|
|
267
|
+
import { invokeTool, toolContextForTest } from '@kindgi/sdk/define';
|
|
269
268
|
|
|
270
|
-
const
|
|
271
|
-
//
|
|
272
|
-
const result = await invokeTool(lookupOrder, { orderId: 'ord_1001' }, ctx);
|
|
269
|
+
const result = await invokeTool(lookupOrder, { orderId: 'ord_1001' }, toolContextForTest());
|
|
270
|
+
// a tool with env values: invokeToolForTest(tool, input, { env: { STORE_URL: '…' } })
|
|
273
271
|
```
|
|
274
272
|
|
|
275
|
-
`kindgi test` runs the pack's tests with vitest (`vitest run`; `--watch` keeps watching).
|
|
273
|
+
`kindgi test` runs the pack's tests with vitest (`vitest run`; `--watch` keeps watching). In an app Kindgi was added to, `kindgi init` wrote the vitest config (`vitest.config.mts`, or `.ts` in a `"type": "module"` app): it runs `kindgi/**/*.test.ts`, and its `resolve.alias` copies `tsconfig.json`'s `paths`, which vitest doesn't read. A test that can't resolve an alias the app's code uses (`@/…`) means the two differ: update the config's alias, not the import.
|
|
276
274
|
|
|
277
275
|
## Shared code
|
|
278
276
|
|
|
@@ -14,8 +14,8 @@ description: >
|
|
|
14
14
|
diagnostic output into durable input for framework improvement.
|
|
15
15
|
type: core
|
|
16
16
|
library: "@kindgi/sdk"
|
|
17
|
-
version: "0.4.
|
|
18
|
-
sdk_version: "0.1.
|
|
17
|
+
version: "0.4.3"
|
|
18
|
+
sdk_version: "0.1.7-rc.0"
|
|
19
19
|
pack_languages: [node, python, java, scala]
|
|
20
20
|
---
|
|
21
21
|
|
|
@@ -23,7 +23,7 @@ pack_languages: [node, python, java, scala]
|
|
|
23
23
|
|
|
24
24
|
> **Running `kindgi`:** in a Node project the CLI is a devDependency
|
|
25
25
|
> (`@kindgi/cli`), not a global command. Run it through the project's
|
|
26
|
-
> package manager — `pnpm exec kindgi …`, `npx --no kindgi …` (npm),
|
|
26
|
+
> package manager — `pnpm exec kindgi …`, `npx --no -- kindgi …` (npm),
|
|
27
27
|
> `yarn kindgi …` or `bun run kindgi …`. A Python pack (`[tool.kindgi]` in
|
|
28
28
|
> `pyproject.toml`) has no Node project: run the `kindgi` on `PATH`. A Java
|
|
29
29
|
> or Scala pack (`kindgi.config.json`) runs the CLI it pins: `./kindgiw …`.
|
|
@@ -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.11"
|
|
18
|
+
sdk_version: "0.1.7-rc.0"
|
|
19
19
|
pack_languages: [node]
|
|
20
20
|
---
|
|
21
21
|
|
|
@@ -23,7 +23,7 @@ pack_languages: [node]
|
|
|
23
23
|
|
|
24
24
|
> **Running `kindgi`:** the CLI is a devDependency of the project (`@kindgi/cli`),
|
|
25
25
|
> not a global command. Run it through the project's package manager —
|
|
26
|
-
> `pnpm exec kindgi …`, `npx --no kindgi …` (npm), `yarn kindgi …` or
|
|
26
|
+
> `pnpm exec kindgi …`, `npx --no -- kindgi …` (npm), `yarn kindgi …` or
|
|
27
27
|
> `bun run kindgi …`. Commands below are written `kindgi …` for brevity.
|
|
28
28
|
|
|
29
29
|
Scaffold a Kindgi pack — a versioned, deployable bundle
|
|
@@ -69,7 +69,9 @@ pnpm install # or the app's own package manager
|
|
|
69
69
|
```
|
|
70
70
|
|
|
71
71
|
This adds `kindgi.config.ts` and a `kindgi/` folder beside the app's code,
|
|
72
|
-
and
|
|
72
|
+
and `vitest.config.mts` for the tests `kindgi test` runs (`kindgi/**/*.test.ts`,
|
|
73
|
+
with the app's tsconfig path aliases) unless the app runs vitest already. It
|
|
74
|
+
never creates env files: `kindgi dev` reads the app's own `.env` /
|
|
73
75
|
`.env.local`. A package a tool imports must be in the app's `dependencies`,
|
|
74
76
|
not `devDependencies`: the deployed pack installs production dependencies
|
|
75
77
|
only (see `kindgi-authoring-tools`).
|
|
@@ -79,12 +81,20 @@ Either way, `init` adds `@kindgi/sdk` and `@kindgi/cli` to the project's
|
|
|
79
81
|
one. (`npx @kindgi/cli` is the scoped package; a bare `npx kindgi` would
|
|
80
82
|
fetch an unrelated package.)
|
|
81
83
|
|
|
82
|
-
|
|
84
|
+
Four templates:
|
|
83
85
|
|
|
84
86
|
- `--template=minimal` (default) — folder structure only, no example
|
|
85
87
|
primitives. Right when you know what you want to build.
|
|
86
88
|
- `--template=sample` — worked kitchen-sink example (echo tool + agent
|
|
87
89
|
+ guardrail + flow). Right for exploring the primitive kinds.
|
|
90
|
+
- `--template=woocommerce` — agents for a WooCommerce store: typed store
|
|
91
|
+
tools, approvals for large refunds and store changes, and a flow that
|
|
92
|
+
checks each order event before an agent sees it. Its README explains
|
|
93
|
+
each choice.
|
|
94
|
+
- `--template=drupal` — agents for a Drupal site, through its MCP
|
|
95
|
+
Server signed in with OAuth: house-style fixes as drafts with every
|
|
96
|
+
change approved, and a flow that checks each saved article before an
|
|
97
|
+
agent sees it. Its README explains each choice.
|
|
88
98
|
|
|
89
99
|
## Boot the dev harness
|
|
90
100
|
|
|
@@ -97,6 +107,19 @@ needs on first run), indexes the pack, registers every primitive, and
|
|
|
97
107
|
re-registers on every save. The banner prints the API URL, the seeded
|
|
98
108
|
bearer token, and (if the console is bundled) the `/console/` URL.
|
|
99
109
|
|
|
110
|
+
One `kindgi dev` per pack. When one is already running (the person's
|
|
111
|
+
terminal, say), `kindgi dev` exits with code 3 and prints where it is
|
|
112
|
+
(its pid, the console and the API): use that one. Don't start another,
|
|
113
|
+
and don't stop theirs.
|
|
114
|
+
|
|
115
|
+
Give the person the console's address as the banner prints it (its
|
|
116
|
+
`Console` line). Never guess a console URL: an approval's own link is
|
|
117
|
+
`/console/approvals/<approval id>`, which finds its tenant and project by
|
|
118
|
+
itself, and every other page's address starts with the tenant and the
|
|
119
|
+
project, `/console/tenants/<tenant>/projects/<project id>/…`, both taken
|
|
120
|
+
from the CLI's answers (`kindgi auth whoami`'s `identity.tenantId`,
|
|
121
|
+
`kindgi projects get-default`'s `id`), never made up.
|
|
122
|
+
|
|
100
123
|
Until a model provider is registered, agents answer with `dev-echo`, a
|
|
101
124
|
stand-in that calls the agent's first tool with `{"message": <userMessage>}`
|
|
102
125
|
and replies with what the tool returned. It checks the wiring only: it can't
|
|
@@ -17,7 +17,7 @@ description: >
|
|
|
17
17
|
type: core
|
|
18
18
|
library: "kindgi-pack (Java)"
|
|
19
19
|
version: "0.1.0"
|
|
20
|
-
sdk_version: "0.1.
|
|
20
|
+
sdk_version: "0.1.7-rc.0"
|
|
21
21
|
pack_languages: [java]
|
|
22
22
|
sources:
|
|
23
23
|
- sdks/java/kindgi-pack/README.md
|
|
@@ -70,6 +70,11 @@ cd my-pack
|
|
|
70
70
|
./kindgiw dev # boots Kindgi locally and runs this pack, recompiling on save
|
|
71
71
|
```
|
|
72
72
|
|
|
73
|
+
One `kindgi dev` per pack. When one is already running (the person's
|
|
74
|
+
terminal, say), `kindgi dev` exits with code 3 and prints where it is
|
|
75
|
+
(its pid, the console and the API): use that one. Don't start another,
|
|
76
|
+
and don't stop theirs.
|
|
77
|
+
|
|
73
78
|
`kindgi dev` needs Docker and Postgres. It starts Postgres in Docker unless
|
|
74
79
|
`KINDGI_DATABASE_URL` points at yours. It checks the JDK (`JAVA_HOME`'s, or
|
|
75
80
|
`dev.javaHome` in `kindgi.config.json`) and Maven (the pack's `mvnw`, or
|
|
@@ -15,7 +15,7 @@ description: >
|
|
|
15
15
|
type: core
|
|
16
16
|
library: "kindgi (Python)"
|
|
17
17
|
version: "0.1.7"
|
|
18
|
-
sdk_version: "0.1.
|
|
18
|
+
sdk_version: "0.1.7-rc.0"
|
|
19
19
|
pack_languages: [python]
|
|
20
20
|
sources:
|
|
21
21
|
- sdks/python/README.md
|
|
@@ -61,6 +61,11 @@ uv run pytest
|
|
|
61
61
|
uv run kindgi dev # boots Kindgi locally and runs this pack, reloading on save
|
|
62
62
|
```
|
|
63
63
|
|
|
64
|
+
One `kindgi dev` per pack. When one is already running (the person's
|
|
65
|
+
terminal, say), `kindgi dev` exits with code 3 and prints where it is
|
|
66
|
+
(its pid, the console and the API): use that one. Don't start another,
|
|
67
|
+
and don't stop theirs.
|
|
68
|
+
|
|
64
69
|
`kindgi dev` needs Postgres: it starts one in Docker unless
|
|
65
70
|
`KINDGI_DATABASE_URL` points at yours. It runs the pack with
|
|
66
71
|
`.venv/bin/python` (or `dev.python` in `[tool.kindgi]`, e.g.
|