@ai-dossier/cli 0.46.0 → 0.48.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 +33 -1
- package/dist/cache-resolver.d.ts +14 -0
- package/dist/cache-resolver.d.ts.map +1 -1
- package/dist/cache-resolver.js +27 -0
- package/dist/cache-resolver.js.map +1 -1
- package/dist/cli.js +2 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/evidence.d.ts +8 -0
- package/dist/commands/evidence.d.ts.map +1 -0
- package/dist/commands/evidence.js +330 -0
- package/dist/commands/evidence.js.map +1 -0
- package/dist/commands/export.d.ts.map +1 -1
- package/dist/commands/export.js +19 -0
- package/dist/commands/export.js.map +1 -1
- package/dist/commands/publish.d.ts.map +1 -1
- package/dist/commands/publish.js +50 -1
- package/dist/commands/publish.js.map +1 -1
- package/dist/commands/pull.d.ts.map +1 -1
- package/dist/commands/pull.js +17 -1
- package/dist/commands/pull.js.map +1 -1
- package/dist/helpers.d.ts +6 -0
- package/dist/helpers.d.ts.map +1 -1
- package/dist/helpers.js +12 -0
- package/dist/helpers.js.map +1 -1
- package/dist/multi-registry.d.ts +17 -2
- package/dist/multi-registry.d.ts.map +1 -1
- package/dist/multi-registry.js +30 -0
- package/dist/multi-registry.js.map +1 -1
- package/dist/registry-client.d.ts +22 -2
- package/dist/registry-client.d.ts.map +1 -1
- package/dist/registry-client.js +50 -18
- package/dist/registry-client.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -247,7 +247,7 @@ ai-dossier pull org/dossier-a org/dossier-b
|
|
|
247
247
|
ai-dossier pull org/my-dossier --force
|
|
248
248
|
```
|
|
249
249
|
|
|
250
|
-
Pulled dossiers are cached locally with checksum verification. Subsequent `pull` calls skip the download if the version is already cached (use `--force` to override). See [Cache and Version Resolution](#cache-and-version-resolution) for how versionless names are resolved and how to control freshness.
|
|
250
|
+
Pulled dossiers are cached locally with checksum verification. Subsequent `pull` calls skip the download if the version is already cached (use `--force` to override). See [Cache and Version Resolution](#cache-and-version-resolution) for how versionless names are resolved and how to control freshness. When the dossier carries an evidence sidecar, `pull` also fetches it and caches it alongside the content (`+evidence` in the success line) — a missing sidecar is not an error.
|
|
251
251
|
|
|
252
252
|
### Export
|
|
253
253
|
|
|
@@ -264,6 +264,37 @@ ai-dossier export org/my-dossier -o ./local-copy.ds.md
|
|
|
264
264
|
ai-dossier export org/my-dossier --stdout
|
|
265
265
|
```
|
|
266
266
|
|
|
267
|
+
When the dossier carries an evidence sidecar, `export` also writes it next to the output file (`<output minus .ds.md>.evidence.json`); `--stdout` never fetches it.
|
|
268
|
+
|
|
269
|
+
### Evidence
|
|
270
|
+
|
|
271
|
+
An evidence sidecar (`<name>.evidence.json`) records, per rule or section of a dossier, the rationale for why it reads the way it does and pointers to the agent session(s) where that decision was made. It travels alongside a dossier through `publish`/`pull`/`export` but is never loaded by `ai-dossier run` — evidence is for a human or a future author reviewing the dossier, not for an agent executing it.
|
|
272
|
+
|
|
273
|
+
```bash
|
|
274
|
+
# Create a fresh sidecar for a dossier
|
|
275
|
+
ai-dossier evidence init my-dossier.ds.md
|
|
276
|
+
|
|
277
|
+
# Append an entry (session id from AI_DOSSIER_SESSION_ID if --session is omitted)
|
|
278
|
+
ai-dossier evidence add my-dossier.ds.md \
|
|
279
|
+
--anchor "Guiding Principle" --rationale "Autonomous runs must never block on a reply" \
|
|
280
|
+
--session abc-123
|
|
281
|
+
|
|
282
|
+
# Refresh dossier/version/checksum after re-signing the dossier (namespace preserved
|
|
283
|
+
# unless --namespace is given, which rewrites it in place — e.g. after a mis-stamp)
|
|
284
|
+
ai-dossier evidence sync my-dossier.ds.md
|
|
285
|
+
|
|
286
|
+
# Attach the sidecar on publish (auto-attaches a sibling .evidence.json by default)
|
|
287
|
+
ai-dossier publish my-dossier.ds.md --yes
|
|
288
|
+
|
|
289
|
+
# Fetch and read a published dossier's evidence
|
|
290
|
+
ai-dossier evidence show org/my-dossier
|
|
291
|
+
|
|
292
|
+
# Validate a sidecar file against the schema
|
|
293
|
+
ai-dossier evidence validate my-dossier.evidence.json
|
|
294
|
+
```
|
|
295
|
+
|
|
296
|
+
Override the sidecar path with `--evidence <path>`, or skip attaching one (even if a sibling exists) with `--no-evidence`.
|
|
297
|
+
|
|
267
298
|
---
|
|
268
299
|
|
|
269
300
|
## Skills
|
|
@@ -2009,6 +2040,7 @@ Exit 0 (safe) or 1 (unsafe)
|
|
|
2009
2040
|
- ✅ `install-skill` / `skill-export` (Claude Code skill bridge)
|
|
2010
2041
|
- ✅ Execution tracing with verified checksum + signer metadata
|
|
2011
2042
|
- ✅ TTL-based version resolution for the content cache
|
|
2043
|
+
- ✅ Evidence sidecar (`.evidence.json`) — `evidence init/add/sync/validate/show`, wired through publish/pull/export
|
|
2012
2044
|
|
|
2013
2045
|
### v1.0.0 (Stable)
|
|
2014
2046
|
- ⏳ Stable, frozen CLI surface and exit-code contract
|
package/dist/cache-resolver.d.ts
CHANGED
|
@@ -63,6 +63,10 @@ export declare function clearResolutions(): void;
|
|
|
63
63
|
* run/create/install-skill/pull so layout changes happen in one place.
|
|
64
64
|
*/
|
|
65
65
|
export declare function cachedContentPath(dossierName: string, version: string): string;
|
|
66
|
+
/**
|
|
67
|
+
* Path to a cached dossier's evidence sidecar (without checking existence).
|
|
68
|
+
*/
|
|
69
|
+
export declare function cachedEvidencePath(dossierName: string, version: string): string;
|
|
66
70
|
/**
|
|
67
71
|
* Return cached dossier content as a string, or null if not cached.
|
|
68
72
|
* Single source of truth for the `existsSync(contentFile) ? read : miss`
|
|
@@ -83,6 +87,16 @@ export declare function readCachedContent(dossierName: string, version: string):
|
|
|
83
87
|
export declare function writeCachedContent(dossierName: string, version: string, content: string, sourceRegistry: string | undefined, opts?: {
|
|
84
88
|
throwOnError?: boolean;
|
|
85
89
|
}): void;
|
|
90
|
+
/**
|
|
91
|
+
* Write a dossier's evidence sidecar to the cache, mirroring {@link writeCachedContent}'s
|
|
92
|
+
* error handling. No registry-tracking (`.meta.json`) side effects — evidence is a sidecar
|
|
93
|
+
* to the content cache, not a cache entry of its own.
|
|
94
|
+
*
|
|
95
|
+
* Best-effort by default (errors swallowed). Pass `throwOnError: true` to surface failures.
|
|
96
|
+
*/
|
|
97
|
+
export declare function writeCachedEvidence(dossierName: string, version: string, evidence: string, opts?: {
|
|
98
|
+
throwOnError?: boolean;
|
|
99
|
+
}): void;
|
|
86
100
|
/**
|
|
87
101
|
* Parse a `--max-age <seconds>` CLI option into a number, or return undefined
|
|
88
102
|
* when unset. Throws when the value is provided but not a valid number.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache-resolver.d.ts","sourceRoot":"","sources":["../src/cache-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAWH,eAAO,MAAM,8BAA8B,MAAM,CAAC;AAClD,eAAO,MAAM,SAAS,QAA+C,CAAC;AACtE,eAAO,MAAM,cAAc,QAAsC,CAAC;AAElE,MAAM,WAAW,gBAAgB;IAC/B,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,UAAU,GAAG,aAAa,CAAC;AAEpE,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,gBAAgB,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+FAA+F;IAC/F,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,2DAA2D;IAC3D,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,gEAAgE;IAChE,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAgCD,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,GAAG,IAAI,CA4BnF;AAED,8EAA8E;AAC9E,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CActE;AASD;;;;;;;;;;;GAWG;AACH,wBAAsB,oBAAoB,CACxC,WAAW,EAAE,MAAM,EACnB,IAAI,GAAE,cAAmB,GACxB,OAAO,CAAC,eAAe,CAAC,CAwF1B;AAED,sDAAsD;AACtD,wBAAgB,eAAe,IAAI,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,gBAAgB,CAAA;CAAE,CAAC,CA2BnF;AAED,kFAAkF;AAClF,wBAAgB,gBAAgB,IAAI,IAAI,CAIvC;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAE9E;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAQrF;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,MAAM,GAAG,SAAS,EAClC,IAAI,GAAE;IAAE,YAAY,CAAC,EAAE,OAAO,CAAA;CAAO,GACpC,IAAI,CAsBN;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAO7E"}
|
|
1
|
+
{"version":3,"file":"cache-resolver.d.ts","sourceRoot":"","sources":["../src/cache-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAWH,eAAO,MAAM,8BAA8B,MAAM,CAAC;AAClD,eAAO,MAAM,SAAS,QAA+C,CAAC;AACtE,eAAO,MAAM,cAAc,QAAsC,CAAC;AAElE,MAAM,WAAW,gBAAgB;IAC/B,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,UAAU,GAAG,aAAa,CAAC;AAEpE,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,gBAAgB,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+FAA+F;IAC/F,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,2DAA2D;IAC3D,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,gEAAgE;IAChE,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAgCD,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,GAAG,IAAI,CA4BnF;AAED,8EAA8E;AAC9E,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CActE;AASD;;;;;;;;;;;GAWG;AACH,wBAAsB,oBAAoB,CACxC,WAAW,EAAE,MAAM,EACnB,IAAI,GAAE,cAAmB,GACxB,OAAO,CAAC,eAAe,CAAC,CAwF1B;AAED,sDAAsD;AACtD,wBAAgB,eAAe,IAAI,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,gBAAgB,CAAA;CAAE,CAAC,CA2BnF;AAED,kFAAkF;AAClF,wBAAgB,gBAAgB,IAAI,IAAI,CAIvC;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAE9E;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAE/E;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAQrF;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,MAAM,GAAG,SAAS,EAClC,IAAI,GAAE;IAAE,YAAY,CAAC,EAAE,OAAO,CAAA;CAAO,GACpC,IAAI,CAsBN;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE;IAAE,YAAY,CAAC,EAAE,OAAO,CAAA;CAAO,GACpC,IAAI,CASN;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAO7E"}
|
package/dist/cache-resolver.js
CHANGED
|
@@ -24,8 +24,10 @@ exports.resolveCachedVersion = resolveCachedVersion;
|
|
|
24
24
|
exports.listResolutions = listResolutions;
|
|
25
25
|
exports.clearResolutions = clearResolutions;
|
|
26
26
|
exports.cachedContentPath = cachedContentPath;
|
|
27
|
+
exports.cachedEvidencePath = cachedEvidencePath;
|
|
27
28
|
exports.readCachedContent = readCachedContent;
|
|
28
29
|
exports.writeCachedContent = writeCachedContent;
|
|
30
|
+
exports.writeCachedEvidence = writeCachedEvidence;
|
|
29
31
|
exports.parseMaxAgeOption = parseMaxAgeOption;
|
|
30
32
|
const node_fs_1 = __importDefault(require("node:fs"));
|
|
31
33
|
const node_os_1 = __importDefault(require("node:os"));
|
|
@@ -247,6 +249,12 @@ function clearResolutions() {
|
|
|
247
249
|
function cachedContentPath(dossierName, version) {
|
|
248
250
|
return node_path_1.default.join((0, helpers_1.safeDossierPath)(exports.CACHE_DIR, dossierName), `${version}.ds.md`);
|
|
249
251
|
}
|
|
252
|
+
/**
|
|
253
|
+
* Path to a cached dossier's evidence sidecar (without checking existence).
|
|
254
|
+
*/
|
|
255
|
+
function cachedEvidencePath(dossierName, version) {
|
|
256
|
+
return node_path_1.default.join((0, helpers_1.safeDossierPath)(exports.CACHE_DIR, dossierName), `${version}.evidence.json`);
|
|
257
|
+
}
|
|
250
258
|
/**
|
|
251
259
|
* Return cached dossier content as a string, or null if not cached.
|
|
252
260
|
* Single source of truth for the `existsSync(contentFile) ? read : miss`
|
|
@@ -291,6 +299,25 @@ function writeCachedContent(dossierName, version, content, sourceRegistry, opts
|
|
|
291
299
|
// best-effort: swallow (matches prior create.ts / install-skill.ts behaviour)
|
|
292
300
|
}
|
|
293
301
|
}
|
|
302
|
+
/**
|
|
303
|
+
* Write a dossier's evidence sidecar to the cache, mirroring {@link writeCachedContent}'s
|
|
304
|
+
* error handling. No registry-tracking (`.meta.json`) side effects — evidence is a sidecar
|
|
305
|
+
* to the content cache, not a cache entry of its own.
|
|
306
|
+
*
|
|
307
|
+
* Best-effort by default (errors swallowed). Pass `throwOnError: true` to surface failures.
|
|
308
|
+
*/
|
|
309
|
+
function writeCachedEvidence(dossierName, version, evidence, opts = {}) {
|
|
310
|
+
const dir = (0, helpers_1.safeDossierPath)(exports.CACHE_DIR, dossierName);
|
|
311
|
+
try {
|
|
312
|
+
node_fs_1.default.mkdirSync(dir, { recursive: true, mode: 0o700 });
|
|
313
|
+
node_fs_1.default.writeFileSync(node_path_1.default.join(dir, `${version}.evidence.json`), evidence, 'utf8');
|
|
314
|
+
}
|
|
315
|
+
catch (err) {
|
|
316
|
+
if (opts.throwOnError)
|
|
317
|
+
throw err;
|
|
318
|
+
// best-effort: swallow (matches writeCachedContent's default behaviour)
|
|
319
|
+
}
|
|
320
|
+
}
|
|
294
321
|
/**
|
|
295
322
|
* Parse a `--max-age <seconds>` CLI option into a number, or return undefined
|
|
296
323
|
* when unset. Throws when the value is provided but not a valid number.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache-resolver.js","sourceRoot":"","sources":["../src/cache-resolver.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;GAaG;;;;;;AAoEH,0CA4BC;AAGD,kDAcC;AAqBD,oDA2FC;AAGD,0CA2BC;AAGD,4CAIC;AAOD,8CAEC;AAOD,8CAQC;AAaD,gDA4BC;AAOD,8CAOC;
|
|
1
|
+
{"version":3,"file":"cache-resolver.js","sourceRoot":"","sources":["../src/cache-resolver.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.js
CHANGED
|
@@ -15,6 +15,7 @@ const commands_1 = require("./commands/commands");
|
|
|
15
15
|
const config_cmd_1 = require("./commands/config-cmd");
|
|
16
16
|
const create_1 = require("./commands/create");
|
|
17
17
|
const doctor_1 = require("./commands/doctor");
|
|
18
|
+
const evidence_1 = require("./commands/evidence");
|
|
18
19
|
const export_1 = require("./commands/export");
|
|
19
20
|
const format_1 = require("./commands/format");
|
|
20
21
|
const from_file_1 = require("./commands/from-file");
|
|
@@ -82,6 +83,7 @@ Agent-friendly: Run \`ai-dossier --agent\` for machine-readable capabilities.`);
|
|
|
82
83
|
(0, pull_1.registerPullCommand)(commander_1.program);
|
|
83
84
|
(0, export_1.registerExportCommand)(commander_1.program);
|
|
84
85
|
(0, publish_1.registerPublishCommand)(commander_1.program);
|
|
86
|
+
(0, evidence_1.registerEvidenceCommand)(commander_1.program);
|
|
85
87
|
(0, remove_1.registerRemoveCommand)(commander_1.program);
|
|
86
88
|
// Skills
|
|
87
89
|
(0, install_skill_1.registerInstallSkillCommand)(commander_1.program);
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `ai-dossier evidence` — author, attach, fetch and display a dossier's `.evidence.json`
|
|
3
|
+
* sidecar (RFC-0001 authoring evidence, #733/#734/#735). Never loaded by `ai-dossier run`.
|
|
4
|
+
*/
|
|
5
|
+
import { type Command } from 'commander';
|
|
6
|
+
/** Registers the `evidence` command tree (show, init, add, sync, validate). */
|
|
7
|
+
export declare function registerEvidenceCommand(program: Command): void;
|
|
8
|
+
//# sourceMappingURL=evidence.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evidence.d.ts","sourceRoot":"","sources":["../../src/commands/evidence.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAcH,OAAO,EAAE,KAAK,OAAO,EAAU,MAAM,WAAW,CAAC;AAyXjD,+EAA+E;AAC/E,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAU9D"}
|
|
@@ -0,0 +1,330 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* `ai-dossier evidence` — author, attach, fetch and display a dossier's `.evidence.json`
|
|
4
|
+
* sidecar (RFC-0001 authoring evidence, #733/#734/#735). Never loaded by `ai-dossier run`.
|
|
5
|
+
*/
|
|
6
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
7
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
8
|
+
};
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.registerEvidenceCommand = registerEvidenceCommand;
|
|
11
|
+
const node_fs_1 = __importDefault(require("node:fs"));
|
|
12
|
+
const node_os_1 = __importDefault(require("node:os"));
|
|
13
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
14
|
+
const core_1 = require("@ai-dossier/core");
|
|
15
|
+
const commander_1 = require("commander");
|
|
16
|
+
const credentials_1 = require("../credentials");
|
|
17
|
+
const helpers_1 = require("../helpers");
|
|
18
|
+
const multi_registry_1 = require("../multi-registry");
|
|
19
|
+
const registry_client_1 = require("../registry-client");
|
|
20
|
+
/** Providers `evidence add` accepts — mirrors the schema's `evidence[].provider` enum. */
|
|
21
|
+
const EVIDENCE_PROVIDERS = [
|
|
22
|
+
'claude-code',
|
|
23
|
+
'codex',
|
|
24
|
+
'opencode',
|
|
25
|
+
'gemini-cli',
|
|
26
|
+
'other',
|
|
27
|
+
];
|
|
28
|
+
/** Dossier file extension, hoisted since several places derive a name by stripping it. */
|
|
29
|
+
const DOSSIER_EXT = '.ds.md';
|
|
30
|
+
/** Namespace resolution identical to `publish` — explicit flag, else credentials. */
|
|
31
|
+
function resolveNamespace(explicit) {
|
|
32
|
+
if (explicit)
|
|
33
|
+
return explicit;
|
|
34
|
+
const credentials = (0, credentials_1.loadCredentials)();
|
|
35
|
+
if (credentials) {
|
|
36
|
+
return credentials.orgs.length > 0 ? credentials.orgs[0] : credentials.username;
|
|
37
|
+
}
|
|
38
|
+
console.error('\n❌ --namespace required (not logged in)\n');
|
|
39
|
+
process.exit(1);
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Resolve the namespace segment of a sidecar's `dossier` field. An explicit `--namespace`
|
|
43
|
+
* always wins. Otherwise, a sidecar that already has a `dossier` value KEEPS its current
|
|
44
|
+
* namespace — a plain `evidence add`/`evidence sync` must never silently revert a deliberately
|
|
45
|
+
* set namespace back to the account default; that is the exact mis-stamping trap (#736) this
|
|
46
|
+
* command exists to let an author fix *in place*, by passing `--namespace` when they mean to
|
|
47
|
+
* change it. Only a brand-new sidecar (`existingDossier` undefined) falls back to `publish`'s
|
|
48
|
+
* own default chain — which also means a plain `sync`/`add` on an already-identified sidecar
|
|
49
|
+
* needs no credentials at all.
|
|
50
|
+
*/
|
|
51
|
+
function resolveDossierNamespace(existingDossier, explicit) {
|
|
52
|
+
if (explicit)
|
|
53
|
+
return explicit;
|
|
54
|
+
const existingNamespace = existingDossier?.includes('/')
|
|
55
|
+
? existingDossier.slice(0, existingDossier.lastIndexOf('/'))
|
|
56
|
+
: undefined;
|
|
57
|
+
return existingNamespace || resolveNamespace(explicit);
|
|
58
|
+
}
|
|
59
|
+
/** Read + parse a dossier file, exiting on failure. */
|
|
60
|
+
function readDossier(file) {
|
|
61
|
+
if (!node_fs_1.default.existsSync(file)) {
|
|
62
|
+
console.error(`\n❌ File not found: ${file}\n`);
|
|
63
|
+
process.exit(1);
|
|
64
|
+
}
|
|
65
|
+
try {
|
|
66
|
+
return (0, core_1.parseDossierContent)(node_fs_1.default.readFileSync(file, 'utf8'));
|
|
67
|
+
}
|
|
68
|
+
catch (err) {
|
|
69
|
+
console.error(`\n❌ ${err.message}\n`);
|
|
70
|
+
process.exit(1);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Derive a dossier's identity fields — reads the file exactly once. `name` follows `publish`'s
|
|
75
|
+
* own rule (`frontmatter.name || frontmatter.title || basename`). `checksumHash` falls back to
|
|
76
|
+
* `calculateChecksum(body)` when the frontmatter has none: `publish-dossier`'s Step 2 deletes
|
|
77
|
+
* `checksum`/`signature` on edit, restored later by Step 3's `sign`, so `init`/`add` (which may
|
|
78
|
+
* run in between) must not error — the sidecar just records the hash the body currently has,
|
|
79
|
+
* and `sync` after `sign` reconciles it. `sync` itself always runs after `sign`, so it checks
|
|
80
|
+
* `frontmatter.checksum?.hash` itself before relying on this fallback (see its action below).
|
|
81
|
+
*/
|
|
82
|
+
function deriveIdentity(dossierFile) {
|
|
83
|
+
const { frontmatter, body } = readDossier(dossierFile);
|
|
84
|
+
const name = frontmatter.name || frontmatter.title || node_path_1.default.basename(dossierFile, DOSSIER_EXT);
|
|
85
|
+
const checksumHash = frontmatter.checksum?.hash || (0, core_1.calculateChecksum)(body);
|
|
86
|
+
return { frontmatter, name, checksumHash };
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Apply a derived identity (`deriveIdentity`) to a record's `dossier`/`version`/`checksum`
|
|
90
|
+
* fields. `dossier`'s namespace segment is resolved via `resolveDossierNamespace` (preserved
|
|
91
|
+
* unless `namespace` is given explicitly); `dossier`'s name segment, `version` and `checksum`
|
|
92
|
+
* are always refreshed to the dossier's current frontmatter.
|
|
93
|
+
*/
|
|
94
|
+
function applyIdentity(record, identity, namespace) {
|
|
95
|
+
const ns = resolveDossierNamespace(record.dossier, namespace);
|
|
96
|
+
return {
|
|
97
|
+
...record,
|
|
98
|
+
dossier: `${ns}/${identity.name}`,
|
|
99
|
+
version: identity.frontmatter.version,
|
|
100
|
+
checksum: { algorithm: 'sha256', hash: identity.checksumHash },
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
/** Parse `--extra k=v` pairs into an object, exiting on a malformed entry. */
|
|
104
|
+
function parseExtra(pairs) {
|
|
105
|
+
if (!pairs || pairs.length === 0)
|
|
106
|
+
return undefined;
|
|
107
|
+
const extra = {};
|
|
108
|
+
for (const pair of pairs) {
|
|
109
|
+
const idx = pair.indexOf('=');
|
|
110
|
+
if (idx <= 0) {
|
|
111
|
+
console.error(`\n❌ Invalid --extra '${pair}' — expected k=v\n`);
|
|
112
|
+
process.exit(1);
|
|
113
|
+
}
|
|
114
|
+
extra[pair.slice(0, idx)] = pair.slice(idx + 1);
|
|
115
|
+
}
|
|
116
|
+
return extra;
|
|
117
|
+
}
|
|
118
|
+
/** Read + parse an existing sidecar file, exiting with a clean message on a corrupt one. */
|
|
119
|
+
function loadSidecar(sidecarPath) {
|
|
120
|
+
try {
|
|
121
|
+
return (0, core_1.parseEvidence)(node_fs_1.default.readFileSync(sidecarPath, 'utf8'));
|
|
122
|
+
}
|
|
123
|
+
catch (err) {
|
|
124
|
+
console.error(`\n❌ Evidence file is corrupt: ${sidecarPath}\n ${err.message}\n`);
|
|
125
|
+
process.exit(1);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
/** Write a sidecar record atomically — write to a per-process temp file, then rename. */
|
|
129
|
+
function writeSidecarAtomic(sidecarPath, record) {
|
|
130
|
+
const tmpPath = `${sidecarPath}.tmp.${process.pid}`;
|
|
131
|
+
node_fs_1.default.writeFileSync(tmpPath, `${JSON.stringify(record, null, 2)}\n`, 'utf8');
|
|
132
|
+
node_fs_1.default.renameSync(tmpPath, sidecarPath);
|
|
133
|
+
}
|
|
134
|
+
/** `evidence show` — fetch and render evidence from the registry. */
|
|
135
|
+
function registerShowSubcommand(cmd) {
|
|
136
|
+
cmd
|
|
137
|
+
.command('show')
|
|
138
|
+
.description("Show a dossier's evidence sidecar from the registry")
|
|
139
|
+
.argument('<name>', 'Dossier name (use name@version for a specific version)')
|
|
140
|
+
.option('--json', 'Output the raw evidence record as JSON')
|
|
141
|
+
.action(async (name, options) => {
|
|
142
|
+
const [dossierName, version] = (0, registry_client_1.parseNameVersion)(name);
|
|
143
|
+
const { result, errors } = await (0, multi_registry_1.multiRegistryGetEvidence)(dossierName, version || null);
|
|
144
|
+
if (!result) {
|
|
145
|
+
console.error(`❌ No evidence for ${name}`);
|
|
146
|
+
(0, helpers_1.printRegistryErrors)(errors);
|
|
147
|
+
process.exit(1);
|
|
148
|
+
}
|
|
149
|
+
let record;
|
|
150
|
+
try {
|
|
151
|
+
record = (0, core_1.parseEvidence)(result.evidence);
|
|
152
|
+
}
|
|
153
|
+
catch (err) {
|
|
154
|
+
console.error(`\n❌ Stored evidence record is corrupt: ${err.message}\n`);
|
|
155
|
+
process.exit(1);
|
|
156
|
+
}
|
|
157
|
+
if (options.json) {
|
|
158
|
+
console.log(JSON.stringify(record, null, 2));
|
|
159
|
+
return;
|
|
160
|
+
}
|
|
161
|
+
console.log(`Evidence for ${record.dossier}@${record.version} (sha256:${record.checksum.hash})`);
|
|
162
|
+
for (const entry of record.entries) {
|
|
163
|
+
console.log(`• ${entry.anchor}`);
|
|
164
|
+
console.log(` ${entry.rationale}`);
|
|
165
|
+
for (const ref of entry.evidence) {
|
|
166
|
+
let line = ` refs: ${ref.provider}:${ref.session}`;
|
|
167
|
+
if (ref.event)
|
|
168
|
+
line += `#${ref.event}`;
|
|
169
|
+
if (ref.host)
|
|
170
|
+
line += ` @${ref.host}`;
|
|
171
|
+
if (ref.extra) {
|
|
172
|
+
for (const [key, value] of Object.entries(ref.extra)) {
|
|
173
|
+
line += ` ${key}=${value}`;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
console.log(line);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
/** `evidence init` — create a fresh sidecar next to a dossier file. */
|
|
182
|
+
function registerInitSubcommand(cmd) {
|
|
183
|
+
cmd
|
|
184
|
+
.command('init')
|
|
185
|
+
.description('Create a fresh evidence sidecar for a dossier file')
|
|
186
|
+
.argument('<file>', 'Dossier file (.ds.md)')
|
|
187
|
+
.option('--namespace <namespace>', 'Override namespace (e.g., imboard-ai/skills)')
|
|
188
|
+
.option('-o, --output <path>', 'Output path (defaults to a sibling .evidence.json)')
|
|
189
|
+
.option('--force', 'Overwrite an existing sidecar')
|
|
190
|
+
.action((file, options) => {
|
|
191
|
+
const outputPath = options.output ? node_path_1.default.resolve(options.output) : (0, helpers_1.siblingEvidencePath)(file);
|
|
192
|
+
if (node_fs_1.default.existsSync(outputPath) && !options.force) {
|
|
193
|
+
console.error(`\n❌ Evidence file already exists: ${outputPath} (use --force to overwrite)\n`);
|
|
194
|
+
process.exit(1);
|
|
195
|
+
}
|
|
196
|
+
const identity = deriveIdentity(file);
|
|
197
|
+
const ns = resolveDossierNamespace(undefined, options.namespace);
|
|
198
|
+
const record = (0, core_1.createEvidenceRecord)({
|
|
199
|
+
dossier: `${ns}/${identity.name}`,
|
|
200
|
+
version: identity.frontmatter.version,
|
|
201
|
+
checksumHash: identity.checksumHash,
|
|
202
|
+
});
|
|
203
|
+
writeSidecarAtomic(outputPath, record);
|
|
204
|
+
console.log(`✅ Evidence sidecar created: ${outputPath}`);
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
/** `evidence add` — append an entry, creating the sidecar via `init` logic if absent. */
|
|
208
|
+
function registerAddSubcommand(cmd) {
|
|
209
|
+
cmd
|
|
210
|
+
.command('add')
|
|
211
|
+
.description('Append an evidence entry to a dossier’s sidecar')
|
|
212
|
+
.argument('<file>', 'Dossier file (.ds.md)')
|
|
213
|
+
.requiredOption('--anchor <text>', 'Rule/heading in the dossier body this entry documents')
|
|
214
|
+
.requiredOption('--rationale <text>', 'Why the rule/section reads the way it does')
|
|
215
|
+
.option('--session <id>', 'Provider-native session id (defaults to AI_DOSSIER_SESSION_ID)')
|
|
216
|
+
.addOption(new commander_1.Option('--provider <provider>', 'Agent provider')
|
|
217
|
+
.choices(EVIDENCE_PROVIDERS)
|
|
218
|
+
.default('claude-code'))
|
|
219
|
+
.option('--event <id>', 'Provider-native per-message/tool-call id')
|
|
220
|
+
.option('--host <name>', 'Machine the session ran on (defaults to os.hostname())')
|
|
221
|
+
.option('--extra <k=v...>', 'Tool-specific locator ids, repeatable')
|
|
222
|
+
.option('--namespace <namespace>', 'Override namespace (rewrites the sidecar’s dossier field; preserved across runs otherwise)')
|
|
223
|
+
.action((file, options) => {
|
|
224
|
+
const sidecarPath = (0, helpers_1.siblingEvidencePath)(file);
|
|
225
|
+
const identity = deriveIdentity(file);
|
|
226
|
+
let record = node_fs_1.default.existsSync(sidecarPath)
|
|
227
|
+
? loadSidecar(sidecarPath)
|
|
228
|
+
: (0, core_1.createEvidenceRecord)({
|
|
229
|
+
dossier: `${resolveDossierNamespace(undefined, options.namespace)}/${identity.name}`,
|
|
230
|
+
version: identity.frontmatter.version,
|
|
231
|
+
checksumHash: identity.checksumHash,
|
|
232
|
+
});
|
|
233
|
+
const session = options.session || process.env.AI_DOSSIER_SESSION_ID;
|
|
234
|
+
if (!session) {
|
|
235
|
+
console.error('\n❌ --session required (or set AI_DOSSIER_SESSION_ID)\n');
|
|
236
|
+
process.exit(1);
|
|
237
|
+
}
|
|
238
|
+
const extra = parseExtra(options.extra);
|
|
239
|
+
const ref = {
|
|
240
|
+
provider: options.provider,
|
|
241
|
+
session,
|
|
242
|
+
...(options.event ? { event: options.event } : {}),
|
|
243
|
+
host: options.host || node_os_1.default.hostname(),
|
|
244
|
+
...(extra ? { extra } : {}),
|
|
245
|
+
};
|
|
246
|
+
record = {
|
|
247
|
+
...record,
|
|
248
|
+
entries: [
|
|
249
|
+
...record.entries,
|
|
250
|
+
{
|
|
251
|
+
anchor: options.anchor,
|
|
252
|
+
rationale: options.rationale,
|
|
253
|
+
created_at: new Date().toISOString(),
|
|
254
|
+
evidence: [ref],
|
|
255
|
+
},
|
|
256
|
+
],
|
|
257
|
+
};
|
|
258
|
+
record = applyIdentity(record, identity, options.namespace);
|
|
259
|
+
const errors = (0, core_1.validateEvidence)(record);
|
|
260
|
+
if (errors.length > 0) {
|
|
261
|
+
console.error('\n❌ Invalid evidence record:');
|
|
262
|
+
for (const error of errors) {
|
|
263
|
+
console.error(` - ${error}`);
|
|
264
|
+
}
|
|
265
|
+
console.error('');
|
|
266
|
+
process.exit(1);
|
|
267
|
+
}
|
|
268
|
+
writeSidecarAtomic(sidecarPath, record);
|
|
269
|
+
console.log(`✅ Evidence entry added (${record.entries.length} entries)`);
|
|
270
|
+
});
|
|
271
|
+
}
|
|
272
|
+
/** `evidence sync` — refresh dossier/version/checksum from the dossier's current frontmatter. */
|
|
273
|
+
function registerSyncSubcommand(cmd) {
|
|
274
|
+
cmd
|
|
275
|
+
.command('sync')
|
|
276
|
+
.description("Refresh a sidecar's dossier/version/checksum from the dossier's current frontmatter")
|
|
277
|
+
.argument('<file>', 'Dossier file (.ds.md)')
|
|
278
|
+
.option('--namespace <namespace>', 'Rewrite the dossier namespace (otherwise the sidecar’s existing namespace is preserved)')
|
|
279
|
+
.action((file, options) => {
|
|
280
|
+
const sidecarPath = (0, helpers_1.siblingEvidencePath)(file);
|
|
281
|
+
if (!node_fs_1.default.existsSync(sidecarPath)) {
|
|
282
|
+
console.error(`\n❌ Evidence file not found: ${sidecarPath}\n`);
|
|
283
|
+
process.exit(1);
|
|
284
|
+
}
|
|
285
|
+
const identity = deriveIdentity(file);
|
|
286
|
+
if (!identity.frontmatter.checksum?.hash) {
|
|
287
|
+
// sync always runs after `sign` (which restores the checksum) — unlike `add`/`init`,
|
|
288
|
+
// a missing checksum here is a real problem, not the publish-dossier Step 2/3 gap.
|
|
289
|
+
console.error(`\n❌ ${file} has no checksum in frontmatter; run 'ai-dossier checksum ${file} --update' or sign it first\n`);
|
|
290
|
+
process.exit(1);
|
|
291
|
+
}
|
|
292
|
+
let record = loadSidecar(sidecarPath);
|
|
293
|
+
record = applyIdentity(record, identity, options.namespace);
|
|
294
|
+
writeSidecarAtomic(sidecarPath, record);
|
|
295
|
+
console.log(`✅ Evidence synced: dossier=${record.dossier} version=${record.version} hash=${record.checksum.hash}`);
|
|
296
|
+
});
|
|
297
|
+
}
|
|
298
|
+
/** `evidence validate` — deterministic schema validation of a sidecar file. */
|
|
299
|
+
function registerValidateSubcommand(cmd) {
|
|
300
|
+
cmd
|
|
301
|
+
.command('validate')
|
|
302
|
+
.description('Validate an evidence sidecar file against the schema')
|
|
303
|
+
.argument('<file>', 'Evidence sidecar file (.evidence.json)')
|
|
304
|
+
.action((file) => {
|
|
305
|
+
if (!node_fs_1.default.existsSync(file)) {
|
|
306
|
+
console.error(`\n❌ File not found: ${file}\n`);
|
|
307
|
+
process.exit(1);
|
|
308
|
+
}
|
|
309
|
+
try {
|
|
310
|
+
(0, core_1.parseEvidence)(node_fs_1.default.readFileSync(file, 'utf8'));
|
|
311
|
+
}
|
|
312
|
+
catch (err) {
|
|
313
|
+
console.error(`❌ ${err.message}`);
|
|
314
|
+
process.exit(1);
|
|
315
|
+
}
|
|
316
|
+
console.log('✅ valid');
|
|
317
|
+
});
|
|
318
|
+
}
|
|
319
|
+
/** Registers the `evidence` command tree (show, init, add, sync, validate). */
|
|
320
|
+
function registerEvidenceCommand(program) {
|
|
321
|
+
const evidenceCmd = program
|
|
322
|
+
.command('evidence')
|
|
323
|
+
.description("Author, attach, fetch and display a dossier's evidence sidecar");
|
|
324
|
+
registerShowSubcommand(evidenceCmd);
|
|
325
|
+
registerInitSubcommand(evidenceCmd);
|
|
326
|
+
registerAddSubcommand(evidenceCmd);
|
|
327
|
+
registerSyncSubcommand(evidenceCmd);
|
|
328
|
+
registerValidateSubcommand(evidenceCmd);
|
|
329
|
+
}
|
|
330
|
+
//# sourceMappingURL=evidence.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evidence.js","sourceRoot":"","sources":["../../src/commands/evidence.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../../src/commands/export.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKzC,yFAAyF;AACzF,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../../src/commands/export.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKzC,yFAAyF;AACzF,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA6F5D"}
|
package/dist/commands/export.js
CHANGED
|
@@ -69,11 +69,30 @@ function registerExportCommand(program) {
|
|
|
69
69
|
process.exit(1);
|
|
70
70
|
return;
|
|
71
71
|
}
|
|
72
|
+
let evidencePath = null;
|
|
73
|
+
try {
|
|
74
|
+
const { result: evidenceResult, errors: evidenceErrors } = await (0, multi_registry_1.multiRegistryGetEvidence)(dossierName, version || null);
|
|
75
|
+
if (evidenceResult) {
|
|
76
|
+
const target = (0, helpers_1.siblingEvidencePath)(outputPath);
|
|
77
|
+
node_fs_1.default.writeFileSync(target, evidenceResult.evidence, 'utf8');
|
|
78
|
+
evidencePath = target;
|
|
79
|
+
}
|
|
80
|
+
else if (process.env.DOSSIER_DEBUG && evidenceErrors.length > 0) {
|
|
81
|
+
process.stderr.write(`[export] evidence fetch failed for '${dossierName}':\n`);
|
|
82
|
+
(0, helpers_1.printRegistryErrors)(evidenceErrors);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
catch {
|
|
86
|
+
// Evidence is optional — a 404 or any other error never fails the export.
|
|
87
|
+
}
|
|
72
88
|
console.log(`\n✅ Exported: ${outputPath}`);
|
|
73
89
|
console.log(` Source: ${dossierName}${version ? `@${version}` : ''}`);
|
|
74
90
|
if (digest) {
|
|
75
91
|
console.log(` Digest: ${digest}`);
|
|
76
92
|
}
|
|
93
|
+
if (evidencePath) {
|
|
94
|
+
console.log(` Evidence: ${evidencePath}`);
|
|
95
|
+
}
|
|
77
96
|
console.log('');
|
|
78
97
|
});
|
|
79
98
|
}
|