@kindgi/cli 0.1.8 → 0.1.9-rc.1
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 +59 -2
- package/dist/api-address.d.ts +104 -12
- package/dist/api-address.d.ts.map +1 -1
- package/dist/api-address.js +169 -30
- package/dist/api-address.js.map +1 -1
- package/dist/build/host-install.d.ts.map +1 -1
- package/dist/build/host-install.js +5 -2
- package/dist/build/host-install.js.map +1 -1
- package/dist/cli.js +12 -2
- package/dist/cli.js.map +1 -1
- package/dist/commands/approvals.d.ts.map +1 -1
- package/dist/commands/approvals.js +15 -3
- package/dist/commands/approvals.js.map +1 -1
- package/dist/commands/auth.d.ts.map +1 -1
- package/dist/commands/auth.js +27 -0
- package/dist/commands/auth.js.map +1 -1
- package/dist/commands/build.d.ts +18 -0
- package/dist/commands/build.d.ts.map +1 -1
- package/dist/commands/build.js +118 -13
- package/dist/commands/build.js.map +1 -1
- package/dist/commands/conversations.d.ts.map +1 -1
- package/dist/commands/conversations.js +13 -3
- package/dist/commands/conversations.js.map +1 -1
- package/dist/commands/deploy.d.ts.map +1 -1
- package/dist/commands/deploy.js +235 -53
- package/dist/commands/deploy.js.map +1 -1
- package/dist/commands/deployments.d.ts +3 -0
- package/dist/commands/deployments.d.ts.map +1 -0
- package/dist/commands/deployments.js +196 -0
- package/dist/commands/deployments.js.map +1 -0
- package/dist/commands/doctor.d.ts +1 -5
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +42 -22
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/egress.d.ts +9 -0
- package/dist/commands/egress.d.ts.map +1 -0
- package/dist/commands/egress.js +40 -0
- package/dist/commands/egress.js.map +1 -0
- package/dist/commands/env-scoped.d.ts +5 -0
- package/dist/commands/env-scoped.d.ts.map +1 -1
- package/dist/commands/env-scoped.js +64 -19
- package/dist/commands/env-scoped.js.map +1 -1
- package/dist/commands/env.d.ts.map +1 -1
- package/dist/commands/env.js +91 -30
- package/dist/commands/env.js.map +1 -1
- package/dist/commands/environments.d.ts +6 -0
- package/dist/commands/environments.d.ts.map +1 -0
- package/dist/commands/environments.js +166 -0
- package/dist/commands/environments.js.map +1 -0
- package/dist/commands/exports.d.ts.map +1 -1
- package/dist/commands/exports.js +118 -3
- package/dist/commands/exports.js.map +1 -1
- package/dist/commands/feedback.d.ts +1 -2
- package/dist/commands/feedback.d.ts.map +1 -1
- package/dist/commands/feedback.js +55 -24
- package/dist/commands/feedback.js.map +1 -1
- package/dist/commands/helpers.d.ts +6 -0
- package/dist/commands/helpers.d.ts.map +1 -1
- package/dist/commands/helpers.js +8 -0
- package/dist/commands/helpers.js.map +1 -1
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +12 -0
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/license.d.ts +3 -0
- package/dist/commands/license.d.ts.map +1 -1
- package/dist/commands/license.js +1 -1
- package/dist/commands/license.js.map +1 -1
- package/dist/commands/people.d.ts.map +1 -1
- package/dist/commands/people.js +105 -10
- package/dist/commands/people.js.map +1 -1
- package/dist/commands/projects.d.ts.map +1 -1
- package/dist/commands/projects.js +133 -11
- package/dist/commands/projects.js.map +1 -1
- package/dist/commands/promote.d.ts +38 -0
- package/dist/commands/promote.d.ts.map +1 -0
- package/dist/commands/promote.js +371 -0
- package/dist/commands/promote.js.map +1 -0
- package/dist/commands/proposals.d.ts.map +1 -1
- package/dist/commands/proposals.js +2 -1
- package/dist/commands/proposals.js.map +1 -1
- package/dist/commands/providers.d.ts.map +1 -1
- package/dist/commands/providers.js +29 -5
- package/dist/commands/providers.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.d.ts.map +1 -1
- package/dist/commands/secrets.js +65 -40
- package/dist/commands/secrets.js.map +1 -1
- package/dist/commands/sign-in.d.ts +3 -0
- package/dist/commands/sign-in.d.ts.map +1 -0
- package/dist/commands/sign-in.js +61 -0
- package/dist/commands/sign-in.js.map +1 -0
- package/dist/commands/sites.d.ts +3 -0
- package/dist/commands/sites.d.ts.map +1 -0
- package/dist/commands/sites.js +244 -0
- package/dist/commands/sites.js.map +1 -0
- package/dist/commands/tools.d.ts.map +1 -1
- package/dist/commands/tools.js +2 -2
- package/dist/commands/tools.js.map +1 -1
- package/dist/commands/types.d.ts +11 -0
- package/dist/commands/types.d.ts.map +1 -1
- package/dist/commands/webhooks.d.ts.map +1 -1
- package/dist/commands/webhooks.js +38 -2
- package/dist/commands/webhooks.js.map +1 -1
- package/dist/config.d.ts +13 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +20 -7
- package/dist/config.js.map +1 -1
- package/dist/context.d.ts +38 -2
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +12 -1
- package/dist/context.js.map +1 -1
- package/dist/deploy/defaults.d.ts.map +1 -1
- package/dist/deploy/defaults.js +7 -1
- package/dist/deploy/defaults.js.map +1 -1
- package/dist/deploy/pack-service-text.d.ts +29 -0
- package/dist/deploy/pack-service-text.d.ts.map +1 -0
- package/dist/deploy/pack-service-text.js +72 -0
- package/dist/deploy/pack-service-text.js.map +1 -0
- package/dist/deploy/post.d.ts +17 -4
- package/dist/deploy/post.d.ts.map +1 -1
- package/dist/deploy/post.js +177 -60
- package/dist/deploy/post.js.map +1 -1
- package/dist/deploy/promotion-path.d.ts +44 -0
- package/dist/deploy/promotion-path.d.ts.map +1 -0
- package/dist/deploy/promotion-path.js +86 -0
- package/dist/deploy/promotion-path.js.map +1 -0
- package/dist/deploy/response.d.ts +3 -0
- package/dist/deploy/response.d.ts.map +1 -1
- package/dist/deploy/response.js +66 -12
- package/dist/deploy/response.js.map +1 -1
- package/dist/deploy/runners.d.ts +99 -5
- package/dist/deploy/runners.d.ts.map +1 -1
- package/dist/dev/java-builder.d.ts.map +1 -1
- package/dist/dev/java-builder.js +19 -3
- package/dist/dev/java-builder.js.map +1 -1
- package/dist/dev/python-builder.d.ts.map +1 -1
- package/dist/dev/python-builder.js +18 -3
- package/dist/dev/python-builder.js.map +1 -1
- package/dist/dev/runtime-container.d.ts +28 -3
- package/dist/dev/runtime-container.d.ts.map +1 -1
- package/dist/dev/runtime-container.js +103 -36
- 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/scala-builder.d.ts.map +1 -1
- package/dist/dev/scala-builder.js +55 -21
- package/dist/dev/scala-builder.js.map +1 -1
- package/dist/dev/shared-watch.d.ts +30 -0
- package/dist/dev/shared-watch.d.ts.map +1 -1
- package/dist/dev/shared-watch.js +46 -1
- package/dist/dev/shared-watch.js.map +1 -1
- package/dist/env/pack-env-hint.d.ts +52 -0
- package/dist/env/pack-env-hint.d.ts.map +1 -0
- package/dist/env/pack-env-hint.js +57 -0
- package/dist/env/pack-env-hint.js.map +1 -0
- package/dist/env/pack-env-plan.d.ts +2 -0
- package/dist/env/pack-env-plan.d.ts.map +1 -1
- package/dist/env/pack-env-plan.js +2 -1
- package/dist/env/pack-env-plan.js.map +1 -1
- package/dist/env-projects.d.ts +23 -0
- package/dist/env-projects.d.ts.map +1 -0
- package/dist/env-projects.js +28 -0
- package/dist/env-projects.js.map +1 -0
- package/dist/exports/create.d.ts +71 -0
- package/dist/exports/create.d.ts.map +1 -0
- package/dist/exports/create.js +576 -0
- package/dist/exports/create.js.map +1 -0
- package/dist/exports/plan.d.ts +69 -0
- package/dist/exports/plan.d.ts.map +1 -0
- package/dist/exports/plan.js +496 -0
- package/dist/exports/plan.js.map +1 -0
- package/dist/exports/reader.d.ts +48 -0
- package/dist/exports/reader.d.ts.map +1 -0
- package/dist/exports/reader.js +181 -0
- package/dist/exports/reader.js.map +1 -0
- package/dist/feedback/entries.d.ts +53 -0
- package/dist/feedback/entries.d.ts.map +1 -0
- package/dist/feedback/entries.js +173 -0
- package/dist/feedback/entries.js.map +1 -0
- package/dist/feedback/intake.d.ts +37 -0
- package/dist/feedback/intake.d.ts.map +1 -0
- package/dist/feedback/intake.js +101 -0
- package/dist/feedback/intake.js.map +1 -0
- package/dist/feedback/protocol.d.ts +111 -0
- package/dist/feedback/protocol.d.ts.map +1 -0
- package/dist/feedback/protocol.js +143 -0
- package/dist/feedback/protocol.js.map +1 -0
- package/dist/feedback/redact.d.ts +34 -0
- package/dist/feedback/redact.d.ts.map +1 -0
- package/dist/feedback/redact.js +258 -0
- package/dist/feedback/redact.js.map +1 -0
- package/dist/feedback/report.d.ts +51 -0
- package/dist/feedback/report.d.ts.map +1 -0
- package/dist/feedback/report.js +122 -0
- package/dist/feedback/report.js.map +1 -0
- package/dist/feedback/run.d.ts +21 -0
- package/dist/feedback/run.d.ts.map +1 -0
- package/dist/feedback/run.js +578 -0
- package/dist/feedback/run.js.map +1 -0
- package/dist/feedback/store.d.ts +24 -0
- package/dist/feedback/store.d.ts.map +1 -0
- package/dist/feedback/store.js +117 -0
- package/dist/feedback/store.js.map +1 -0
- package/dist/main.d.ts +6 -0
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +86 -5
- package/dist/main.js.map +1 -1
- package/dist/node-version.d.ts +13 -0
- package/dist/node-version.d.ts.map +1 -0
- package/dist/node-version.js +37 -0
- package/dist/node-version.js.map +1 -0
- package/dist/parse.d.ts +8 -2
- package/dist/parse.d.ts.map +1 -1
- package/dist/parse.js +7 -2
- package/dist/parse.js.map +1 -1
- package/dist/project-ref.d.ts +44 -0
- package/dist/project-ref.d.ts.map +1 -0
- package/dist/project-ref.js +69 -0
- package/dist/project-ref.js.map +1 -0
- package/dist/sdk-skills/kindgi-authoring-agents/SKILL.md +15 -2
- package/dist/sdk-skills/kindgi-authoring-flows/SKILL.md +1 -1
- package/dist/sdk-skills/kindgi-authoring-guardrails/SKILL.md +44 -7
- package/dist/sdk-skills/kindgi-authoring-mcp-servers/SKILL.md +11 -2
- package/dist/sdk-skills/kindgi-authoring-providers/SKILL.md +60 -13
- package/dist/sdk-skills/kindgi-authoring-tools/SKILL.md +19 -2
- package/dist/sdk-skills/kindgi-framework-feedback/SKILL.md +82 -3
- package/dist/sdk-skills/kindgi-getting-started/SKILL.md +1 -1
- package/dist/sdk-skills/kindgi-java-authoring-agents/SKILL.md +17 -3
- package/dist/sdk-skills/kindgi-java-authoring-flows/SKILL.md +1 -1
- package/dist/sdk-skills/kindgi-java-authoring-guardrails/SKILL.md +43 -6
- package/dist/sdk-skills/kindgi-java-authoring-tools/SKILL.md +19 -2
- package/dist/sdk-skills/kindgi-java-getting-started/SKILL.md +1 -1
- package/dist/sdk-skills/kindgi-python-authoring-agents/SKILL.md +17 -3
- package/dist/sdk-skills/kindgi-python-authoring-flows/SKILL.md +1 -1
- package/dist/sdk-skills/kindgi-python-authoring-guardrails/SKILL.md +49 -13
- package/dist/sdk-skills/kindgi-python-authoring-tools/SKILL.md +27 -3
- package/dist/sdk-skills/kindgi-python-getting-started/SKILL.md +1 -1
- package/dist/sdk-skills/kindgi-scala-authoring-agents/SKILL.md +17 -3
- package/dist/sdk-skills/kindgi-scala-authoring-flows/SKILL.md +1 -1
- package/dist/sdk-skills/kindgi-scala-authoring-guardrails/SKILL.md +43 -6
- package/dist/sdk-skills/kindgi-scala-authoring-tools/SKILL.md +19 -2
- package/dist/sdk-skills/kindgi-scala-getting-started/SKILL.md +1 -1
- package/dist/sdk-skills/kindgi-using/SKILL.md +1 -1
- package/dist/slug.d.ts +18 -0
- package/dist/slug.d.ts.map +1 -0
- package/dist/slug.js +29 -0
- package/dist/slug.js.map +1 -0
- package/dist/templates/drupal/AGENTS.md +2 -0
- package/dist/templates/java/AGENTS.md +2 -0
- package/dist/templates/minimal/AGENTS.md +2 -0
- package/dist/templates/python/AGENTS.md +2 -0
- package/dist/templates/sample/AGENTS.md +2 -0
- package/dist/templates/scala/AGENTS.md +2 -0
- package/dist/templates/woocommerce/AGENTS.md +11 -4
- package/dist/templates/woocommerce/README.md.tmpl +47 -4
- package/dist/templates/woocommerce/agents/store-agent/index.test.ts.tmpl +13 -0
- package/dist/templates/woocommerce/agents/store-agent/index.ts.tmpl +11 -1
- package/dist/templates/woocommerce/tools/publish-product/index.ts.tmpl +7 -1
- package/dist/templates/woocommerce/tools/refund/index.ts.tmpl +7 -2
- package/dist/templates/woocommerce/tools/refund-large/index.ts.tmpl +8 -2
- package/dist/templates/woocommerce/tools/set-price/index.ts.tmpl +6 -0
- package/dist/value-target.d.ts +139 -0
- package/dist/value-target.d.ts.map +1 -0
- package/dist/value-target.js +231 -0
- package/dist/value-target.js.map +1 -0
- package/package.json +13 -13
|
@@ -39,6 +39,19 @@ describe('{{PACK_ID}}.store-agent', () => {
|
|
|
39
39
|
expect(line).toMatch(/look it up again before you say what it has been refunded/);
|
|
40
40
|
});
|
|
41
41
|
|
|
42
|
+
test('each tool that waits for a person needs a reviewer other than the person who asked', () => {
|
|
43
|
+
const tools = storeAgent.conversationPolicy?.hitl?.tools;
|
|
44
|
+
const free = new Set(
|
|
45
|
+
Object.entries(tools?.overrides ?? {})
|
|
46
|
+
.filter(([, mode]) => mode === 'never_ask')
|
|
47
|
+
.map(([id]) => id),
|
|
48
|
+
);
|
|
49
|
+
const waiting = storeAgent.tools.map((t) => t.id).filter((id) => !free.has(id));
|
|
50
|
+
const fourEyes = storeAgent.conversationPolicy?.hitl?.separateApprover;
|
|
51
|
+
if (typeof fourEyes !== 'object') throw new Error('separateApprover is set per tool');
|
|
52
|
+
for (const id of waiting) expect(fourEyes.overrides?.[id], id).toBe(true);
|
|
53
|
+
});
|
|
54
|
+
|
|
42
55
|
test("its instructions don't tell it to say a call waits: it never answers while one does", () => {
|
|
43
56
|
const { instructions } = storeAgent;
|
|
44
57
|
if (typeof instructions !== 'string') throw new Error('The instructions are a prompt reference now: check the prompt.');
|
|
@@ -11,7 +11,10 @@
|
|
|
11
11
|
// - a larger refund, a price change and publishing a product each wait
|
|
12
12
|
// for a reviewer, who approves or rejects it in the console's approvals
|
|
13
13
|
// inbox (or by email). The tool runs only after an approval; a
|
|
14
|
-
// rejection is recorded in the audit, and the agent says so
|
|
14
|
+
// rejection is recorded in the audit, and the agent says so;
|
|
15
|
+
// - those three need a reviewer other than the person who asked
|
|
16
|
+
// (`separateApprover`): whoever's turn asked for a large refund can't
|
|
17
|
+
// approve it themselves.
|
|
15
18
|
import { defineAgent } from '@kindgi/sdk/define';
|
|
16
19
|
import type { AgentId, GuardrailId, Semver } from '@kindgi/sdk/types';
|
|
17
20
|
|
|
@@ -54,6 +57,13 @@ const defined = defineAgent({
|
|
|
54
57
|
},
|
|
55
58
|
},
|
|
56
59
|
defaultReviewerRole: 'standard',
|
|
60
|
+
separateApprover: {
|
|
61
|
+
overrides: {
|
|
62
|
+
'{{PACK_ID}}.woo.refund-large': true,
|
|
63
|
+
'{{PACK_ID}}.woo.set-price': true,
|
|
64
|
+
'{{PACK_ID}}.woo.publish-product': true,
|
|
65
|
+
},
|
|
66
|
+
},
|
|
57
67
|
},
|
|
58
68
|
},
|
|
59
69
|
// A refused call goes back to the model instead of failing the turn: when
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
// {{PACK_ID}}.woo.publish-product — publish a draft product, so shoppers can
|
|
2
2
|
// see it. A store change, so the agent's approval policy has a person
|
|
3
|
-
// approve every call.
|
|
3
|
+
// approve every call. The tool also declares it waits in a run no person
|
|
4
|
+
// started, so even an agent whose policy says `never_ask` can't run it
|
|
5
|
+
// there unasked.
|
|
4
6
|
import { defineTool } from '@kindgi/sdk/define';
|
|
5
7
|
import type { ToolId } from '@kindgi/sdk/types';
|
|
6
8
|
import { z } from 'zod';
|
|
@@ -15,6 +17,10 @@ const defined = defineTool({
|
|
|
15
17
|
output: z.object({ productId: z.number().int(), name: z.string(), status: z.string() }),
|
|
16
18
|
effects: [{ kind: 'writes', resource: 'external:woocommerce' }],
|
|
17
19
|
mutating: true,
|
|
20
|
+
// In a run no person started (a webhook, a schedule or a service account's
|
|
21
|
+
// key started it), every call waits for a person's yes, whatever the
|
|
22
|
+
// agent's approval policy says.
|
|
23
|
+
needsApprovalWhenUnattended: true,
|
|
18
24
|
needsSpec: WOO_NEEDS,
|
|
19
25
|
handler: async ({ productId }, ctx) => {
|
|
20
26
|
const product = await woo<{ readonly id: number; readonly name: string; readonly status: string }>(
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
// {{PACK_ID}}.woo.refund — a refund of up to 100 (in the order's currency) on
|
|
2
|
-
// an order, with no one to approve it.
|
|
2
|
+
// an order, with no one to approve it when a person asks for it. In a run a
|
|
3
|
+
// webhook or a schedule started, it waits for a person's yes.
|
|
3
4
|
//
|
|
4
5
|
// Kindgi's approval rules key on the tool, not on its arguments, so "refunds
|
|
5
6
|
// over 100 need a person" is two tools: this one, which the agent's policy
|
|
@@ -39,7 +40,7 @@ export const RefundOutput = z.object({
|
|
|
39
40
|
|
|
40
41
|
const defined = defineTool({
|
|
41
42
|
id: '{{PACK_ID}}.woo.refund' as ToolId,
|
|
42
|
-
description: `Refund up to ${REFUND_LIMIT} on an order, counting what it has been refunded already. Runs without approval. For more, use {{PACK_ID}}.woo.refund-large, which waits for a person.`,
|
|
43
|
+
description: `Refund up to ${REFUND_LIMIT} on an order, counting what it has been refunded already. Runs without approval when a person starts the turn; in a run a webhook or schedule started, it waits for a person. For more, use {{PACK_ID}}.woo.refund-large, which waits for a person.`,
|
|
43
44
|
version: '{{PACK_VERSION}}',
|
|
44
45
|
input: RefundInput,
|
|
45
46
|
output: RefundOutput,
|
|
@@ -48,6 +49,10 @@ const defined = defineTool({
|
|
|
48
49
|
{ kind: 'external-side-effect', notes: 'Refunds money to the customer.' },
|
|
49
50
|
],
|
|
50
51
|
mutating: true,
|
|
52
|
+
// In a run no person started (a webhook, a schedule or a service account's
|
|
53
|
+
// key started it), every call waits for a person's yes, whatever the
|
|
54
|
+
// agent's approval policy says.
|
|
55
|
+
needsApprovalWhenUnattended: true,
|
|
51
56
|
needsSpec: REFUND_NEEDS,
|
|
52
57
|
// The limit is checked after `createRefund` has looked for this call's own
|
|
53
58
|
// refund: a call run again after its refund went out returns that refund,
|
|
@@ -2,8 +2,10 @@
|
|
|
2
2
|
// agent's approval policy marks it `always_ask`: every call waits for a
|
|
3
3
|
// person to approve it, and the refund happens only after they do, once:
|
|
4
4
|
// the step resumed after the approval, or run again after a crash, finds the
|
|
5
|
-
// refund it made (`createRefund` in `lib/woo.ts`).
|
|
6
|
-
//
|
|
5
|
+
// refund it made (`createRefund` in `lib/woo.ts`). The tool also declares
|
|
6
|
+
// it waits in a run no person started, so even an agent whose policy says
|
|
7
|
+
// `never_ask` can't run it there unasked. See `{{PACK_ID}}.woo.refund` for
|
|
8
|
+
// why the store has two refund tools.
|
|
7
9
|
import { defineTool } from '@kindgi/sdk/define';
|
|
8
10
|
import type { ToolId } from '@kindgi/sdk/types';
|
|
9
11
|
import { z } from 'zod';
|
|
@@ -33,6 +35,10 @@ const defined = defineTool({
|
|
|
33
35
|
{ kind: 'external-side-effect', notes: 'Refunds money to the customer.' },
|
|
34
36
|
],
|
|
35
37
|
mutating: true,
|
|
38
|
+
// In a run no person started (a webhook, a schedule or a service account's
|
|
39
|
+
// key started it), every call waits for a person's yes, whatever the
|
|
40
|
+
// agent's approval policy says.
|
|
41
|
+
needsApprovalWhenUnattended: true,
|
|
36
42
|
needsSpec: REFUND_NEEDS,
|
|
37
43
|
handler: async (input, ctx) => createRefund(ctx, input),
|
|
38
44
|
});
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
// {{PACK_ID}}.woo.set-price — change a product's regular price. A store
|
|
2
2
|
// change, so the agent's approval policy has a person approve every call.
|
|
3
|
+
// The tool also declares it waits in a run no person started, so even an
|
|
4
|
+
// agent whose policy says `never_ask` can't run it there unasked.
|
|
3
5
|
import { defineTool } from '@kindgi/sdk/define';
|
|
4
6
|
import type { ToolId } from '@kindgi/sdk/types';
|
|
5
7
|
import { z } from 'zod';
|
|
@@ -17,6 +19,10 @@ const defined = defineTool({
|
|
|
17
19
|
output: z.object({ productId: z.number().int(), name: z.string(), regularPrice: z.string() }),
|
|
18
20
|
effects: [{ kind: 'writes', resource: 'external:woocommerce' }],
|
|
19
21
|
mutating: true,
|
|
22
|
+
// In a run no person started (a webhook, a schedule or a service account's
|
|
23
|
+
// key started it), every call waits for a person's yes, whatever the
|
|
24
|
+
// agent's approval policy says.
|
|
25
|
+
needsApprovalWhenUnattended: true,
|
|
20
26
|
needsSpec: WOO_NEEDS,
|
|
21
27
|
handler: async ({ productId, regularPrice }, ctx) => {
|
|
22
28
|
const product = await woo<{ readonly id: number; readonly name: string; readonly regular_price: string }>(
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import type { KindgiClient } from '@kindgi/client';
|
|
2
|
+
import type { CommandResult } from './commands/types.js';
|
|
3
|
+
import type { CommandContext } from './context.js';
|
|
4
|
+
/**
|
|
5
|
+
* What a runtime says it serves (whoami's `servedEnv`): the env its tools'
|
|
6
|
+
* values are read under, and whether it refuses values under any other.
|
|
7
|
+
*/
|
|
8
|
+
export interface ServedEnv {
|
|
9
|
+
readonly envName: string;
|
|
10
|
+
readonly refusesOtherEnvs: boolean;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* The runtime's `servedEnv`, or `undefined` when it doesn't say (a runtime
|
|
14
|
+
* that serves no env, or an older one) or can't be asked. Then every default
|
|
15
|
+
* stays as it was, and a runtime that refuses other envs still refuses the
|
|
16
|
+
* write itself (`409 env-not-served`).
|
|
17
|
+
*/
|
|
18
|
+
export declare function servedEnvOf(client: () => KindgiClient): Promise<ServedEnv | undefined>;
|
|
19
|
+
/**
|
|
20
|
+
* A pack's environments: each name in its config's `environments`, with
|
|
21
|
+
* the project (id or slug) its `project` names, if it names one.
|
|
22
|
+
*/
|
|
23
|
+
export type PackEnvironments = Readonly<Record<string, string | undefined>>;
|
|
24
|
+
/** A pack environment `--env` named, and the project its config names for it. */
|
|
25
|
+
export interface MappedEnvironment {
|
|
26
|
+
readonly name: string;
|
|
27
|
+
/** As the config names it: an id or a slug. */
|
|
28
|
+
readonly projectRef: string;
|
|
29
|
+
}
|
|
30
|
+
/** The env a value command acts under, or why there's none. */
|
|
31
|
+
export type ValueTarget = {
|
|
32
|
+
readonly kind: 'ok';
|
|
33
|
+
readonly envName: string;
|
|
34
|
+
/**
|
|
35
|
+
* `served`: `--env` was left out, and the runtime refuses other envs.
|
|
36
|
+
* `environment`: `--env` named a pack environment with a project, on
|
|
37
|
+
* such a runtime.
|
|
38
|
+
*/
|
|
39
|
+
readonly from: 'flag' | 'served' | 'default' | 'environment';
|
|
40
|
+
/** With `from: 'environment'`: the environment, whose project is the value's scope. */
|
|
41
|
+
readonly environment?: MappedEnvironment;
|
|
42
|
+
}
|
|
43
|
+
/** No `--env`, and neither a default nor a runtime that names one: the command's own message. */
|
|
44
|
+
| {
|
|
45
|
+
readonly kind: 'missing';
|
|
46
|
+
} | {
|
|
47
|
+
readonly kind: 'refused';
|
|
48
|
+
readonly stderr: string;
|
|
49
|
+
};
|
|
50
|
+
/** A pack environment `--env` named, with its project resolved to an id. */
|
|
51
|
+
export interface ResolvedEnvironment extends MappedEnvironment {
|
|
52
|
+
readonly projectId: string;
|
|
53
|
+
}
|
|
54
|
+
/** `ValueTarget` for a command: a named environment's project resolved to its id. */
|
|
55
|
+
export type CommandValueTarget = (Extract<ValueTarget, {
|
|
56
|
+
kind: 'ok';
|
|
57
|
+
}> & {
|
|
58
|
+
readonly environment?: ResolvedEnvironment;
|
|
59
|
+
}) | Exclude<ValueTarget, {
|
|
60
|
+
kind: 'ok';
|
|
61
|
+
}>;
|
|
62
|
+
/**
|
|
63
|
+
* Where a value command's value goes. `flag` is `--env` as given, `fallback`
|
|
64
|
+
* the command's own default (none: `--env` is required).
|
|
65
|
+
*
|
|
66
|
+
* On a runtime that refuses other envs, `--env` defaults to the env it
|
|
67
|
+
* serves, and a write (`write`) under another is refused here, before
|
|
68
|
+
* anything is sent: it would never be read. A read or a delete may still
|
|
69
|
+
* name another env, to find and remove what was stored there before.
|
|
70
|
+
* There, `--env` may also name one of the pack's `environments` that has a
|
|
71
|
+
* `project`: the value is that project's, under the env the runtime serves.
|
|
72
|
+
* The environment picks the scope, so a `--scope` with it (`scope`, as
|
|
73
|
+
* given) may only name that project: `project`, or `project:<its id>`
|
|
74
|
+
* (`valueTargetFor` compares the id).
|
|
75
|
+
* Anywhere else: `flag`, then `fallback`, as before.
|
|
76
|
+
*
|
|
77
|
+
* `what` names what would be stored, for the refusal (`a secret`).
|
|
78
|
+
* `mayOmit: false` when leaving `--env` out isn't the way (it picks more
|
|
79
|
+
* than the env), so the refusal doesn't suggest it. A refused `local`
|
|
80
|
+
* also says where `local` is: a `kindgi dev` runtime, which the CLI talks
|
|
81
|
+
* to in its pack. `environments` is the pack's (none: outside a pack).
|
|
82
|
+
*/
|
|
83
|
+
export declare function resolveValueTarget(input: {
|
|
84
|
+
readonly flag: string | undefined;
|
|
85
|
+
readonly fallback?: string;
|
|
86
|
+
readonly served: ServedEnv | undefined;
|
|
87
|
+
readonly write: boolean;
|
|
88
|
+
readonly what: string;
|
|
89
|
+
readonly mayOmit?: boolean;
|
|
90
|
+
readonly environments?: PackEnvironments;
|
|
91
|
+
readonly scope?: string;
|
|
92
|
+
}): ValueTarget;
|
|
93
|
+
/** A pack config's environments, each with the project it names (`projectOfEnv`). */
|
|
94
|
+
export declare function environmentsOf(config: {
|
|
95
|
+
readonly environments?: unknown;
|
|
96
|
+
}): PackEnvironments;
|
|
97
|
+
/** What a value command passes to `valueEnvFor` and `valueTargetFor`. */
|
|
98
|
+
interface ValueTargetOptions {
|
|
99
|
+
readonly write: boolean;
|
|
100
|
+
readonly what: string;
|
|
101
|
+
readonly fallback?: string;
|
|
102
|
+
readonly mayOmit?: boolean;
|
|
103
|
+
readonly scope?: string;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* `resolveValueTarget` for a command, with a named pack environment's
|
|
107
|
+
* project as the config gives it (not looked up): for a command that uses
|
|
108
|
+
* the env alone. Asks the runtime what it serves only when that can change
|
|
109
|
+
* the answer: when `--env` is left out, the command writes, or `--env`
|
|
110
|
+
* names one of the pack's environments with a project. The pack's
|
|
111
|
+
* environments are read only when `--env` is given. On a runtime that
|
|
112
|
+
* refuses other envs, a pack config that can't be read is refused, before
|
|
113
|
+
* anything is sent: whether `--env` names one of its environments isn't
|
|
114
|
+
* known.
|
|
115
|
+
*/
|
|
116
|
+
export declare function valueEnvFor(ctx: CommandContext, flag: string | undefined, options: ValueTargetOptions): Promise<ValueTarget>;
|
|
117
|
+
/**
|
|
118
|
+
* `valueEnvFor`, with the named pack environment's project looked up (a
|
|
119
|
+
* slug that names none or several is refused), and a `--scope` naming a
|
|
120
|
+
* project compared with it.
|
|
121
|
+
*/
|
|
122
|
+
export declare function valueTargetFor(ctx: CommandContext, flag: string | undefined, options: ValueTargetOptions): Promise<CommandValueTarget>;
|
|
123
|
+
/**
|
|
124
|
+
* A command's result, with the line saying which project and env a pack
|
|
125
|
+
* environment named by `--env` stood for. Nothing for any other target.
|
|
126
|
+
*/
|
|
127
|
+
export declare function withEnvironmentNote(result: CommandResult, target: {
|
|
128
|
+
readonly envName: string;
|
|
129
|
+
readonly environment?: ResolvedEnvironment;
|
|
130
|
+
}): CommandResult;
|
|
131
|
+
/**
|
|
132
|
+
* A command's result for `thrown`, with where `local` is added when the
|
|
133
|
+
* runtime refused a value under `local` (`409 env-not-served`). For a write
|
|
134
|
+
* the CLI sends anyway, since only the runtime knows whether a registration
|
|
135
|
+
* still reads it there.
|
|
136
|
+
*/
|
|
137
|
+
export declare function withLocalEnvHint(result: CommandResult, thrown: unknown, envName: string): CommandResult;
|
|
138
|
+
export {};
|
|
139
|
+
//# sourceMappingURL=value-target.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"value-target.d.ts","sourceRoot":"","sources":["../src/value-target.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAInD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAKnD;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;CACpC;AAED;;;;;GAKG;AACH,wBAAsB,WAAW,CAAC,MAAM,EAAE,MAAM,YAAY,GAAG,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC,CAS5F;AAED;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;AAE5E,iFAAiF;AACjF,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,+CAA+C;IAC/C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,+DAA+D;AAC/D,MAAM,MAAM,WAAW,GACnB;IACE,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB;;;;OAIG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,GAAG,aAAa,CAAC;IAC7D,uFAAuF;IACvF,QAAQ,CAAC,WAAW,CAAC,EAAE,iBAAiB,CAAC;CAC1C;AACH,iGAAiG;GAC/F;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;CAAE,GAC5B;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE1D,4EAA4E;AAC5E,MAAM,WAAW,mBAAoB,SAAQ,iBAAiB;IAC5D,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,qFAAqF;AACrF,MAAM,MAAM,kBAAkB,GAC1B,CAAC,OAAO,CAAC,WAAW,EAAE;IAAE,IAAI,EAAE,IAAI,CAAA;CAAE,CAAC,GAAG;IAAE,QAAQ,CAAC,WAAW,CAAC,EAAE,mBAAmB,CAAA;CAAE,CAAC,GACvF,OAAO,CAAC,WAAW,EAAE;IAAE,IAAI,EAAE,IAAI,CAAA;CAAE,CAAC,CAAC;AAEzC;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE;IACxC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,YAAY,CAAC,EAAE,gBAAgB,CAAC;IACzC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB,GAAG,WAAW,CAqBd;AAyED,qFAAqF;AACrF,wBAAgB,cAAc,CAAC,MAAM,EAAE;IAAE,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,gBAAgB,CAM5F;AAED,yEAAyE;AACzE,UAAU,kBAAkB;IAC1B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,WAAW,CAC/B,GAAG,EAAE,cAAc,EACnB,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,WAAW,CAAC,CA0BtB;AAED;;;;GAIG;AACH,wBAAsB,cAAc,CAClC,GAAG,EAAE,cAAc,EACnB,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,kBAAkB,CAAC,CAqB7B;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE;IAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,mBAAmB,CAAA;CAAE,GAC/E,aAAa,CAWf;AASD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,OAAO,EACf,OAAO,EAAE,MAAM,GACd,aAAa,CAIf"}
|
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
// Copyright (C) 2026 Kindgi Inc.
|
|
3
|
+
import { isAbsolute, resolve } from 'node:path';
|
|
4
|
+
import { LOCAL_ENV_NAME } from '@kindgi/secrets-dotenv';
|
|
5
|
+
import { projectOfEnv } from './commands/build.js';
|
|
6
|
+
import { UsageError, extractKindgiError } from './errors.js';
|
|
7
|
+
import { loadPackConfig } from './pack-config.js';
|
|
8
|
+
import { resolveProjectRef } from './project-ref.js';
|
|
9
|
+
/**
|
|
10
|
+
* The runtime's `servedEnv`, or `undefined` when it doesn't say (a runtime
|
|
11
|
+
* that serves no env, or an older one) or can't be asked. Then every default
|
|
12
|
+
* stays as it was, and a runtime that refuses other envs still refuses the
|
|
13
|
+
* write itself (`409 env-not-served`).
|
|
14
|
+
*/
|
|
15
|
+
export async function servedEnvOf(client) {
|
|
16
|
+
try {
|
|
17
|
+
const served = (await client().identity.whoami()).servedEnv;
|
|
18
|
+
return served === undefined
|
|
19
|
+
? undefined
|
|
20
|
+
: { envName: served.envName, refusesOtherEnvs: served.refusesOtherEnvs };
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
return undefined;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Where a value command's value goes. `flag` is `--env` as given, `fallback`
|
|
28
|
+
* the command's own default (none: `--env` is required).
|
|
29
|
+
*
|
|
30
|
+
* On a runtime that refuses other envs, `--env` defaults to the env it
|
|
31
|
+
* serves, and a write (`write`) under another is refused here, before
|
|
32
|
+
* anything is sent: it would never be read. A read or a delete may still
|
|
33
|
+
* name another env, to find and remove what was stored there before.
|
|
34
|
+
* There, `--env` may also name one of the pack's `environments` that has a
|
|
35
|
+
* `project`: the value is that project's, under the env the runtime serves.
|
|
36
|
+
* The environment picks the scope, so a `--scope` with it (`scope`, as
|
|
37
|
+
* given) may only name that project: `project`, or `project:<its id>`
|
|
38
|
+
* (`valueTargetFor` compares the id).
|
|
39
|
+
* Anywhere else: `flag`, then `fallback`, as before.
|
|
40
|
+
*
|
|
41
|
+
* `what` names what would be stored, for the refusal (`a secret`).
|
|
42
|
+
* `mayOmit: false` when leaving `--env` out isn't the way (it picks more
|
|
43
|
+
* than the env), so the refusal doesn't suggest it. A refused `local`
|
|
44
|
+
* also says where `local` is: a `kindgi dev` runtime, which the CLI talks
|
|
45
|
+
* to in its pack. `environments` is the pack's (none: outside a pack).
|
|
46
|
+
*/
|
|
47
|
+
export function resolveValueTarget(input) {
|
|
48
|
+
const { flag, served } = input;
|
|
49
|
+
if (served?.refusesOtherEnvs === true) {
|
|
50
|
+
if (flag === undefined)
|
|
51
|
+
return { kind: 'ok', envName: served.envName, from: 'served' };
|
|
52
|
+
const projectRef = input.environments?.[flag];
|
|
53
|
+
if (projectRef !== undefined) {
|
|
54
|
+
return environmentTarget({ name: flag, projectRef }, served, input.scope);
|
|
55
|
+
}
|
|
56
|
+
if (flag !== served.envName && input.write) {
|
|
57
|
+
return {
|
|
58
|
+
kind: 'refused',
|
|
59
|
+
stderr: `env-not-served: this runtime keeps its values under \`${served.envName}\` only, so ${input.what} under \`${flag}\` would never be read. Use --env=${served.envName}${input.mayOmit === false ? '' : ', or leave --env out'}.\n${environmentsHint(flag, input.environments)}${localEnvHint(flag)}`,
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
return { kind: 'ok', envName: flag, from: 'flag' };
|
|
63
|
+
}
|
|
64
|
+
if (flag !== undefined)
|
|
65
|
+
return { kind: 'ok', envName: flag, from: 'flag' };
|
|
66
|
+
if (input.fallback !== undefined) {
|
|
67
|
+
return { kind: 'ok', envName: input.fallback, from: 'default' };
|
|
68
|
+
}
|
|
69
|
+
return { kind: 'missing' };
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* `--env` naming a pack environment with a project, on a runtime that
|
|
73
|
+
* refuses other envs: that project, under the env the runtime serves. A
|
|
74
|
+
* `--scope` (`scope`, as given) may only name that project.
|
|
75
|
+
*/
|
|
76
|
+
function environmentTarget(environment, served, scope) {
|
|
77
|
+
const { name, projectRef } = environment;
|
|
78
|
+
if (scope === 'project:') {
|
|
79
|
+
return {
|
|
80
|
+
kind: 'refused',
|
|
81
|
+
stderr: 'Malformed --scope: expected --scope=project:<projectId>, got "project:".\n',
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
if (scope !== undefined && scope !== 'project' && !scope.startsWith('project:')) {
|
|
85
|
+
return {
|
|
86
|
+
kind: 'refused',
|
|
87
|
+
stderr: `--env=${name} is the pack's environment ${name}, so its scope is its project, ${projectRef}, not ${scope}. For a value every environment without its own reads, leave --env out (--scope=${scope}).\n`,
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
return { kind: 'ok', envName: served.envName, from: 'environment', environment };
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* What the pack's environments offer in place of a refused `--env`: the
|
|
94
|
+
* ones with a project, and how to give one a project. Nothing outside a
|
|
95
|
+
* pack, or for `local`, which has its own (`localEnvHint`).
|
|
96
|
+
*/
|
|
97
|
+
function environmentsHint(flag, environments) {
|
|
98
|
+
if (environments === undefined || flag === LOCAL_ENV_NAME)
|
|
99
|
+
return '';
|
|
100
|
+
const mapped = Object.entries(environments).filter((entry) => entry[1] !== undefined);
|
|
101
|
+
const unmapped = flag in environments
|
|
102
|
+
? `The pack's environment ${flag} names no project: add \`environments.${flag}.project\` to kindgi.config.ts, and --env=${flag} stores values in that project.\n`
|
|
103
|
+
: '';
|
|
104
|
+
if (mapped.length === 0) {
|
|
105
|
+
return (unmapped ||
|
|
106
|
+
"No environment in the pack's config names a project: add `environments.<name>.project` to kindgi.config.ts, and --env=<name> stores values in that project.\n");
|
|
107
|
+
}
|
|
108
|
+
const list = mapped.map(([name, project]) => `${name} (project ${project})`).join(', ');
|
|
109
|
+
return `${unmapped}The pack's environments: ${list}. --env=<one of them> stores a value in its project.\n`;
|
|
110
|
+
}
|
|
111
|
+
/** The environments of the pack at `--path`, else the cwd. */
|
|
112
|
+
async function packEnvironmentsOf(ctx) {
|
|
113
|
+
const raw = ctx.options.path;
|
|
114
|
+
const dir = typeof raw === 'string' && raw !== '' ? raw : '.';
|
|
115
|
+
const loaded = await loadPackConfig(ctx, isAbsolute(dir) ? dir : resolve(ctx.cwd, dir));
|
|
116
|
+
if (loaded.kind === 'ok')
|
|
117
|
+
return { kind: 'ok', environments: environmentsOf(loaded.config) };
|
|
118
|
+
return loaded.kind === 'invalid'
|
|
119
|
+
? { kind: 'invalid', message: loaded.message }
|
|
120
|
+
: { kind: 'missing' };
|
|
121
|
+
}
|
|
122
|
+
/** A pack config's environments, each with the project it names (`projectOfEnv`). */
|
|
123
|
+
export function environmentsOf(config) {
|
|
124
|
+
const { environments } = config;
|
|
125
|
+
if (environments === null || typeof environments !== 'object')
|
|
126
|
+
return {};
|
|
127
|
+
return Object.fromEntries(Object.keys(environments).map((name) => [name, projectOfEnv(config, name)]));
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* `resolveValueTarget` for a command, with a named pack environment's
|
|
131
|
+
* project as the config gives it (not looked up): for a command that uses
|
|
132
|
+
* the env alone. Asks the runtime what it serves only when that can change
|
|
133
|
+
* the answer: when `--env` is left out, the command writes, or `--env`
|
|
134
|
+
* names one of the pack's environments with a project. The pack's
|
|
135
|
+
* environments are read only when `--env` is given. On a runtime that
|
|
136
|
+
* refuses other envs, a pack config that can't be read is refused, before
|
|
137
|
+
* anything is sent: whether `--env` names one of its environments isn't
|
|
138
|
+
* known.
|
|
139
|
+
*/
|
|
140
|
+
export async function valueEnvFor(ctx, flag, options) {
|
|
141
|
+
let served;
|
|
142
|
+
let read = { kind: 'missing' };
|
|
143
|
+
if (flag === undefined || options.write) {
|
|
144
|
+
served = await servedEnvOf(ctx.client);
|
|
145
|
+
if (flag !== undefined && served?.refusesOtherEnvs === true) {
|
|
146
|
+
read = await packEnvironmentsOf(ctx);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
else {
|
|
150
|
+
read = await packEnvironmentsOf(ctx);
|
|
151
|
+
if (read.kind === 'invalid' || (read.kind === 'ok' && read.environments[flag] !== undefined)) {
|
|
152
|
+
served = await servedEnvOf(ctx.client);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
if (read.kind === 'invalid' && flag !== undefined && served?.refusesOtherEnvs === true) {
|
|
156
|
+
return {
|
|
157
|
+
kind: 'refused',
|
|
158
|
+
stderr: `Couldn't read the pack config: ${read.message.trimEnd()}\nOn this runtime, --env=${flag} may name one of the pack's environments, whose values are in its project, so nothing was sent. Fix the config and run this again.\n`,
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
return resolveValueTarget({
|
|
162
|
+
flag,
|
|
163
|
+
served,
|
|
164
|
+
...(read.kind === 'ok' && { environments: read.environments }),
|
|
165
|
+
...options,
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* `valueEnvFor`, with the named pack environment's project looked up (a
|
|
170
|
+
* slug that names none or several is refused), and a `--scope` naming a
|
|
171
|
+
* project compared with it.
|
|
172
|
+
*/
|
|
173
|
+
export async function valueTargetFor(ctx, flag, options) {
|
|
174
|
+
const target = await valueEnvFor(ctx, flag, options);
|
|
175
|
+
if (target.kind !== 'ok' || target.environment === undefined) {
|
|
176
|
+
return target;
|
|
177
|
+
}
|
|
178
|
+
const { name, projectRef } = target.environment;
|
|
179
|
+
let projectId;
|
|
180
|
+
try {
|
|
181
|
+
projectId = await resolveProjectRef(ctx, projectRef);
|
|
182
|
+
}
|
|
183
|
+
catch (err) {
|
|
184
|
+
if (!(err instanceof UsageError))
|
|
185
|
+
throw err;
|
|
186
|
+
return { kind: 'refused', stderr: `The pack's environment ${name}: ${err.message}\n` };
|
|
187
|
+
}
|
|
188
|
+
const named = options.scope?.startsWith('project:') === true ? options.scope.slice(8) : undefined;
|
|
189
|
+
if (named !== undefined && named !== projectId) {
|
|
190
|
+
return {
|
|
191
|
+
kind: 'refused',
|
|
192
|
+
stderr: `--env=${name} is the pack's environment ${name}, project ${projectRef} (${projectId}), but --scope names project ${named}. Name one: --env=${name} with --scope=project, or --scope=project:${named} without --env.\n`,
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
return { ...target, environment: { name, projectRef, projectId } };
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* A command's result, with the line saying which project and env a pack
|
|
199
|
+
* environment named by `--env` stood for. Nothing for any other target.
|
|
200
|
+
*/
|
|
201
|
+
export function withEnvironmentNote(result, target) {
|
|
202
|
+
const { environment } = target;
|
|
203
|
+
if (environment === undefined)
|
|
204
|
+
return result;
|
|
205
|
+
const shown = environment.projectRef === environment.projectId
|
|
206
|
+
? environment.projectId
|
|
207
|
+
: `${environment.projectRef} (${environment.projectId})`;
|
|
208
|
+
const note = `Environment ${environment.name}: project ${shown}, values under ${target.envName}.\n`;
|
|
209
|
+
return result.kind === 'ok'
|
|
210
|
+
? { ...result, rendered: { ...result.rendered, stderr: `${note}${result.rendered.stderr}` } }
|
|
211
|
+
: { ...result, stderr: `${note}${result.stderr}` };
|
|
212
|
+
}
|
|
213
|
+
/** Where `local` is, when that's the env a refused value named; otherwise nothing. */
|
|
214
|
+
function localEnvHint(envName) {
|
|
215
|
+
return envName === LOCAL_ENV_NAME
|
|
216
|
+
? "`local` is a `kindgi dev` runtime's env: in a pack where `kindgi dev` runs, the CLI talks to that runtime, unless --url or KINDGI_API_URL names another.\n"
|
|
217
|
+
: '';
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* A command's result for `thrown`, with where `local` is added when the
|
|
221
|
+
* runtime refused a value under `local` (`409 env-not-served`). For a write
|
|
222
|
+
* the CLI sends anyway, since only the runtime knows whether a registration
|
|
223
|
+
* still reads it there.
|
|
224
|
+
*/
|
|
225
|
+
export function withLocalEnvHint(result, thrown, envName) {
|
|
226
|
+
const wire = extractKindgiError(thrown);
|
|
227
|
+
if (result.kind !== 'error' || wire?.reason !== 'env-not-served')
|
|
228
|
+
return result;
|
|
229
|
+
return { ...result, stderr: `${result.stderr}${localEnvHint(envName)}` };
|
|
230
|
+
}
|
|
231
|
+
//# sourceMappingURL=value-target.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"value-target.js","sourceRoot":"","sources":["../src/value-target.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kindgi/cli",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.9-rc.1",
|
|
4
4
|
"description": "Command-line interface for Kindgi™. Create a pack, run it on your machine (`kindgi dev`), build, sign and deploy it, and work with a running Kindgi API from the terminal.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"repository": {
|
|
@@ -37,18 +37,18 @@
|
|
|
37
37
|
"provenance": true
|
|
38
38
|
},
|
|
39
39
|
"dependencies": {
|
|
40
|
-
"@kindgi/agents": "0.1.
|
|
41
|
-
"@kindgi/client": "0.1.
|
|
42
|
-
"@kindgi/dotenv-file": "0.1.
|
|
43
|
-
"@kindgi/crypto": "0.1.
|
|
44
|
-
"@kindgi/env-schema": "0.1.
|
|
45
|
-
"@kindgi/flow": "0.1.
|
|
46
|
-
"@kindgi/handler-runtime": "0.1.
|
|
47
|
-
"@kindgi/log": "0.1.
|
|
48
|
-
"@kindgi/secrets-dotenv": "0.1.
|
|
49
|
-
"@kindgi/platform": "0.1.
|
|
50
|
-
"@kindgi/sdk": "0.1.
|
|
51
|
-
"@kindgi/types": "0.1.
|
|
40
|
+
"@kindgi/agents": "0.1.9-rc.1",
|
|
41
|
+
"@kindgi/client": "0.1.9-rc.1",
|
|
42
|
+
"@kindgi/dotenv-file": "0.1.9-rc.1",
|
|
43
|
+
"@kindgi/crypto": "0.1.9-rc.1",
|
|
44
|
+
"@kindgi/env-schema": "0.1.9-rc.1",
|
|
45
|
+
"@kindgi/flow": "0.1.9-rc.1",
|
|
46
|
+
"@kindgi/handler-runtime": "0.1.9-rc.1",
|
|
47
|
+
"@kindgi/log": "0.1.9-rc.1",
|
|
48
|
+
"@kindgi/secrets-dotenv": "0.1.9-rc.1",
|
|
49
|
+
"@kindgi/platform": "0.1.9-rc.1",
|
|
50
|
+
"@kindgi/sdk": "0.1.9-rc.1",
|
|
51
|
+
"@kindgi/types": "0.1.9-rc.1",
|
|
52
52
|
"esbuild": "^0.24.0",
|
|
53
53
|
"semver": "^7.8.5",
|
|
54
54
|
"smol-toml": "^1.9.0",
|