@ai-dossier/cli 0.9.1 → 0.10.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.
@@ -0,0 +1,438 @@
1
+ "use strict";
2
+ /**
3
+ * Runstate protocol (`runstate:v1`) — the milestone comments issue-workflow dossiers
4
+ * append to a GitHub issue after every phase.
5
+ *
6
+ * This module is the executable copy of the "Runstate Milestones" table in
7
+ * `imboard-ai/git/full-cycle-issue@3.8.0`. Dossiers used to ask agents to reproduce a
8
+ * markdown heredoc by hand; smaller models skipped it or pasted `$(date …)` literally.
9
+ * Everything here is pure and dependency-free so it can be unit tested without touching
10
+ * `gh`, the network, or the filesystem.
11
+ */
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.NEXT_VALUES = exports.RESUME_LOOP_CAP = exports.PHASE_SPECS = exports.MAX_BODY_LENGTH = exports.MAX_VALUE_LENGTH = exports.BLOCKED_REQUIRED = exports.PATH_KEYS = exports.STATUSES = exports.PHASES = exports.RUNSTATE_MARKER = void 0;
14
+ exports.isIssueNumber = isIssueNumber;
15
+ exports.isAcKey = isAcKey;
16
+ exports.isPhase = isPhase;
17
+ exports.isStatus = isStatus;
18
+ exports.defaultNext = defaultNext;
19
+ exports.requiredKeys = requiredKeys;
20
+ exports.validateMilestone = validateMilestone;
21
+ exports.nowStamp = nowStamp;
22
+ exports.buildMilestone = buildMilestone;
23
+ exports.splitPair = splitPair;
24
+ exports.parseMilestone = parseMilestone;
25
+ exports.parseMilestones = parseMilestones;
26
+ exports.mintRunId = mintRunId;
27
+ exports.hitLoopCap = hitLoopCap;
28
+ exports.computeResume = computeResume;
29
+ const node_crypto_1 = require("node:crypto");
30
+ /** Marker that opens every runstate comment. Readers filter on this exact prefix. */
31
+ exports.RUNSTATE_MARKER = '<!-- runstate:v1 -->';
32
+ /** Workflow phases, in execution order. */
33
+ exports.PHASES = ['gate', 'setup', 'plan', 'implement', 'review', 'ship', 'report'];
34
+ /** Milestone statuses. */
35
+ exports.STATUSES = ['done', 'partial', 'blocked', 'awaiting-merge'];
36
+ /**
37
+ * Keys whose values are paths and must therefore be absolute — the dossier rule is
38
+ * "paths are absolute", and a relative worktree path makes a resume unresolvable from
39
+ * a different working directory.
40
+ */
41
+ exports.PATH_KEYS = ['worktree', 'planning'];
42
+ /** Keys required whenever a phase reports `status=blocked`. */
43
+ exports.BLOCKED_REQUIRED = ['reason'];
44
+ /**
45
+ * Caps that keep a milestone postable. GitHub rejects an issue comment over 65536
46
+ * characters with an opaque 422, and `execFileSync` hits E2BIG well before that on some
47
+ * platforms — both surface as "gh failed" with no hint that size was the cause. Checking
48
+ * here turns those into a named key and a number.
49
+ */
50
+ exports.MAX_VALUE_LENGTH = 4000;
51
+ exports.MAX_BODY_LENGTH = 60000;
52
+ /**
53
+ * `review` reports the same keys whether it finished or still has agents pending, so the
54
+ * list lives once — a key added to one status must never drift from the other.
55
+ */
56
+ const REVIEW_KEYS = ['head', 'fixed', 'escalated', 'agents_done', 'agents_pending'];
57
+ exports.PHASE_SPECS = {
58
+ gate: {
59
+ statuses: ['done', 'blocked'],
60
+ required: { done: ['base_branch', 'warnings'] },
61
+ },
62
+ setup: {
63
+ statuses: ['done', 'blocked'],
64
+ required: { done: ['branch', 'worktree', 'pool_claimed', 'base_branch'] },
65
+ },
66
+ plan: {
67
+ statuses: ['done', 'blocked'],
68
+ required: { done: ['planning', 'head', 'open_questions', 'visual_review'] },
69
+ },
70
+ implement: {
71
+ statuses: ['done', 'blocked'],
72
+ required: { done: ['head', 'files', 'tests_added', 'tests_run', 'ci_parity'] },
73
+ },
74
+ review: {
75
+ statuses: ['done', 'partial', 'blocked'],
76
+ required: { done: REVIEW_KEYS, partial: REVIEW_KEYS },
77
+ },
78
+ ship: {
79
+ statuses: ['awaiting-merge', 'done', 'blocked'],
80
+ required: {
81
+ 'awaiting-merge': ['pr', 'head', 'ci_fix_attempts'],
82
+ done: ['pr', 'merge_commit', 'ci_fix_attempts', 'cleanup'],
83
+ },
84
+ },
85
+ report: {
86
+ statuses: ['done'],
87
+ required: { done: ['pr', 'traps_added'] },
88
+ },
89
+ };
90
+ /**
91
+ * `r-<issue>-<hex>`, minted once per run by the gate phase. Accepts four or more hex
92
+ * chars so a longer id from another minter still reads back as valid.
93
+ */
94
+ const RUN_ID_RE = /^r-\d+-[0-9a-f]{4,}$/;
95
+ /** Random bytes in a minted run id; 2 bytes renders as the 4 hex chars in `r-440-ab56`. */
96
+ const RUN_ID_RANDOM_BYTES = 2;
97
+ /** Characters in the abbreviated SHA `git rev-parse --short HEAD` prints. */
98
+ const SHORT_SHA_LENGTH = 7;
99
+ /** Consecutive `blocked` milestones on one phase that mean the run is looping. */
100
+ exports.RESUME_LOOP_CAP = 3;
101
+ /** Suffix `implement` milestones add to `head=` when the worktree had uncommitted changes. */
102
+ const DIRTY_HEAD_SUFFIX_RE = /-dirty$/;
103
+ /** Every value `next=` may legally carry: a phase to re-enter, or `done`. */
104
+ exports.NEXT_VALUES = [...exports.PHASES, 'done'];
105
+ /** GitHub issue numbers are positive integers; anything else is a caller mistake. */
106
+ function isIssueNumber(value) {
107
+ return /^[1-9]\d*$/.test(value);
108
+ }
109
+ /**
110
+ * Keys exempt from the no-spaces rule: acceptance-criterion lines are prose by nature.
111
+ * Matches `ac`, `ac1`, `ac_results`, `ac2_note`, …
112
+ */
113
+ const AC_KEY_RE = /^ac(\d+)?(_[a-z0-9_]+)?$/;
114
+ /** True when `key` may carry spaces in its value. */
115
+ function isAcKey(key) {
116
+ return AC_KEY_RE.test(key);
117
+ }
118
+ function isPhase(value) {
119
+ return exports.PHASES.includes(value);
120
+ }
121
+ function isStatus(value) {
122
+ return exports.STATUSES.includes(value);
123
+ }
124
+ /**
125
+ * The phase that follows `phase`, for the milestone's `next=` line.
126
+ *
127
+ * - `blocked` ends the run, so `next=done`.
128
+ * - the two non-terminal statuses keep the run inside the same phase: ship's
129
+ * `awaiting-merge` is the FIRST of ship's two milestones (CI wait, then teardown),
130
+ * and a `partial` review still has agents left to run — which is exactly how
131
+ * gate-issue's resume table reads them back.
132
+ * - otherwise the linear order gate → setup → plan → implement → review → ship →
133
+ * report → done.
134
+ */
135
+ function defaultNext(phase, status) {
136
+ if (status === 'blocked')
137
+ return 'done';
138
+ if (status === 'awaiting-merge' || status === 'partial')
139
+ return phase;
140
+ const idx = exports.PHASES.indexOf(phase);
141
+ return idx === exports.PHASES.length - 1 ? 'done' : exports.PHASES[idx + 1];
142
+ }
143
+ /** The keys `phase` must carry when reporting `status`. */
144
+ function requiredKeys(phase, status) {
145
+ const spec = exports.PHASE_SPECS[phase];
146
+ const base = spec.required[status] ?? [];
147
+ return status === 'blocked' ? [...base, ...exports.BLOCKED_REQUIRED] : base;
148
+ }
149
+ /**
150
+ * The single most important thing wrong with one `key=value` pair, or null when it is
151
+ * well-formed. Checked in the order an author would want to hear about them.
152
+ */
153
+ function firstKeyProblem(key, value) {
154
+ if (!/^[a-z][a-z0-9_]*$/.test(key)) {
155
+ return `Invalid key '${key}' — use lower_snake_case, e.g. base_branch`;
156
+ }
157
+ if (value === '') {
158
+ return `Key '${key}' has an empty value — omit the key or give it a value`;
159
+ }
160
+ if (value.includes('$')) {
161
+ return `Key '${key}' contains '$' — values must be literal; shell expansions like $(date …) end up pasted verbatim`;
162
+ }
163
+ // Checked before the ac* whitespace exemption: one milestone line is one key, so a
164
+ // newline in ANY value silently splits into extra `key=` lines that readers would
165
+ // parse as real state. Not exempt for ac* keys.
166
+ if (/[\r\n]/.test(value)) {
167
+ return `Key '${key}' contains a newline — every value must be a single line, or it splits into extra key= lines in the posted comment; collapse it (use ' / ' or ',') and retry`;
168
+ }
169
+ if (value.length > exports.MAX_VALUE_LENGTH) {
170
+ return `Key '${key}' is ${value.length} characters — the maximum is ${exports.MAX_VALUE_LENGTH}; summarise it (e.g. a count, or a path to the full text) instead of inlining it`;
171
+ }
172
+ if (/\s/.test(value) && !isAcKey(key)) {
173
+ return `Key '${key}' contains whitespace — values must not contain spaces (use '-' or ','); only ac* keys are exempt`;
174
+ }
175
+ if (exports.PATH_KEYS.includes(key) && !value.startsWith('/')) {
176
+ return `Key '${key}' must be an absolute path, got '${value}'`;
177
+ }
178
+ return null;
179
+ }
180
+ /**
181
+ * Validate a milestone against the protocol.
182
+ *
183
+ * @returns one actionable line per problem; an empty array means valid.
184
+ */
185
+ function validateMilestone(input) {
186
+ const errors = [];
187
+ const { phase, status, run } = input;
188
+ const keys = input.keys ?? [];
189
+ if (!isPhase(phase)) {
190
+ errors.push(`Unknown phase '${phase}' — expected one of: ${exports.PHASES.join(', ')}`);
191
+ }
192
+ if (!isStatus(status)) {
193
+ errors.push(`Unknown status '${status}' — expected one of: ${exports.STATUSES.join(', ')}`);
194
+ }
195
+ else if (isPhase(phase)) {
196
+ const allowed = exports.PHASE_SPECS[phase].statuses;
197
+ if (!allowed.includes(status)) {
198
+ errors.push(`Status '${status}' is not valid for phase '${phase}' — expected one of: ${allowed.join(', ')}`);
199
+ }
200
+ }
201
+ if (!RUN_ID_RE.test(run)) {
202
+ errors.push(`Invalid run id '${run}' — expected r-<issue>-<hex>, e.g. r-440-ab56 (mint one with: ai-dossier runstate mint --issue <n>)`);
203
+ }
204
+ // An unchecked --next lands verbatim in the comment: a typo sends the next resume to a
205
+ // phase that does not exist, and whitespace/newlines corrupt the line outright.
206
+ if (input.next !== undefined && !exports.NEXT_VALUES.includes(input.next)) {
207
+ errors.push(`Invalid --next '${input.next}' — expected one of: ${exports.NEXT_VALUES.join(', ')} (omit --next to use the default for this phase and status)`);
208
+ }
209
+ // One line per offending key — an agent fixes the first problem with a value and
210
+ // re-runs, so listing every way the same value is wrong is noise, not help.
211
+ const seen = new Map();
212
+ for (const [key, value] of keys) {
213
+ if (seen.has(key)) {
214
+ errors.push(`Duplicate key '${key}' — each key may appear at most once`);
215
+ continue;
216
+ }
217
+ seen.set(key, value);
218
+ const problem = firstKeyProblem(key, value);
219
+ if (problem)
220
+ errors.push(problem);
221
+ }
222
+ if (isPhase(phase) && isStatus(status) && exports.PHASE_SPECS[phase].statuses.includes(status)) {
223
+ const missing = requiredKeys(phase, status).filter((k) => !seen.has(k));
224
+ if (missing.length > 0) {
225
+ errors.push(`Phase '${phase}' with status '${status}' requires ${missing.map((k) => `${k}=`).join(' ')} — add with --kv ${missing.map((k) => `${k}=<value>`).join(' --kv ')}`);
226
+ }
227
+ }
228
+ return errors;
229
+ }
230
+ /** Current time as `YYYY-MM-DDTHH:MM:SSZ` (the dossier template's `date -u` format). */
231
+ function nowStamp(date = new Date()) {
232
+ return `${date.toISOString().slice(0, 19)}Z`;
233
+ }
234
+ /**
235
+ * Build the milestone comment body. Does not validate — call
236
+ * {@link validateMilestone} first.
237
+ */
238
+ function buildMilestone(input) {
239
+ const at = input.at ?? nowStamp();
240
+ const next = input.next ??
241
+ (isPhase(input.phase) && isStatus(input.status)
242
+ ? defaultNext(input.phase, input.status)
243
+ : 'done');
244
+ const lines = [
245
+ exports.RUNSTATE_MARKER,
246
+ `phase=${input.phase} status=${input.status} run=${input.run} at=${at}`,
247
+ ...(input.keys ?? []).map(([k, v]) => `${k}=${v}`),
248
+ `next=${next}`,
249
+ ];
250
+ return `${lines.join('\n')}\n`;
251
+ }
252
+ /**
253
+ * Split one `key=value` token at its FIRST `=`, so a value may itself contain `=`.
254
+ * Returns null when nothing precedes the separator.
255
+ *
256
+ * The single definition of the pair grammar: {@link parseMilestone} reads it back off an
257
+ * issue comment and the `--kv` flag parser reads it off argv, and the two must agree.
258
+ */
259
+ function splitPair(token) {
260
+ const eq = token.indexOf('=');
261
+ if (eq <= 0)
262
+ return null;
263
+ return [token.slice(0, eq), token.slice(eq + 1)];
264
+ }
265
+ /**
266
+ * Parse a runstate comment body. Returns `null` when `body` is not a runstate comment.
267
+ *
268
+ * Tolerant by design: a milestone posted by an older dossier (or a hand-written one)
269
+ * should still be readable by `runstate last` even if it would not pass validation.
270
+ */
271
+ function parseMilestone(body) {
272
+ if (!body.startsWith(exports.RUNSTATE_MARKER))
273
+ return null;
274
+ const keys = {};
275
+ const lines = body.split('\n').slice(1);
276
+ for (const raw of lines) {
277
+ const line = raw.trim();
278
+ if (line === '' || line.startsWith('<!--'))
279
+ continue;
280
+ // The header line packs several pairs; later lines carry exactly one each, and
281
+ // their values may contain spaces (ac* keys), so only the header is split on space.
282
+ const isHeader = line.startsWith('phase=');
283
+ const pairs = isHeader ? line.split(/\s+/) : [line];
284
+ for (const pair of pairs) {
285
+ const kv = splitPair(pair);
286
+ if (!kv)
287
+ continue;
288
+ const [key, value] = kv;
289
+ if (!(key in keys))
290
+ keys[key] = value;
291
+ }
292
+ }
293
+ return {
294
+ phase: keys.phase ?? '',
295
+ status: keys.status ?? '',
296
+ run: keys.run ?? '',
297
+ at: keys.at ?? '',
298
+ next: keys.next ?? '',
299
+ keys,
300
+ };
301
+ }
302
+ /** Extract every runstate milestone from a list of comment bodies, oldest first. */
303
+ function parseMilestones(bodies) {
304
+ const out = [];
305
+ for (const body of bodies) {
306
+ const parsed = parseMilestone(body);
307
+ if (parsed)
308
+ out.push(parsed);
309
+ }
310
+ return out;
311
+ }
312
+ /** Mint a fresh run id: `r-<issue>-<4 hex>`. */
313
+ function mintRunId(issue) {
314
+ return `r-${issue}-${(0, node_crypto_1.randomBytes)(RUN_ID_RANDOM_BYTES).toString('hex')}`;
315
+ }
316
+ /**
317
+ * True when the last {@link RESUME_LOOP_CAP} milestones are all `blocked` on the same
318
+ * phase — the run is retrying the same wall and needs a human, not another resume.
319
+ */
320
+ function hitLoopCap(milestones) {
321
+ if (milestones.length < exports.RESUME_LOOP_CAP)
322
+ return false;
323
+ const streak = milestones.slice(-exports.RESUME_LOOP_CAP);
324
+ return (streak.every((m) => m.status === 'blocked') &&
325
+ streak.every((m) => m.phase === streak[0].phase) &&
326
+ streak[0].phase !== '');
327
+ }
328
+ /**
329
+ * Where each phase's run re-enters, given that its own milestone is the latest one.
330
+ *
331
+ * Every phase downstream of `setup` re-checks the setup claims first: a branch deleted on
332
+ * the remote or a reaped worktree invalidates everything recorded after it, so the run
333
+ * has to rebuild the workspace before it can trust its own later milestones.
334
+ */
335
+ const PHASE_RESUMERS = {
336
+ gate: () => ({ resume_from: 'setup' }),
337
+ setup: (scan) => ({ resume_from: scan.setupOk() ? 'plan' : 'setup' }),
338
+ plan: (scan) => {
339
+ if (!scan.setupOk())
340
+ return { resume_from: 'setup' };
341
+ const planning = scan.context.planning;
342
+ if (!planning || !scan.probe.fileExists(planning))
343
+ return { resume_from: 'plan' };
344
+ scan.pass('planning');
345
+ return { resume_from: 'implement' };
346
+ },
347
+ implement: (scan) => {
348
+ if (!scan.setupOk())
349
+ return { resume_from: 'setup' };
350
+ const head = scan.probe.headOf(scan.context.worktree);
351
+ const claimed = (scan.last.keys.head ?? '').replace(DIRTY_HEAD_SUFFIX_RE, '');
352
+ // The milestone may record a longer or shorter abbreviation than `--short` prints,
353
+ // so compare on the short-SHA prefix rather than for equality.
354
+ if (!head || !claimed || !head.startsWith(claimed.slice(0, SHORT_SHA_LENGTH))) {
355
+ return { resume_from: 'implement' };
356
+ }
357
+ scan.pass('head');
358
+ return { resume_from: 'review' };
359
+ },
360
+ review: (scan) => {
361
+ if (!scan.setupOk())
362
+ return { resume_from: 'setup' };
363
+ // A `partial` review still has agents left to run.
364
+ return { resume_from: scan.last.status === 'partial' ? 'review' : 'ship' };
365
+ },
366
+ ship: (scan) => {
367
+ if (scan.last.status === 'done')
368
+ return { resume_from: 'report' };
369
+ // awaiting-merge: the PR itself decides where to re-enter ship.
370
+ const pr = scan.last.keys.pr;
371
+ const state = pr ? scan.probe.prState(pr) : null;
372
+ if (!state)
373
+ return { resume_from: 'ship' };
374
+ scan.pass('pr');
375
+ if (state.mergedAt)
376
+ return { resume_from: 'ship-teardown' };
377
+ if (state.state === 'OPEN' && state.mergeable === 'MERGEABLE') {
378
+ return { resume_from: 'ship-wait' };
379
+ }
380
+ return { resume_from: 'ship' };
381
+ },
382
+ report: (scan) => {
383
+ if (!scan.probe.issueClosed())
384
+ return { resume_from: 'report' };
385
+ scan.pass('issue-closed');
386
+ return { resume_from: 'done', note: 'already complete' };
387
+ },
388
+ };
389
+ /**
390
+ * Resolve where a run should resume from, implementing the resume verification table in
391
+ * `imboard-ai/git/gate-issue`. Never trusts the milestone alone — every claim is checked
392
+ * against reality through `probe`, and {@link PHASE_RESUMERS} holds the per-phase rules.
393
+ */
394
+ function computeResume(milestones, probe) {
395
+ if (milestones.length === 0) {
396
+ return { resume_from: 'none', run_id: null, verified: [], resume_context: {}, last: null };
397
+ }
398
+ const context = {};
399
+ for (const m of milestones)
400
+ Object.assign(context, m.keys);
401
+ const last = milestones[milestones.length - 1];
402
+ const verified = [];
403
+ const base = { run_id: last.run || null, verified, resume_context: context, last };
404
+ if (hitLoopCap(milestones)) {
405
+ return { ...base, resume_from: last.phase, hard_block: 'resume-loop' };
406
+ }
407
+ // Any blocked milestone resumes at that same phase.
408
+ if (last.status === 'blocked') {
409
+ return { ...base, resume_from: last.phase || 'none' };
410
+ }
411
+ // A phase this version does not know — a hand-written comment, or one written by a
412
+ // newer dossier — is not resumable, so the caller starts over.
413
+ if (!isPhase(last.phase)) {
414
+ return { ...base, resume_from: 'none' };
415
+ }
416
+ const pass = (check) => {
417
+ if (!verified.includes(check))
418
+ verified.push(check);
419
+ };
420
+ const setupOk = () => {
421
+ const { branch, worktree } = context;
422
+ if (!branch || !worktree)
423
+ return false;
424
+ let ok = true;
425
+ if (probe.branchOnRemote(branch))
426
+ pass('branch');
427
+ else
428
+ ok = false;
429
+ if (probe.dirExists(worktree))
430
+ pass('worktree');
431
+ else
432
+ ok = false;
433
+ return ok;
434
+ };
435
+ const { resume_from, note } = PHASE_RESUMERS[last.phase]({ last, context, probe, pass, setupOk });
436
+ return { ...base, resume_from, ...(note ? { note } : {}) };
437
+ }
438
+ //# sourceMappingURL=runstate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runstate.js","sourceRoot":"","sources":["../src/runstate.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"verify-dossier.d.ts","sourceRoot":"","sources":["../src/verify-dossier.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAEV,kBAAkB,EAInB,MAAM,kBAAkB,CAAC;AAmD1B,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;CAClB;AAQD,wBAAsB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,aAAa,SAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAkClF;AAMD,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,kBAAkB,GAC9B,OAAO,CAAC,oBAAoB,CAAC,CAiE/B;AAMD,wBAAsB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,CAsI3F;AAMD,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,wBAAgB,SAAS,IAAI,UAAU,CAmBtC;AAED,wBAAgB,QAAQ,IAAI,IAAI,CAsC/B;AAMD,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAe1C"}
1
+ {"version":3,"file":"verify-dossier.d.ts","sourceRoot":"","sources":["../src/verify-dossier.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAEV,kBAAkB,EAInB,MAAM,kBAAkB,CAAC;AAsD1B,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;CAClB;AAQD,wBAAsB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,aAAa,SAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAkClF;AAMD,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,kBAAkB,GAC9B,OAAO,CAAC,oBAAoB,CAAC,CAqD/B;AAsDD,wBAAsB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,CA8H3F;AAMD,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,wBAAgB,SAAS,IAAI,UAAU,CAmBtC;AAED,wBAAgB,QAAQ,IAAI,IAAI,CAsC/B;AAMD,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAe1C"}
@@ -90,26 +90,15 @@ async function checkSignature(body, frontmatter) {
90
90
  };
91
91
  }
92
92
  const signature = frontmatter.signature;
93
- const trustedKeys = (0, core_1.loadTrustedKeys)();
94
- // Compare keys in their normalized (raw base64) form: the trusted-key list and
95
- // the signature block do not always carry the same encoding.
96
- const normalizedKey = signature.public_key ? (0, core_1.normalizePublicKey)(signature.public_key) : undefined;
97
- const isTrusted = (signature.key_id != null && trustedKeys.has(signature.key_id)) ||
98
- (signature.public_key != null && trustedKeys.has(signature.public_key)) ||
99
- (normalizedKey != null && trustedKeys.has(normalizedKey));
93
+ // The trusted-key list and the signature block do not always carry the same
94
+ // encoding; core resolves that across every form the signature offers.
95
+ const trustedName = (0, core_1.findTrustedIdentifier)((0, core_1.loadTrustedKeys)(), signature);
96
+ const isTrusted = trustedName !== undefined;
100
97
  // Legacy signatures cover the body alone; v2 covers frontmatter + body.
101
98
  const coverage = (0, core_1.signatureCoverage)(signature);
102
99
  const signedPayload = (0, core_1.buildSignedPayload)(frontmatter, body, coverage);
103
100
  const result = await (0, core_1.verifySignature)(signedPayload, signature);
104
101
  if (result.valid) {
105
- let trustedName = '';
106
- if (isTrusted) {
107
- trustedName =
108
- (signature.key_id ? trustedKeys.get(signature.key_id) : undefined) ||
109
- (signature.public_key ? trustedKeys.get(signature.public_key) : undefined) ||
110
- (normalizedKey ? trustedKeys.get(normalizedKey) : undefined) ||
111
- '';
112
- }
113
102
  return {
114
103
  present: true,
115
104
  verified: true,
@@ -134,6 +123,44 @@ async function checkSignature(body, frontmatter) {
134
123
  message: 'Signature verification FAILED',
135
124
  };
136
125
  }
126
+ /** Cap on the identifier suggested below, so a padded `signed_by` cannot fill the terminal. */
127
+ const MAX_SUGGESTED_IDENTIFIER_LENGTH = 64;
128
+ /**
129
+ * Print the `ai-dossier keys add` command that would trust this signer.
130
+ *
131
+ * Every byte here comes from a dossier that is not yet trusted and is printed as
132
+ * a command the user is invited to paste into a shell, so both halves are
133
+ * constrained first. `signed_by` is free-form, and quotes, `$` or backticks in a
134
+ * signer name would turn the hint into arbitrary command execution, so it is
135
+ * stripped to characters that cannot mean anything to the shell. The key is
136
+ * printed only when it is one `keys add` would actually accept — normalization
137
+ * hands back anything it cannot interpret, and printing that inside quotes would
138
+ * splice attacker-chosen text into the command.
139
+ */
140
+ function printTrustHint(signature) {
141
+ // Suggest exactly the key `findTrustedIdentifier` will look up, or the command
142
+ // would appear to succeed and change nothing: the KMS key ARN for a KMS
143
+ // signature, the public key otherwise. Normalized to the canonical raw-key
144
+ // base64, since `public_key` is a multi-line PEM on dossiers signed before
145
+ // 0.8.7 — which would make this command unrunnable.
146
+ const isKms = signature?.algorithm === 'ECDSA-SHA-256';
147
+ const publicKey = isKms
148
+ ? signature?.key_id
149
+ : signature?.public_key && (0, core_1.normalizePublicKey)(signature.public_key);
150
+ if (!publicKey || !((0, core_1.isSupportedPublicKey)(publicKey) || (0, core_1.isKmsKeyIdentifier)(publicKey))) {
151
+ console.log(`\n ${colors.cyan}This signature carries no key in a form that can be trusted.${colors.reset}\n`);
152
+ return;
153
+ }
154
+ const identifier = signature?.signed_by
155
+ ?.split('<')[0]
156
+ .trim()
157
+ .toLowerCase()
158
+ .replace(/\s+/g, '-')
159
+ .replace(/[^a-z0-9._-]/g, '')
160
+ .slice(0, MAX_SUGGESTED_IDENTIFIER_LENGTH) || 'unknown-signer';
161
+ console.log(`\n ${colors.cyan}To trust this signer, run:${colors.reset}`);
162
+ console.log(` ${colors.bright}ai-dossier keys add "${publicKey}" "${identifier}"${colors.reset}\n`);
163
+ }
137
164
  // ============================================================================
138
165
  // Main verification
139
166
  // ============================================================================
@@ -192,13 +219,7 @@ async function verifyDossier(input, options) {
192
219
  if (frontmatter.signature?.signed_by) {
193
220
  console.log(` Signed by: ${frontmatter.signature.signed_by}`);
194
221
  }
195
- console.log(`\n ${colors.cyan}To trust this signer, run:${colors.reset}`);
196
- const sig = frontmatter.signature;
197
- const publicKey = sig?.public_key || sig?.key_id;
198
- const identifier = sig?.signed_by
199
- ? sig.signed_by.split('<')[0].trim().toLowerCase().replace(/\s+/g, '-')
200
- : 'unknown-signer';
201
- console.log(` ${colors.bright}dossier keys add "${publicKey}" "${identifier}"${colors.reset}\n`);
222
+ printTrustHint(frontmatter.signature);
202
223
  }
203
224
  else {
204
225
  warning(signatureResult.message);
@@ -1 +1 @@
1
- {"version":3,"file":"verify-dossier.js","sourceRoot":"","sources":["../src/verify-dossier.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"verify-dossier.js","sourceRoot":"","sources":["../src/verify-dossier.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ai-dossier/cli",
3
- "version": "0.9.1",
3
+ "version": "0.10.0",
4
4
  "description": "Create, verify, sign, publish, and run dossiers — portable, signed, versioned skills for any LLM tool. The dossier ⇄ Claude Code skill bridge (install-skill / skill-export).",
5
5
  "main": "dist/cli.js",
6
6
  "bin": {