@kindgi/cli 0.1.3 → 0.1.4-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 +9 -4
- package/dist/build/defaults.d.ts.map +1 -1
- package/dist/build/defaults.js +2 -10
- package/dist/build/defaults.js.map +1 -1
- package/dist/commands/agents.d.ts.map +1 -1
- package/dist/commands/agents.js +63 -2
- package/dist/commands/agents.js.map +1 -1
- package/dist/commands/blocks.d.ts +3 -0
- package/dist/commands/blocks.d.ts.map +1 -0
- package/dist/commands/blocks.js +186 -0
- package/dist/commands/blocks.js.map +1 -0
- package/dist/commands/build.d.ts.map +1 -1
- package/dist/commands/build.js +2 -1
- package/dist/commands/build.js.map +1 -1
- package/dist/commands/dev.d.ts.map +1 -1
- package/dist/commands/dev.js +24 -2
- package/dist/commands/dev.js.map +1 -1
- package/dist/commands/eval-runs.d.ts +20 -0
- package/dist/commands/eval-runs.d.ts.map +1 -0
- package/dist/commands/eval-runs.js +227 -0
- package/dist/commands/eval-runs.js.map +1 -0
- package/dist/commands/eval-suites.d.ts +3 -0
- package/dist/commands/eval-suites.d.ts.map +1 -0
- package/dist/commands/eval-suites.js +177 -0
- package/dist/commands/eval-suites.js.map +1 -0
- package/dist/commands/helpers.d.ts +2 -0
- package/dist/commands/helpers.d.ts.map +1 -1
- package/dist/commands/helpers.js +6 -0
- package/dist/commands/helpers.js.map +1 -1
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +10 -0
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +39 -1
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/judge-classes.d.ts +3 -0
- package/dist/commands/judge-classes.d.ts.map +1 -0
- package/dist/commands/judge-classes.js +136 -0
- package/dist/commands/judge-classes.js.map +1 -0
- package/dist/commands/judgments.d.ts +3 -0
- package/dist/commands/judgments.d.ts.map +1 -0
- package/dist/commands/judgments.js +159 -0
- package/dist/commands/judgments.js.map +1 -0
- package/dist/commands/runs.d.ts.map +1 -1
- package/dist/commands/runs.js +17 -1
- package/dist/commands/runs.js.map +1 -1
- package/dist/context.d.ts +9 -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/response.d.ts +9 -1
- package/dist/deploy/response.d.ts.map +1 -1
- package/dist/deploy/response.js +46 -0
- package/dist/deploy/response.js.map +1 -1
- package/dist/deploy/runners.d.ts +19 -0
- package/dist/deploy/runners.d.ts.map +1 -1
- package/dist/dev/defaults.d.ts +9 -3
- package/dist/dev/defaults.d.ts.map +1 -1
- package/dist/dev/defaults.js +29 -6
- package/dist/dev/defaults.js.map +1 -1
- package/dist/dev/providers.d.ts +37 -7
- package/dist/dev/providers.d.ts.map +1 -1
- package/dist/dev/providers.js +68 -18
- package/dist/dev/providers.js.map +1 -1
- package/dist/dev/python-builder.d.ts +6 -0
- package/dist/dev/python-builder.d.ts.map +1 -1
- package/dist/dev/python-builder.js +30 -5
- package/dist/dev/python-builder.js.map +1 -1
- package/dist/dev/runners.d.ts +5 -0
- package/dist/dev/runners.d.ts.map +1 -1
- package/dist/dev/runtime-container.d.ts +21 -0
- package/dist/dev/runtime-container.d.ts.map +1 -1
- package/dist/dev/runtime-container.js +142 -15
- 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/scan-backstop.d.ts +38 -0
- package/dist/dev/scan-backstop.d.ts.map +1 -0
- package/dist/dev/scan-backstop.js +104 -0
- package/dist/dev/scan-backstop.js.map +1 -0
- package/dist/init/dependency-specs.d.ts +5 -0
- package/dist/init/dependency-specs.d.ts.map +1 -1
- package/dist/init/dependency-specs.js +16 -4
- package/dist/init/dependency-specs.js.map +1 -1
- package/dist/main.d.ts +2 -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 +26 -0
- package/dist/package-manager.d.ts.map +1 -1
- package/dist/package-manager.js +66 -6
- package/dist/package-manager.js.map +1 -1
- 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 +1 -1
- package/dist/sdk-skills/kindgi-authoring-tools/SKILL.md +1 -1
- package/dist/sdk-skills/kindgi-framework-feedback/SKILL.md +1 -1
- package/dist/sdk-skills/kindgi-getting-started/SKILL.md +1 -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 +1 -1
- package/package.json +10 -10
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
// Copyright (C) 2026 Kindgi Inc.
|
|
3
|
+
import { integerFlag, listFlag, requiredPositional, runSdk, stringFlag } from './helpers.js';
|
|
4
|
+
const STATUSES = ['pending', 'running', 'completed', 'failed', 'cancelled'];
|
|
5
|
+
const READS = ['recorded', 'live'];
|
|
6
|
+
/** Statuses `start --wait` waits through. */
|
|
7
|
+
const IN_PROGRESS = new Set(['pending', 'running']);
|
|
8
|
+
/**
|
|
9
|
+
* The eval run as it is when it stops being in progress (`start --wait`).
|
|
10
|
+
* Throws when it's still running after `maxMs`, naming the command that
|
|
11
|
+
* shows it.
|
|
12
|
+
*/
|
|
13
|
+
export async function followEvalRun(runId, options) {
|
|
14
|
+
const pollMs = options.pollMs ?? 1_000;
|
|
15
|
+
const maxMs = options.maxMs ?? 30 * 60 * 1_000;
|
|
16
|
+
const sleep = options.sleep ?? ((ms) => new Promise((r) => setTimeout(r, ms)));
|
|
17
|
+
for (let waited = 0;;) {
|
|
18
|
+
await sleep(pollMs);
|
|
19
|
+
waited += pollMs;
|
|
20
|
+
const run = await options.get(runId);
|
|
21
|
+
if (!IN_PROGRESS.has(run.status))
|
|
22
|
+
return run;
|
|
23
|
+
if (waited >= maxMs) {
|
|
24
|
+
throw new Error(`Still running after ${Math.round(maxMs / 60_000)} minutes: kindgi eval-runs show ${runId}`);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
/** `--baseline=live` with `--baseline-project` and `--baseline-segment`. */
|
|
29
|
+
function liveBaseline(project, segmentFlags) {
|
|
30
|
+
const segments = {};
|
|
31
|
+
for (const entry of segmentFlags) {
|
|
32
|
+
const at = entry.indexOf('=');
|
|
33
|
+
if (at < 1 || at === entry.length - 1) {
|
|
34
|
+
throw new Error(`--baseline-segment must be <key>=<value>, got "${entry}"`);
|
|
35
|
+
}
|
|
36
|
+
segments[entry.slice(0, at)] = entry.slice(at + 1);
|
|
37
|
+
}
|
|
38
|
+
return {
|
|
39
|
+
live: {
|
|
40
|
+
...(project !== undefined && { projectId: project }),
|
|
41
|
+
...(segmentFlags.length > 0 && { segments }),
|
|
42
|
+
},
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
/** `--baseline` with `--baseline-project` and `--baseline-segment`, as the request's `baseline`. */
|
|
46
|
+
function baselineFrom(ctx) {
|
|
47
|
+
const baseline = stringFlag(ctx, 'baseline');
|
|
48
|
+
const project = stringFlag(ctx, 'baseline-project');
|
|
49
|
+
const segmentFlags = listFlag(ctx, 'baseline-segment');
|
|
50
|
+
if (baseline !== 'live' && (project !== undefined || segmentFlags.length > 0)) {
|
|
51
|
+
throw new Error('--baseline-project and --baseline-segment need --baseline=live');
|
|
52
|
+
}
|
|
53
|
+
if (baseline === undefined || baseline === 'recorded')
|
|
54
|
+
return baseline;
|
|
55
|
+
if (baseline === 'live')
|
|
56
|
+
return liveBaseline(project, segmentFlags);
|
|
57
|
+
const at = baseline.lastIndexOf('@');
|
|
58
|
+
if (at < 1 || at === baseline.length - 1) {
|
|
59
|
+
throw new Error(`--baseline must be recorded, live or <agentId>@<version>, got "${baseline}"`);
|
|
60
|
+
}
|
|
61
|
+
return { agentId: baseline.slice(0, at), version: baseline.slice(at + 1) };
|
|
62
|
+
}
|
|
63
|
+
/** `--agent` / `--flow` with their versions, as the request's `agentRef` or `flowRef`. */
|
|
64
|
+
function targetFrom(ctx) {
|
|
65
|
+
const agent = stringFlag(ctx, 'agent');
|
|
66
|
+
const flow = stringFlag(ctx, 'flow');
|
|
67
|
+
if ((agent === undefined) === (flow === undefined)) {
|
|
68
|
+
throw new Error('Give exactly one of --agent=<id> or --flow=<id>');
|
|
69
|
+
}
|
|
70
|
+
const agentVersion = stringFlag(ctx, 'agent-version');
|
|
71
|
+
const flowVersion = stringFlag(ctx, 'flow-version');
|
|
72
|
+
if (agentVersion !== undefined && agent === undefined) {
|
|
73
|
+
throw new Error('--agent-version needs --agent');
|
|
74
|
+
}
|
|
75
|
+
if (flowVersion !== undefined && flow === undefined) {
|
|
76
|
+
throw new Error('--flow-version needs --flow');
|
|
77
|
+
}
|
|
78
|
+
return agent !== undefined
|
|
79
|
+
? { agentRef: { agentId: agent, ...(agentVersion !== undefined && { version: agentVersion }) } }
|
|
80
|
+
: {
|
|
81
|
+
flowRef: {
|
|
82
|
+
flowId: flow,
|
|
83
|
+
...(flowVersion !== undefined && { version: flowVersion }),
|
|
84
|
+
},
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
const PAGE_FLAGS = {
|
|
88
|
+
limit: { type: 'string', description: 'The most to return (default 25, at most 100).' },
|
|
89
|
+
cursor: {
|
|
90
|
+
type: 'string',
|
|
91
|
+
description: "Resume after this cursor, from the previous page's `nextCursor`.",
|
|
92
|
+
},
|
|
93
|
+
};
|
|
94
|
+
const start = {
|
|
95
|
+
kind: 'leaf',
|
|
96
|
+
name: 'start',
|
|
97
|
+
description: "Start an eval run. On a test set (a `judged` suite), the run compares the agent version (`--agent` with `--agent-version`) with the recorded runs: each case is replayed without doing anything the past run didn't, and the result's summary has the metrics.",
|
|
98
|
+
usage: 'kindgi eval-runs start <suite-id> --project=<id> (--agent=<id> [--agent-version=<v>] | --flow=<id> [--flow-version=<v>]) [--baseline=recorded|<agentId>@<version>|live] [--baseline-project=<id>] [--baseline-segment=<key>=<value> ...] [--reads=recorded|live] [--repetitions=<n>] [--k=<n>] [--dry-run] [--wait]',
|
|
99
|
+
optionSpec: {
|
|
100
|
+
project: { type: 'string', description: 'The project the run belongs to. Required.' },
|
|
101
|
+
agent: { type: 'string', description: 'Run this agent.' },
|
|
102
|
+
'agent-version': {
|
|
103
|
+
type: 'string',
|
|
104
|
+
description: 'The agent version to run. Needs `--agent`. Default: the latest.',
|
|
105
|
+
},
|
|
106
|
+
flow: { type: 'string', description: 'Run this flow.' },
|
|
107
|
+
'flow-version': {
|
|
108
|
+
type: 'string',
|
|
109
|
+
description: 'The flow version to run. Needs `--flow`. Default: the latest.',
|
|
110
|
+
},
|
|
111
|
+
baseline: {
|
|
112
|
+
type: 'string',
|
|
113
|
+
description: "What a test set's run compares the agent version with: `recorded` (the default: each case's output as it was judged), `<agentId>@<version>` (another version, replayed the same way) or `live` (the version live in a project or segment). Only `recorded` runs today.",
|
|
114
|
+
},
|
|
115
|
+
'baseline-project': {
|
|
116
|
+
type: 'string',
|
|
117
|
+
description: 'With `--baseline=live`: the project whose live version to compare with.',
|
|
118
|
+
},
|
|
119
|
+
'baseline-segment': {
|
|
120
|
+
type: 'string',
|
|
121
|
+
multiple: true,
|
|
122
|
+
description: 'With `--baseline=live`: the version live for this segment, as `<key>=<value>`. Repeat the flag for several.',
|
|
123
|
+
},
|
|
124
|
+
reads: {
|
|
125
|
+
type: 'string',
|
|
126
|
+
description: "Whether replayed reads use the past run's results when it has them (`recorded`, the default) or run live.",
|
|
127
|
+
},
|
|
128
|
+
repetitions: {
|
|
129
|
+
type: 'string',
|
|
130
|
+
description: 'Run each case this many times (1 to 10, default 1); the summary shows the spread.',
|
|
131
|
+
},
|
|
132
|
+
k: {
|
|
133
|
+
type: 'string',
|
|
134
|
+
description: 'How many ranked items weighted precision@k looks at (1 to 100, default 10).',
|
|
135
|
+
},
|
|
136
|
+
'dry-run': { type: 'boolean', description: 'Check the request without running anything.' },
|
|
137
|
+
wait: {
|
|
138
|
+
type: 'boolean',
|
|
139
|
+
description: 'Wait until the run is done (at most 30 minutes), then print it.',
|
|
140
|
+
},
|
|
141
|
+
},
|
|
142
|
+
run: (ctx) => runSdk(ctx, 'eval-runs start', async () => {
|
|
143
|
+
const suiteId = requiredPositional(ctx, 0, 'suite-id');
|
|
144
|
+
const projectId = stringFlag(ctx, 'project');
|
|
145
|
+
if (projectId === undefined)
|
|
146
|
+
throw new Error('--project=<id> is required');
|
|
147
|
+
const target = targetFrom(ctx);
|
|
148
|
+
const reads = stringFlag(ctx, 'reads');
|
|
149
|
+
if (reads !== undefined && !READS.includes(reads)) {
|
|
150
|
+
throw new Error(`--reads must be one of ${READS.join(', ')}, got "${reads}"`);
|
|
151
|
+
}
|
|
152
|
+
const baseline = baselineFrom(ctx);
|
|
153
|
+
const repetitions = integerFlag(ctx, 'repetitions');
|
|
154
|
+
const k = integerFlag(ctx, 'k');
|
|
155
|
+
const input = {
|
|
156
|
+
...target,
|
|
157
|
+
...(baseline !== undefined && { baseline }),
|
|
158
|
+
...(reads !== undefined && { reads: reads }),
|
|
159
|
+
...(repetitions !== undefined && { repetitions }),
|
|
160
|
+
...(k !== undefined && { k }),
|
|
161
|
+
...(ctx.options['dry-run'] === true && { dryRun: true }),
|
|
162
|
+
};
|
|
163
|
+
const evalRuns = ctx.client().evalRuns;
|
|
164
|
+
const started = await evalRuns.start(suiteId, input, { projectId });
|
|
165
|
+
if (ctx.options.wait !== true)
|
|
166
|
+
return started;
|
|
167
|
+
return await followEvalRun(started.runId, { get: (id) => evalRuns.get(id) });
|
|
168
|
+
}),
|
|
169
|
+
};
|
|
170
|
+
const show = {
|
|
171
|
+
kind: 'leaf',
|
|
172
|
+
name: 'show',
|
|
173
|
+
description: 'Show an eval run: its status and, once done, its summary.',
|
|
174
|
+
usage: 'kindgi eval-runs show <run-id>',
|
|
175
|
+
optionSpec: {},
|
|
176
|
+
run: (ctx) => runSdk(ctx, 'eval-runs show', async () => {
|
|
177
|
+
const runId = requiredPositional(ctx, 0, 'run-id');
|
|
178
|
+
return await ctx.client().evalRuns.get(runId);
|
|
179
|
+
}),
|
|
180
|
+
};
|
|
181
|
+
const list = {
|
|
182
|
+
kind: 'leaf',
|
|
183
|
+
name: 'list',
|
|
184
|
+
description: 'List eval runs, newest first.',
|
|
185
|
+
usage: `kindgi eval-runs list [--suite=<id>] [--status=${STATUSES.join('|')}] [--agent=<id>] [--limit=<n>] [--cursor=<c>]`,
|
|
186
|
+
optionSpec: {
|
|
187
|
+
suite: { type: 'string', description: 'Only runs of this suite.' },
|
|
188
|
+
status: { type: 'string', description: `Only this status: ${STATUSES.join(', ')}.` },
|
|
189
|
+
agent: { type: 'string', description: 'Only runs of this agent.' },
|
|
190
|
+
...PAGE_FLAGS,
|
|
191
|
+
},
|
|
192
|
+
run: (ctx) => runSdk(ctx, 'eval-runs list', async () => {
|
|
193
|
+
const status = stringFlag(ctx, 'status');
|
|
194
|
+
if (status !== undefined && !STATUSES.includes(status)) {
|
|
195
|
+
throw new Error(`--status must be one of ${STATUSES.join(', ')}, got "${status}"`);
|
|
196
|
+
}
|
|
197
|
+
const suiteId = stringFlag(ctx, 'suite');
|
|
198
|
+
const agentId = stringFlag(ctx, 'agent');
|
|
199
|
+
const limit = integerFlag(ctx, 'limit');
|
|
200
|
+
const cursor = stringFlag(ctx, 'cursor');
|
|
201
|
+
return await ctx.client().evalRuns.list({
|
|
202
|
+
...(suiteId !== undefined && { suiteId }),
|
|
203
|
+
...(status !== undefined && { status: status }),
|
|
204
|
+
...(agentId !== undefined && { agentId }),
|
|
205
|
+
...(limit !== undefined && { limit }),
|
|
206
|
+
...(cursor !== undefined && { cursor }),
|
|
207
|
+
});
|
|
208
|
+
}),
|
|
209
|
+
};
|
|
210
|
+
const cancel = {
|
|
211
|
+
kind: 'leaf',
|
|
212
|
+
name: 'cancel',
|
|
213
|
+
description: 'Cancel an eval run that is pending or running.',
|
|
214
|
+
usage: 'kindgi eval-runs cancel <run-id>',
|
|
215
|
+
optionSpec: {},
|
|
216
|
+
run: (ctx) => runSdk(ctx, 'eval-runs cancel', async () => {
|
|
217
|
+
const runId = requiredPositional(ctx, 0, 'run-id');
|
|
218
|
+
return await ctx.client().evalRuns.cancel(runId);
|
|
219
|
+
}),
|
|
220
|
+
};
|
|
221
|
+
export const evalRunsCommand = {
|
|
222
|
+
kind: 'group',
|
|
223
|
+
name: 'eval-runs',
|
|
224
|
+
description: 'Eval runs: run an eval suite, or compare an agent version on a test set (start / show / list / cancel).',
|
|
225
|
+
subcommands: [start, show, list, cancel],
|
|
226
|
+
};
|
|
227
|
+
//# sourceMappingURL=eval-runs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eval-runs.js","sourceRoot":"","sources":["../../src/commands/eval-runs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eval-suites.d.ts","sourceRoot":"","sources":["../../src/commands/eval-suites.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,OAAO,EAAe,MAAM,YAAY,CAAC;AA2LvD,eAAO,MAAM,iBAAiB,EAAE,OAM/B,CAAC"}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
// Copyright (C) 2026 Kindgi Inc.
|
|
3
|
+
import { integerFlag, listFlag, requiredPositional, runSdk, stringFlag } from './helpers.js';
|
|
4
|
+
const KINDS = [
|
|
5
|
+
'accuracy',
|
|
6
|
+
'pairwise',
|
|
7
|
+
'regression',
|
|
8
|
+
'human-review',
|
|
9
|
+
'benchmark',
|
|
10
|
+
'custom',
|
|
11
|
+
'judged',
|
|
12
|
+
];
|
|
13
|
+
/**
|
|
14
|
+
* The version flag is `--suite-version`: the global `--version` flag
|
|
15
|
+
* would swallow `--version` before a command saw it.
|
|
16
|
+
*/
|
|
17
|
+
function suiteVersion(ctx) {
|
|
18
|
+
return stringFlag(ctx, 'suite-version');
|
|
19
|
+
}
|
|
20
|
+
function requiredSuiteVersion(ctx) {
|
|
21
|
+
const version = suiteVersion(ctx);
|
|
22
|
+
if (version === undefined)
|
|
23
|
+
throw new Error('--suite-version=<semver> is required');
|
|
24
|
+
return version;
|
|
25
|
+
}
|
|
26
|
+
/** The string flags given, under their request field names (`{ agent: 'agentId' }`). */
|
|
27
|
+
function givenFlags(ctx, fields) {
|
|
28
|
+
const out = {};
|
|
29
|
+
for (const [flag, field] of Object.entries(fields)) {
|
|
30
|
+
const value = stringFlag(ctx, flag);
|
|
31
|
+
if (value !== undefined)
|
|
32
|
+
out[field] = value;
|
|
33
|
+
}
|
|
34
|
+
return out;
|
|
35
|
+
}
|
|
36
|
+
const PAGE_FLAGS = {
|
|
37
|
+
limit: { type: 'string', description: 'The most to return (default 25, at most 100).' },
|
|
38
|
+
cursor: {
|
|
39
|
+
type: 'string',
|
|
40
|
+
description: "Resume after this cursor, from the previous page's `nextCursor`.",
|
|
41
|
+
},
|
|
42
|
+
};
|
|
43
|
+
const list = {
|
|
44
|
+
kind: 'leaf',
|
|
45
|
+
name: 'list',
|
|
46
|
+
description: 'List eval suites (the latest version of each).',
|
|
47
|
+
usage: `kindgi eval-suites list [--project=<id>] [--kind=${KINDS.join('|')}] [--limit=<n>] [--cursor=<c>]`,
|
|
48
|
+
optionSpec: {
|
|
49
|
+
project: { type: 'string', description: 'Only suites in this project.' },
|
|
50
|
+
kind: { type: 'string', description: `Only this kind: ${KINDS.join(', ')}.` },
|
|
51
|
+
...PAGE_FLAGS,
|
|
52
|
+
},
|
|
53
|
+
run: (ctx) => runSdk(ctx, 'eval-suites list', async () => {
|
|
54
|
+
const kind = stringFlag(ctx, 'kind');
|
|
55
|
+
if (kind !== undefined && !KINDS.includes(kind)) {
|
|
56
|
+
throw new Error(`--kind must be one of ${KINDS.join(', ')}, got "${kind}"`);
|
|
57
|
+
}
|
|
58
|
+
const projectId = stringFlag(ctx, 'project');
|
|
59
|
+
const limit = integerFlag(ctx, 'limit');
|
|
60
|
+
const cursor = stringFlag(ctx, 'cursor');
|
|
61
|
+
return await ctx.client().evalSuites.list({
|
|
62
|
+
...(kind !== undefined && { kind: kind }),
|
|
63
|
+
...(projectId !== undefined && { scopeKind: 'project', scopeId: projectId }),
|
|
64
|
+
...(limit !== undefined && { limit }),
|
|
65
|
+
...(cursor !== undefined && { cursor }),
|
|
66
|
+
});
|
|
67
|
+
}),
|
|
68
|
+
};
|
|
69
|
+
const show = {
|
|
70
|
+
kind: 'leaf',
|
|
71
|
+
name: 'show',
|
|
72
|
+
description: 'Show an eval suite: its latest version, or the one named by `--suite-version`.',
|
|
73
|
+
usage: 'kindgi eval-suites show <suite-id> [--suite-version=<semver>]',
|
|
74
|
+
optionSpec: {
|
|
75
|
+
'suite-version': { type: 'string', description: 'The version to show. Default: the latest.' },
|
|
76
|
+
},
|
|
77
|
+
run: (ctx) => runSdk(ctx, 'eval-suites show', async () => {
|
|
78
|
+
const suiteId = requiredPositional(ctx, 0, 'suite-id');
|
|
79
|
+
const version = suiteVersion(ctx);
|
|
80
|
+
const suites = ctx.client().evalSuites;
|
|
81
|
+
return version === undefined
|
|
82
|
+
? await suites.get(suiteId)
|
|
83
|
+
: await suites.versions.get(suiteId, version);
|
|
84
|
+
}),
|
|
85
|
+
};
|
|
86
|
+
const fromJudgments = {
|
|
87
|
+
kind: 'leaf',
|
|
88
|
+
name: 'from-judgments',
|
|
89
|
+
description: "Build a test set: publish a `judged` suite version whose cases are copies of an agent's or flow's judged runs, with each item's judgments summed up.",
|
|
90
|
+
usage: 'kindgi eval-suites from-judgments <suite-id> --suite-version=<semver> --project=<id> (--agent=<id> [--agent-version=<v>] | --flow=<id>) [--since=<iso>] [--until=<iso>] [--class=<judge-class-id> ...] [--min-judgments=<n>] [--description=<text>]',
|
|
91
|
+
optionSpec: {
|
|
92
|
+
'suite-version': { type: 'string', description: 'The version to publish. Required.' },
|
|
93
|
+
project: { type: 'string', description: 'The project whose judged runs to use. Required.' },
|
|
94
|
+
agent: { type: 'string', description: 'Use judged runs of this agent.' },
|
|
95
|
+
'agent-version': {
|
|
96
|
+
type: 'string',
|
|
97
|
+
description: 'Only runs of this agent version. Needs `--agent`.',
|
|
98
|
+
},
|
|
99
|
+
flow: { type: 'string', description: 'Use judged runs of this flow.' },
|
|
100
|
+
since: {
|
|
101
|
+
type: 'string',
|
|
102
|
+
description: 'Only runs first judged at or after this ISO 8601 time.',
|
|
103
|
+
},
|
|
104
|
+
until: { type: 'string', description: 'Only runs first judged before this ISO 8601 time.' },
|
|
105
|
+
class: {
|
|
106
|
+
type: 'string',
|
|
107
|
+
multiple: true,
|
|
108
|
+
description: 'Count only judgments under this judge class id. Repeat the flag for several classes.',
|
|
109
|
+
},
|
|
110
|
+
'min-judgments': {
|
|
111
|
+
type: 'string',
|
|
112
|
+
description: 'Leave out runs with fewer counted judgments (default 1).',
|
|
113
|
+
},
|
|
114
|
+
description: { type: 'string', description: 'A description for the suite version.' },
|
|
115
|
+
},
|
|
116
|
+
run: (ctx) => runSdk(ctx, 'eval-suites from-judgments', async () => {
|
|
117
|
+
const suiteId = requiredPositional(ctx, 0, 'suite-id');
|
|
118
|
+
const version = requiredSuiteVersion(ctx);
|
|
119
|
+
const projectId = stringFlag(ctx, 'project');
|
|
120
|
+
if (projectId === undefined)
|
|
121
|
+
throw new Error('--project=<id> is required');
|
|
122
|
+
const agent = stringFlag(ctx, 'agent');
|
|
123
|
+
const flow = stringFlag(ctx, 'flow');
|
|
124
|
+
if ((agent === undefined) === (flow === undefined)) {
|
|
125
|
+
throw new Error('Give exactly one of --agent=<id> or --flow=<id>');
|
|
126
|
+
}
|
|
127
|
+
if (stringFlag(ctx, 'agent-version') !== undefined && agent === undefined) {
|
|
128
|
+
throw new Error('--agent-version needs --agent');
|
|
129
|
+
}
|
|
130
|
+
const minJudgments = integerFlag(ctx, 'min-judgments');
|
|
131
|
+
if (minJudgments !== undefined && minJudgments < 1) {
|
|
132
|
+
throw new Error('--min-judgments must be 1 or more');
|
|
133
|
+
}
|
|
134
|
+
const classes = listFlag(ctx, 'class');
|
|
135
|
+
return await ctx.client().evalSuites.buildFromJudgments(suiteId, {
|
|
136
|
+
version,
|
|
137
|
+
projectId,
|
|
138
|
+
...givenFlags(ctx, {
|
|
139
|
+
agent: 'agentId',
|
|
140
|
+
'agent-version': 'agentVersion',
|
|
141
|
+
flow: 'flowId',
|
|
142
|
+
since: 'since',
|
|
143
|
+
until: 'until',
|
|
144
|
+
description: 'description',
|
|
145
|
+
}),
|
|
146
|
+
...(classes.length > 0 && { judgeClassIds: classes }),
|
|
147
|
+
...(minJudgments !== undefined && { minJudgments }),
|
|
148
|
+
});
|
|
149
|
+
}),
|
|
150
|
+
};
|
|
151
|
+
const cases = {
|
|
152
|
+
kind: 'leaf',
|
|
153
|
+
name: 'cases',
|
|
154
|
+
description: 'List the cases of a judged suite version.',
|
|
155
|
+
usage: 'kindgi eval-suites cases <suite-id> --suite-version=<semver> [--limit=<n>] [--cursor=<c>]',
|
|
156
|
+
optionSpec: {
|
|
157
|
+
'suite-version': { type: 'string', description: 'The suite version. Required.' },
|
|
158
|
+
...PAGE_FLAGS,
|
|
159
|
+
},
|
|
160
|
+
run: (ctx) => runSdk(ctx, 'eval-suites cases', async () => {
|
|
161
|
+
const suiteId = requiredPositional(ctx, 0, 'suite-id');
|
|
162
|
+
const version = requiredSuiteVersion(ctx);
|
|
163
|
+
const limit = integerFlag(ctx, 'limit');
|
|
164
|
+
const cursor = stringFlag(ctx, 'cursor');
|
|
165
|
+
return await ctx.client().evalSuites.listCases(suiteId, version, {
|
|
166
|
+
...(limit !== undefined && { limit }),
|
|
167
|
+
...(cursor !== undefined && { cursor }),
|
|
168
|
+
});
|
|
169
|
+
}),
|
|
170
|
+
};
|
|
171
|
+
export const evalSuitesCommand = {
|
|
172
|
+
kind: 'group',
|
|
173
|
+
name: 'eval-suites',
|
|
174
|
+
description: 'Eval suites and test sets built from judgments (list / show / from-judgments / cases).',
|
|
175
|
+
subcommands: [list, show, fromJudgments, cases],
|
|
176
|
+
};
|
|
177
|
+
//# sourceMappingURL=eval-suites.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eval-suites.js","sourceRoot":"","sources":["../../src/commands/eval-suites.ts"],"names":[],"mappings":"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"}
|
|
@@ -43,6 +43,8 @@ export declare function stringFlag(ctx: CommandContext, name: string): string |
|
|
|
43
43
|
* Default project when the flag is absent.
|
|
44
44
|
*/
|
|
45
45
|
export declare function projectIdFlag(ctx: CommandContext): Promise<string>;
|
|
46
|
+
/** The values of a repeatable flag (`multiple: true`), in the order given. */
|
|
47
|
+
export declare function listFlag(ctx: CommandContext, name: string): string[];
|
|
46
48
|
/** Extract an optional integer flag; throws on non-integer values. */
|
|
47
49
|
export declare function integerFlag(ctx: CommandContext, name: string): number | undefined;
|
|
48
50
|
//# sourceMappingURL=helpers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/commands/helpers.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEpD,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,QAAQ,EAA2B,MAAM,cAAc,CAAC;AACnF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD;;;GAGG;AACH,MAAM,WAAW,SAAS,CAAC,IAAI,EAAE,GAAG;IAClC,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,SAAS,GAAG,EAAE,CAAC;IAC9C,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;CAC1C;AAED;;;;;GAKG;AACH,wBAAsB,MAAM,CAAC,CAAC,EAAE,GAAG,GAAG,KAAK,EACzC,GAAG,EAAE,cAAc,EACnB,YAAY,EAAE,MAAM,EACpB,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,KAAK,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,GACxB,OAAO,CAAC,aAAa,CAAC,CAUxB;AAWD,iFAAiF;AACjF,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAG9D;AAED;;;;GAIG;AACH,wBAAsB,cAAc,CAClC,GAAG,EAAE,cAAc,EACnB,YAAY,EAAE,MAAM,EACpB,EAAE,EAAE,MAAM,OAAO,CAAC,QAAQ,CAAC,GAC1B,OAAO,CAAC,aAAa,CAAC,CAOxB;AAED,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,cAAc,EACnB,YAAY,EAAE,MAAM,GACnB,aAAa,CAGf;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,KAAK,CAMtD;AAED,uFAAuF;AACvF,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOlE;AAED,gEAAgE;AAChE,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAM5F;AAED,uCAAuC;AACvC,wBAAgB,UAAU,CAAC,GAAG,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAGhF;AAED;;;GAGG;AACH,wBAAsB,aAAa,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAExE;AAED,sEAAsE;AACtE,wBAAgB,WAAW,CAAC,GAAG,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAQjF"}
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/commands/helpers.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEpD,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,QAAQ,EAA2B,MAAM,cAAc,CAAC;AACnF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD;;;GAGG;AACH,MAAM,WAAW,SAAS,CAAC,IAAI,EAAE,GAAG;IAClC,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,SAAS,GAAG,EAAE,CAAC;IAC9C,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;CAC1C;AAED;;;;;GAKG;AACH,wBAAsB,MAAM,CAAC,CAAC,EAAE,GAAG,GAAG,KAAK,EACzC,GAAG,EAAE,cAAc,EACnB,YAAY,EAAE,MAAM,EACpB,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,KAAK,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,GACxB,OAAO,CAAC,aAAa,CAAC,CAUxB;AAWD,iFAAiF;AACjF,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAG9D;AAED;;;;GAIG;AACH,wBAAsB,cAAc,CAClC,GAAG,EAAE,cAAc,EACnB,YAAY,EAAE,MAAM,EACpB,EAAE,EAAE,MAAM,OAAO,CAAC,QAAQ,CAAC,GAC1B,OAAO,CAAC,aAAa,CAAC,CAOxB;AAED,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,cAAc,EACnB,YAAY,EAAE,MAAM,GACnB,aAAa,CAGf;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,KAAK,CAMtD;AAED,uFAAuF;AACvF,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOlE;AAED,gEAAgE;AAChE,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAM5F;AAED,uCAAuC;AACvC,wBAAgB,UAAU,CAAC,GAAG,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAGhF;AAED;;;GAGG;AACH,wBAAsB,aAAa,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAExE;AAED,8EAA8E;AAC9E,wBAAgB,QAAQ,CAAC,GAAG,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAIpE;AAED,sEAAsE;AACtE,wBAAgB,WAAW,CAAC,GAAG,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAQjF"}
|
package/dist/commands/helpers.js
CHANGED
|
@@ -96,6 +96,12 @@ export function stringFlag(ctx, name) {
|
|
|
96
96
|
export async function projectIdFlag(ctx) {
|
|
97
97
|
return stringFlag(ctx, 'project') ?? (await ctx.client().projects.getDefault()).id;
|
|
98
98
|
}
|
|
99
|
+
/** The values of a repeatable flag (`multiple: true`), in the order given. */
|
|
100
|
+
export function listFlag(ctx, name) {
|
|
101
|
+
const raw = ctx.options[name];
|
|
102
|
+
const values = Array.isArray(raw) ? raw : [raw];
|
|
103
|
+
return values.filter((v) => typeof v === 'string' && v !== '');
|
|
104
|
+
}
|
|
99
105
|
/** Extract an optional integer flag; throws on non-integer values. */
|
|
100
106
|
export function integerFlag(ctx, name) {
|
|
101
107
|
const raw = ctx.options[name];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/commands/helpers.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/commands/helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAsCA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAG1C,eAAO,MAAM,aAAa,EAAE,SAAS,OAAO,EAsC3C,CAAC;AAEF,wBAAgB,WAAW,CACzB,MAAM,EAAE,SAAS,MAAM,EAAE,GACxB;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAO/C"}
|
package/dist/commands/index.js
CHANGED
|
@@ -5,17 +5,22 @@ import { agentsCommand } from './agents.js';
|
|
|
5
5
|
import { approvalsCommand } from './approvals.js';
|
|
6
6
|
import { artifactsCommand } from './artifacts.js';
|
|
7
7
|
import { authCommand } from './auth.js';
|
|
8
|
+
import { blocksCommand } from './blocks.js';
|
|
8
9
|
import { buildCommand } from './build.js';
|
|
9
10
|
import { capabilitiesCommand } from './capabilities.js';
|
|
10
11
|
import { conversationsCommand } from './conversations.js';
|
|
11
12
|
import { deployCommand } from './deploy.js';
|
|
12
13
|
import { devCommand } from './dev.js';
|
|
13
14
|
import { envCommand } from './env.js';
|
|
15
|
+
import { evalRunsCommand } from './eval-runs.js';
|
|
16
|
+
import { evalSuitesCommand } from './eval-suites.js';
|
|
14
17
|
import { feedbackCommand } from './feedback.js';
|
|
15
18
|
import { flowsCommand } from './flows.js';
|
|
16
19
|
import { guardrailsCommand } from './guardrails.js';
|
|
17
20
|
import { healthCommand } from './health.js';
|
|
18
21
|
import { initCommand } from './init.js';
|
|
22
|
+
import { judgeClassesCommand } from './judge-classes.js';
|
|
23
|
+
import { judgmentsCommand } from './judgments.js';
|
|
19
24
|
import { keyCommand } from './key.js';
|
|
20
25
|
import { mcpCommand, mcpLaunchCommand } from './mcp.js';
|
|
21
26
|
import { memoryCommand } from './memory.js';
|
|
@@ -56,6 +61,11 @@ export const ROOT_COMMANDS = [
|
|
|
56
61
|
approvalsCommand,
|
|
57
62
|
reviewersCommand,
|
|
58
63
|
observationsCommand,
|
|
64
|
+
judgmentsCommand,
|
|
65
|
+
judgeClassesCommand,
|
|
66
|
+
evalRunsCommand,
|
|
67
|
+
evalSuitesCommand,
|
|
68
|
+
blocksCommand,
|
|
59
69
|
tokensCommand,
|
|
60
70
|
capabilitiesCommand,
|
|
61
71
|
providersCommand,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AA2BpD,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE7D;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,WAAW,EAAE,WAgDzB,CAAC;AAEF,uEAAuE;AACvE,eAAO,MAAM,aAAa,QAA0C,CAAC;AAErE,eAAO,MAAM,mBAAmB,0CAA2C,CAAC;AAC5E,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC;AAoBhE;;;;;GAKG;AACH,wBAAsB,OAAO,CAC3B,GAAG,EAAE,cAAc,EACnB,aAAa,EAAE,MAAM,EACrB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,aAAa,CAAC,CAiDxB;AA0WD,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,GAAG,SAAS,CAMzD"}
|
package/dist/commands/init.js
CHANGED
|
@@ -11,7 +11,7 @@ import { detectInitMode } from '../init/mode-detect.js';
|
|
|
11
11
|
import { runInitPythonAugment } from '../init/python-augment.js';
|
|
12
12
|
import { collectTemplateFiles, substitute, templateTarget, } from '../init/template-files.js';
|
|
13
13
|
import { renderJson } from '../output.js';
|
|
14
|
-
import { binDisplay, detectPackageManager, installCommand } from '../package-manager.js';
|
|
14
|
+
import { binDisplay, declaredPackageManager, detectPackageManager, installCommand, isPackageVersion, readPnpmVersion, } from '../package-manager.js';
|
|
15
15
|
import { resolveSdkPackageRoot } from '../sdk-package.js';
|
|
16
16
|
import { syncSkills } from './skills.js';
|
|
17
17
|
/**
|
|
@@ -196,6 +196,9 @@ async function runInitFresh(ctx, templatesRoot, skillsRoot, packName, targetDir)
|
|
|
196
196
|
});
|
|
197
197
|
for (const s of skillsWritten)
|
|
198
198
|
filesWritten.push(s);
|
|
199
|
+
// A standalone pack pins the pnpm that will install it, so the image
|
|
200
|
+
// (`kindgi build`), CI and a teammate all use that one (T196).
|
|
201
|
+
const pnpmPin = await pinStandalonePnpm(ctx, args.targetDir);
|
|
199
202
|
// The template pins `@kindgi/sdk` + `@kindgi/cli` as `workspace:*`.
|
|
200
203
|
// Rewrite both to what resolves from here — see `dependency-specs.ts`
|
|
201
204
|
// (workspace inside the Kindgi checkout, `link:` to the checkout from
|
|
@@ -221,10 +224,20 @@ async function runInitFresh(ctx, templatesRoot, skillsRoot, packName, targetDir)
|
|
|
221
224
|
];
|
|
222
225
|
const stderr = [
|
|
223
226
|
`✓ Pack scaffolded at ${args.targetDir}/`,
|
|
227
|
+
...(pnpmPin.kind === 'pinned'
|
|
228
|
+
? [`✓ package.json pins pnpm@${pnpmPin.version} (packageManager)`]
|
|
229
|
+
: []),
|
|
224
230
|
'',
|
|
225
231
|
'Next steps:',
|
|
226
232
|
...nextSteps.map((s) => ` ${s}`),
|
|
227
233
|
'',
|
|
234
|
+
...(pnpmPin.kind === 'unread'
|
|
235
|
+
? [
|
|
236
|
+
`package.json has no packageManager: pnpm's version couldn't be read here (${pnpmPin.reason}).`,
|
|
237
|
+
'Add "packageManager": "pnpm@<version>" (the pnpm you install with), so kindgi build, CI and teammates use the same pnpm.',
|
|
238
|
+
'',
|
|
239
|
+
]
|
|
240
|
+
: []),
|
|
228
241
|
"Read the pack's README.md for details.",
|
|
229
242
|
'',
|
|
230
243
|
].join('\n');
|
|
@@ -233,6 +246,7 @@ async function runInitFresh(ctx, templatesRoot, skillsRoot, packName, targetDir)
|
|
|
233
246
|
packId: args.packName,
|
|
234
247
|
packVersion: DEFAULT_PACK_VERSION,
|
|
235
248
|
packageManager,
|
|
249
|
+
...(pnpmPin.kind === 'pinned' && { packageManagerField: `pnpm@${pnpmPin.version}` }),
|
|
236
250
|
dependencies: specs,
|
|
237
251
|
path: args.targetDir,
|
|
238
252
|
filesWritten: filesWritten.length,
|
|
@@ -245,6 +259,30 @@ async function runInitFresh(ctx, templatesRoot, skillsRoot, packName, targetDir)
|
|
|
245
259
|
rendered: { stdout: rendered.stdout, stderr },
|
|
246
260
|
};
|
|
247
261
|
}
|
|
262
|
+
/**
|
|
263
|
+
* A TS template pack that stands alone (nothing at or above its folder
|
|
264
|
+
* names a package manager) gets `"packageManager": "pnpm@<version>"`:
|
|
265
|
+
* the pnpm `pnpm --version` gives in the new pack's folder. Inside an
|
|
266
|
+
* existing project, the project's own setup governs: nothing is written.
|
|
267
|
+
*/
|
|
268
|
+
async function pinStandalonePnpm(ctx, packDir) {
|
|
269
|
+
if ((await declaredPackageManager(dirname(packDir))) !== undefined)
|
|
270
|
+
return { kind: 'inside' };
|
|
271
|
+
let version;
|
|
272
|
+
try {
|
|
273
|
+
version = await (ctx.initSeam?.pnpmVersion ?? readPnpmVersion)(packDir);
|
|
274
|
+
}
|
|
275
|
+
catch (err) {
|
|
276
|
+
return { kind: 'unread', reason: `pnpm --version: ${err.message}` };
|
|
277
|
+
}
|
|
278
|
+
if (!isPackageVersion(version)) {
|
|
279
|
+
return { kind: 'unread', reason: `pnpm --version printed "${version}"` };
|
|
280
|
+
}
|
|
281
|
+
const path = join(packDir, 'package.json');
|
|
282
|
+
const manifest = JSON.parse(await readFile(path, 'utf8'));
|
|
283
|
+
await writeFile(path, `${JSON.stringify({ ...manifest, packageManager: `pnpm@${version}` }, null, 2)}\n`, 'utf8');
|
|
284
|
+
return { kind: 'pinned', version };
|
|
285
|
+
}
|
|
248
286
|
/**
|
|
249
287
|
* The python template: a Python pack (`[tool.kindgi]` in `pyproject.toml`).
|
|
250
288
|
* No Node project — `kindgi` (Python) comes from PyPI within the CLI's
|