@ai-dossier/cli 0.4.2 ā 0.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +434 -0
- package/dist/cli.js +5 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/checksum.d.ts.map +1 -1
- package/dist/commands/checksum.js +1 -2
- package/dist/commands/checksum.js.map +1 -1
- package/dist/commands/config-cmd.d.ts.map +1 -1
- package/dist/commands/config-cmd.js +206 -209
- package/dist/commands/config-cmd.js.map +1 -1
- package/dist/commands/create.d.ts.map +1 -1
- package/dist/commands/create.js +4 -6
- package/dist/commands/create.js.map +1 -1
- package/dist/commands/export.d.ts +1 -0
- package/dist/commands/export.d.ts.map +1 -1
- package/dist/commands/export.js +21 -6
- package/dist/commands/export.js.map +1 -1
- package/dist/commands/get.d.ts.map +1 -1
- package/dist/commands/get.js +8 -8
- package/dist/commands/get.js.map +1 -1
- package/dist/commands/history.d.ts +6 -0
- package/dist/commands/history.d.ts.map +1 -0
- package/dist/commands/history.js +80 -0
- package/dist/commands/history.js.map +1 -0
- package/dist/commands/info.d.ts.map +1 -1
- package/dist/commands/info.js +3 -5
- package/dist/commands/info.js.map +1 -1
- package/dist/commands/list.d.ts +1 -0
- package/dist/commands/list.d.ts.map +1 -1
- package/dist/commands/list.js +155 -145
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/publish.d.ts.map +1 -1
- package/dist/commands/publish.js +12 -59
- package/dist/commands/publish.js.map +1 -1
- package/dist/commands/pull.d.ts +1 -0
- package/dist/commands/pull.d.ts.map +1 -1
- package/dist/commands/pull.js +27 -15
- package/dist/commands/pull.js.map +1 -1
- package/dist/commands/remove.d.ts.map +1 -1
- package/dist/commands/remove.js +11 -50
- package/dist/commands/remove.js.map +1 -1
- package/dist/commands/run.d.ts.map +1 -1
- package/dist/commands/run.js +132 -17
- package/dist/commands/run.js.map +1 -1
- package/dist/commands/search.d.ts +1 -0
- package/dist/commands/search.d.ts.map +1 -1
- package/dist/commands/search.js +30 -40
- package/dist/commands/search.js.map +1 -1
- package/dist/commands/skill-export.d.ts.map +1 -1
- package/dist/commands/skill-export.js +11 -50
- package/dist/commands/skill-export.js.map +1 -1
- package/dist/config.d.ts +11 -9
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +13 -10
- package/dist/config.js.map +1 -1
- package/dist/credentials.d.ts +9 -1
- package/dist/credentials.d.ts.map +1 -1
- package/dist/credentials.js +19 -12
- package/dist/credentials.js.map +1 -1
- package/dist/helpers.d.ts +57 -0
- package/dist/helpers.d.ts.map +1 -1
- package/dist/helpers.js +117 -2
- package/dist/helpers.js.map +1 -1
- package/dist/multi-registry.d.ts +6 -4
- package/dist/multi-registry.d.ts.map +1 -1
- package/dist/multi-registry.js +38 -22
- package/dist/multi-registry.js.map +1 -1
- package/dist/registry-client.d.ts +1 -10
- package/dist/registry-client.d.ts.map +1 -1
- package/dist/registry-client.js +1 -17
- package/dist/registry-client.js.map +1 -1
- package/dist/run-log.d.ts +37 -0
- package/dist/run-log.d.ts.map +1 -0
- package/dist/run-log.js +78 -0
- package/dist/run-log.js.map +1 -0
- package/dist/write-auth.d.ts +24 -0
- package/dist/write-auth.d.ts.map +1 -0
- package/dist/write-auth.js +85 -0
- package/dist/write-auth.js.map +1 -0
- package/package.json +1 -1
package/dist/commands/publish.js
CHANGED
|
@@ -4,14 +4,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.registerPublishCommand = registerPublishCommand;
|
|
7
|
-
const node_crypto_1 = __importDefault(require("node:crypto"));
|
|
8
7
|
const node_fs_1 = __importDefault(require("node:fs"));
|
|
9
8
|
const node_path_1 = __importDefault(require("node:path"));
|
|
10
9
|
const node_readline_1 = __importDefault(require("node:readline"));
|
|
11
10
|
const core_1 = require("@ai-dossier/core");
|
|
12
|
-
const config_1 = require("../config");
|
|
13
|
-
const credentials_1 = require("../credentials");
|
|
14
11
|
const registry_client_1 = require("../registry-client");
|
|
12
|
+
const write_auth_1 = require("../write-auth");
|
|
15
13
|
function registerPublishCommand(program) {
|
|
16
14
|
program
|
|
17
15
|
.command('publish')
|
|
@@ -23,33 +21,11 @@ function registerPublishCommand(program) {
|
|
|
23
21
|
.option('--registry <name>', 'Target registry to publish to')
|
|
24
22
|
.option('--json', 'Output as JSON')
|
|
25
23
|
.action(async (file, options) => {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
console.error(`\nā ${err.message}\n`);
|
|
32
|
-
process.exit(1);
|
|
33
|
-
}
|
|
34
|
-
const credentials = (0, credentials_1.loadCredentials)(targetRegistry.name);
|
|
35
|
-
if (!credentials) {
|
|
36
|
-
if (options.json) {
|
|
37
|
-
console.log(JSON.stringify({ published: false, error: 'Not logged in', code: 'not_logged_in' }, null, 2));
|
|
38
|
-
}
|
|
39
|
-
else {
|
|
40
|
-
console.error(`\nā Not logged in to registry '${targetRegistry.name}'. Run \`dossier login --registry ${targetRegistry.name}\` first.\n`);
|
|
41
|
-
}
|
|
42
|
-
process.exit(1);
|
|
43
|
-
}
|
|
44
|
-
if ((0, credentials_1.isExpired)(credentials)) {
|
|
45
|
-
if (options.json) {
|
|
46
|
-
console.log(JSON.stringify({ published: false, error: 'Credentials expired', code: 'expired' }, null, 2));
|
|
47
|
-
}
|
|
48
|
-
else {
|
|
49
|
-
console.error('\nā Credentials expired. Run `dossier login` to re-authenticate.\n');
|
|
50
|
-
}
|
|
51
|
-
process.exit(1);
|
|
52
|
-
}
|
|
24
|
+
const { targetRegistry, credentials } = (0, write_auth_1.requireWriteAuth)({
|
|
25
|
+
registryFlag: options.registry,
|
|
26
|
+
json: options.json,
|
|
27
|
+
jsonResultKey: 'published',
|
|
28
|
+
});
|
|
53
29
|
const dossierFile = node_path_1.default.resolve(file);
|
|
54
30
|
if (!node_fs_1.default.existsSync(dossierFile)) {
|
|
55
31
|
console.error(`\nā File not found: ${dossierFile}\n`);
|
|
@@ -78,7 +54,7 @@ function registerPublishCommand(program) {
|
|
|
78
54
|
}
|
|
79
55
|
const existingHash = frontmatter.checksum?.hash;
|
|
80
56
|
if (existingHash) {
|
|
81
|
-
const actualHash =
|
|
57
|
+
const actualHash = (0, core_1.sha256Hex)(body);
|
|
82
58
|
if (existingHash !== actualHash) {
|
|
83
59
|
console.error('\nā Checksum mismatch - content has been modified without updating checksum');
|
|
84
60
|
console.error(` Expected: ${existingHash}`);
|
|
@@ -188,34 +164,11 @@ function registerPublishCommand(program) {
|
|
|
188
164
|
}
|
|
189
165
|
}
|
|
190
166
|
catch (err) {
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
code: e.code || 'publish_failed',
|
|
197
|
-
}, null, 2));
|
|
198
|
-
}
|
|
199
|
-
else if (e.statusCode === 401) {
|
|
200
|
-
console.error('\nā Session expired. Run `dossier login` to re-authenticate.\n');
|
|
201
|
-
}
|
|
202
|
-
else if (e.statusCode === 403) {
|
|
203
|
-
console.error(`\nā Permission denied: ${e.message}\n`);
|
|
204
|
-
}
|
|
205
|
-
else if (e.statusCode === 409) {
|
|
206
|
-
console.error(`\nā Version conflict: ${registryPath} ā ${e.message}\n`);
|
|
207
|
-
}
|
|
208
|
-
else {
|
|
209
|
-
console.error(`\nā Publish failed: ${e.message}`);
|
|
210
|
-
if (e.statusCode) {
|
|
211
|
-
console.error(` Status: ${e.statusCode}`);
|
|
212
|
-
}
|
|
213
|
-
if (e.code) {
|
|
214
|
-
console.error(` Code: ${e.code}`);
|
|
215
|
-
}
|
|
216
|
-
console.error('');
|
|
217
|
-
}
|
|
218
|
-
process.exit(1);
|
|
167
|
+
(0, write_auth_1.handleRegistryWriteError)(err, {
|
|
168
|
+
json: options.json,
|
|
169
|
+
jsonResultKey: 'published',
|
|
170
|
+
actionLabel: 'Publish',
|
|
171
|
+
});
|
|
219
172
|
}
|
|
220
173
|
});
|
|
221
174
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"publish.js","sourceRoot":"","sources":["../../src/commands/publish.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"publish.js","sourceRoot":"","sources":["../../src/commands/publish.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/pull.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pull.d.ts","sourceRoot":"","sources":["../../src/commands/pull.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKzC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"pull.d.ts","sourceRoot":"","sources":["../../src/commands/pull.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKzC,0FAA0F;AAC1F,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAqG1D"}
|
package/dist/commands/pull.js
CHANGED
|
@@ -4,13 +4,14 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.registerPullCommand = registerPullCommand;
|
|
7
|
-
const node_crypto_1 = __importDefault(require("node:crypto"));
|
|
8
7
|
const node_fs_1 = __importDefault(require("node:fs"));
|
|
9
8
|
const node_os_1 = __importDefault(require("node:os"));
|
|
10
9
|
const node_path_1 = __importDefault(require("node:path"));
|
|
10
|
+
const core_1 = require("@ai-dossier/core");
|
|
11
11
|
const helpers_1 = require("../helpers");
|
|
12
12
|
const multi_registry_1 = require("../multi-registry");
|
|
13
13
|
const registry_client_1 = require("../registry-client");
|
|
14
|
+
/** Registers the `pull` command ā downloads dossiers from the registry to local cache. */
|
|
14
15
|
function registerPullCommand(program) {
|
|
15
16
|
program
|
|
16
17
|
.command('pull')
|
|
@@ -19,6 +20,7 @@ function registerPullCommand(program) {
|
|
|
19
20
|
.option('--force', 'Re-download even if already cached')
|
|
20
21
|
.action(async (names, options) => {
|
|
21
22
|
const cacheDir = node_path_1.default.join(node_os_1.default.homedir(), '.dossier', 'cache');
|
|
23
|
+
let failures = 0;
|
|
22
24
|
for (const nameArg of names) {
|
|
23
25
|
let [dossierName, version] = (0, registry_client_1.parseNameVersion)(nameArg);
|
|
24
26
|
try {
|
|
@@ -26,9 +28,8 @@ function registerPullCommand(program) {
|
|
|
26
28
|
const { result: meta, errors: metaErrors } = await (0, multi_registry_1.multiRegistryGetDossier)(dossierName);
|
|
27
29
|
if (!meta) {
|
|
28
30
|
console.error(`ā ${nameArg}: not found in any registry`);
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
}
|
|
31
|
+
(0, helpers_1.printRegistryErrors)(metaErrors);
|
|
32
|
+
failures++;
|
|
32
33
|
continue;
|
|
33
34
|
}
|
|
34
35
|
version = meta.version || 'latest';
|
|
@@ -44,27 +45,34 @@ function registerPullCommand(program) {
|
|
|
44
45
|
const { result, errors: contentErrors } = await (0, multi_registry_1.multiRegistryGetContent)(dossierName, version);
|
|
45
46
|
if (!result) {
|
|
46
47
|
console.error(`ā ${nameArg}: not found in any registry`);
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
}
|
|
48
|
+
(0, helpers_1.printRegistryErrors)(contentErrors);
|
|
49
|
+
failures++;
|
|
50
50
|
continue;
|
|
51
51
|
}
|
|
52
52
|
const content = result.content;
|
|
53
53
|
const digest = result.digest;
|
|
54
54
|
if (digest) {
|
|
55
|
-
const actual =
|
|
55
|
+
const actual = (0, core_1.sha256Hex)(content);
|
|
56
56
|
if (actual !== digest) {
|
|
57
57
|
console.error(`ā ${dossierName}@${version}: checksum mismatch after download`);
|
|
58
|
+
failures++;
|
|
58
59
|
continue;
|
|
59
60
|
}
|
|
60
61
|
}
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
62
|
+
try {
|
|
63
|
+
node_fs_1.default.mkdirSync(dossierDir, { recursive: true, mode: 0o700 });
|
|
64
|
+
node_fs_1.default.writeFileSync(contentFile, content, 'utf8');
|
|
65
|
+
node_fs_1.default.writeFileSync(metaFile, JSON.stringify({
|
|
66
|
+
cached_at: new Date().toISOString(),
|
|
67
|
+
version,
|
|
68
|
+
source_registry: result._registry,
|
|
69
|
+
}, null, 2), 'utf8');
|
|
70
|
+
}
|
|
71
|
+
catch (writeErr) {
|
|
72
|
+
console.error(`ā ${dossierName}@${version}: failed to write cache files to '${dossierDir}': ${writeErr.message}`);
|
|
73
|
+
failures++;
|
|
74
|
+
continue;
|
|
75
|
+
}
|
|
68
76
|
const status = options.force ? 'updated' : 'downloaded';
|
|
69
77
|
console.log(`ā
${dossierName}@${version} (${status}) [${result._registry}]`);
|
|
70
78
|
console.log(` ${contentFile}`);
|
|
@@ -77,8 +85,12 @@ function registerPullCommand(program) {
|
|
|
77
85
|
else {
|
|
78
86
|
console.error(`ā ${nameArg}: ${e.message}`);
|
|
79
87
|
}
|
|
88
|
+
failures++;
|
|
80
89
|
}
|
|
81
90
|
}
|
|
91
|
+
if (failures === names.length) {
|
|
92
|
+
process.exit(1);
|
|
93
|
+
}
|
|
82
94
|
});
|
|
83
95
|
}
|
|
84
96
|
//# sourceMappingURL=pull.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pull.js","sourceRoot":"","sources":["../../src/commands/pull.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"pull.js","sourceRoot":"","sources":["../../src/commands/pull.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remove.d.ts","sourceRoot":"","sources":["../../src/commands/remove.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"remove.d.ts","sourceRoot":"","sources":["../../src/commands/remove.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIzC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAkF5D"}
|
package/dist/commands/remove.js
CHANGED
|
@@ -5,9 +5,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.registerRemoveCommand = registerRemoveCommand;
|
|
7
7
|
const node_readline_1 = __importDefault(require("node:readline"));
|
|
8
|
-
const config_1 = require("../config");
|
|
9
|
-
const credentials_1 = require("../credentials");
|
|
10
8
|
const registry_client_1 = require("../registry-client");
|
|
9
|
+
const write_auth_1 = require("../write-auth");
|
|
11
10
|
function registerRemoveCommand(program) {
|
|
12
11
|
program
|
|
13
12
|
.command('remove')
|
|
@@ -17,33 +16,11 @@ function registerRemoveCommand(program) {
|
|
|
17
16
|
.option('--registry <name>', 'Target registry to remove from')
|
|
18
17
|
.option('--json', 'Output as JSON')
|
|
19
18
|
.action(async (name, options) => {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
console.error(`\nā ${err.message}\n`);
|
|
26
|
-
process.exit(1);
|
|
27
|
-
}
|
|
28
|
-
const credentials = (0, credentials_1.loadCredentials)(targetRegistry.name);
|
|
29
|
-
if (!credentials) {
|
|
30
|
-
if (options.json) {
|
|
31
|
-
console.log(JSON.stringify({ removed: false, error: 'Not logged in', code: 'not_logged_in' }, null, 2));
|
|
32
|
-
}
|
|
33
|
-
else {
|
|
34
|
-
console.error(`\nā Not logged in to registry '${targetRegistry.name}'. Run \`dossier login --registry ${targetRegistry.name}\` first.\n`);
|
|
35
|
-
}
|
|
36
|
-
process.exit(1);
|
|
37
|
-
}
|
|
38
|
-
if ((0, credentials_1.isExpired)(credentials)) {
|
|
39
|
-
if (options.json) {
|
|
40
|
-
console.log(JSON.stringify({ removed: false, error: 'Credentials expired', code: 'expired' }, null, 2));
|
|
41
|
-
}
|
|
42
|
-
else {
|
|
43
|
-
console.error('\nā Credentials expired. Run `dossier login` to re-authenticate.\n');
|
|
44
|
-
}
|
|
45
|
-
process.exit(1);
|
|
46
|
-
}
|
|
19
|
+
const { targetRegistry, credentials } = (0, write_auth_1.requireWriteAuth)({
|
|
20
|
+
registryFlag: options.registry,
|
|
21
|
+
json: options.json,
|
|
22
|
+
jsonResultKey: 'removed',
|
|
23
|
+
});
|
|
47
24
|
const [dossierName, version] = (0, registry_client_1.parseNameVersion)(name);
|
|
48
25
|
const target = version ? `${dossierName}@${version}` : dossierName;
|
|
49
26
|
if (!options.yes) {
|
|
@@ -88,27 +65,11 @@ function registerRemoveCommand(program) {
|
|
|
88
65
|
}
|
|
89
66
|
}
|
|
90
67
|
catch (err) {
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
code: e.code || 'remove_failed',
|
|
97
|
-
}, null, 2));
|
|
98
|
-
}
|
|
99
|
-
else if (e.statusCode === 401) {
|
|
100
|
-
console.error('\nā Session expired. Run `dossier login` to re-authenticate.\n');
|
|
101
|
-
}
|
|
102
|
-
else if (e.statusCode === 403) {
|
|
103
|
-
console.error(`\nā Permission denied: ${e.message}\n`);
|
|
104
|
-
}
|
|
105
|
-
else if (e.statusCode === 404) {
|
|
106
|
-
console.error(`\nā Not found: ${target}\n`);
|
|
107
|
-
}
|
|
108
|
-
else {
|
|
109
|
-
console.error(`\nā Remove failed: ${e.message}\n`);
|
|
110
|
-
}
|
|
111
|
-
process.exit(1);
|
|
68
|
+
(0, write_auth_1.handleRegistryWriteError)(err, {
|
|
69
|
+
json: options.json,
|
|
70
|
+
jsonResultKey: 'removed',
|
|
71
|
+
actionLabel: 'Remove',
|
|
72
|
+
});
|
|
112
73
|
}
|
|
113
74
|
});
|
|
114
75
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remove.js","sourceRoot":"","sources":["../../src/commands/remove.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"remove.js","sourceRoot":"","sources":["../../src/commands/remove.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA8BzC,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAsZzD"}
|
package/dist/commands/run.js
CHANGED
|
@@ -46,6 +46,21 @@ const config = __importStar(require("../config"));
|
|
|
46
46
|
const helpers_1 = require("../helpers");
|
|
47
47
|
const multi_registry_1 = require("../multi-registry");
|
|
48
48
|
const registry_client_1 = require("../registry-client");
|
|
49
|
+
const run_log_1 = require("../run-log");
|
|
50
|
+
/**
|
|
51
|
+
* Check if a newer version exists in the registry.
|
|
52
|
+
* Returns the latest version string, or null if no update / error / timeout.
|
|
53
|
+
*/
|
|
54
|
+
async function checkForUpdate(dossierName, cachedVersion) {
|
|
55
|
+
const timeout = new Promise((resolve) => setTimeout(() => resolve(null), 3000));
|
|
56
|
+
const check = (0, multi_registry_1.multiRegistryGetDossier)(dossierName).then(({ result }) => {
|
|
57
|
+
if (result?.version && result.version !== cachedVersion) {
|
|
58
|
+
return result.version;
|
|
59
|
+
}
|
|
60
|
+
return null;
|
|
61
|
+
});
|
|
62
|
+
return Promise.race([check, timeout]);
|
|
63
|
+
}
|
|
49
64
|
function registerRunCommand(program) {
|
|
50
65
|
program
|
|
51
66
|
.command('run')
|
|
@@ -68,6 +83,14 @@ function registerRunCommand(program) {
|
|
|
68
83
|
const log = isNested
|
|
69
84
|
? (...args) => console.error(...args)
|
|
70
85
|
: (...args) => console.log(...args);
|
|
86
|
+
const runContext = {
|
|
87
|
+
dossierArg: file,
|
|
88
|
+
resolvedVersion: 'unknown',
|
|
89
|
+
source: 'local',
|
|
90
|
+
registry: undefined,
|
|
91
|
+
updateAvailable: undefined,
|
|
92
|
+
};
|
|
93
|
+
let updateCheckPromise = null;
|
|
71
94
|
// If not a URL or local file, treat as a registry name
|
|
72
95
|
if (!isUrl && !isLocalFile) {
|
|
73
96
|
const [dossierName, version] = (0, registry_client_1.parseNameVersion)(file);
|
|
@@ -88,6 +111,41 @@ function registerRunCommand(program) {
|
|
|
88
111
|
if (!options.pull) {
|
|
89
112
|
resolvedFile = contentFile;
|
|
90
113
|
cached = true;
|
|
114
|
+
runContext.source = 'cache';
|
|
115
|
+
runContext.resolvedVersion = ver;
|
|
116
|
+
// Check meta for previously-detected update
|
|
117
|
+
const metaPath = node_path_1.default.join(dossierCacheDir, mf);
|
|
118
|
+
try {
|
|
119
|
+
const meta = JSON.parse(node_fs_1.default.readFileSync(metaPath, 'utf8'));
|
|
120
|
+
if (meta.latest_known_version && meta.latest_known_version !== ver) {
|
|
121
|
+
runContext.updateAvailable = meta.latest_known_version;
|
|
122
|
+
}
|
|
123
|
+
const checkedAt = meta.latest_checked_at
|
|
124
|
+
? new Date(meta.latest_checked_at).getTime()
|
|
125
|
+
: 0;
|
|
126
|
+
const oneHourAgo = Date.now() - 3600000;
|
|
127
|
+
if (checkedAt < oneHourAgo) {
|
|
128
|
+
updateCheckPromise = checkForUpdate(dossierName, ver)
|
|
129
|
+
.then((latestVer) => {
|
|
130
|
+
try {
|
|
131
|
+
meta.latest_known_version = latestVer || ver;
|
|
132
|
+
meta.latest_checked_at = new Date().toISOString();
|
|
133
|
+
node_fs_1.default.writeFileSync(metaPath, JSON.stringify(meta, null, 2), 'utf8');
|
|
134
|
+
}
|
|
135
|
+
catch {
|
|
136
|
+
/* ignore meta write errors */
|
|
137
|
+
}
|
|
138
|
+
if (latestVer)
|
|
139
|
+
runContext.updateAvailable = latestVer;
|
|
140
|
+
return latestVer;
|
|
141
|
+
})
|
|
142
|
+
.catch(() => null);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
catch {
|
|
146
|
+
// Meta read failed ā start a fresh check
|
|
147
|
+
updateCheckPromise = checkForUpdate(dossierName, ver).catch(() => null);
|
|
148
|
+
}
|
|
91
149
|
log(`š¦ Using cached: ${dossierName}@${ver}\n`);
|
|
92
150
|
break;
|
|
93
151
|
}
|
|
@@ -101,24 +159,14 @@ function registerRunCommand(program) {
|
|
|
101
159
|
if (!resolvedVersion) {
|
|
102
160
|
const { result: meta, errors: metaErrors } = await (0, multi_registry_1.multiRegistryGetDossier)(dossierName);
|
|
103
161
|
if (!meta) {
|
|
104
|
-
|
|
105
|
-
console.error(' Not a local file and not found in any registry');
|
|
106
|
-
for (const e of metaErrors) {
|
|
107
|
-
console.error(` ${e.registry}: ${e.error}`);
|
|
108
|
-
}
|
|
109
|
-
console.error('');
|
|
162
|
+
(0, helpers_1.printRegistryNotFoundError)(file, metaErrors);
|
|
110
163
|
process.exit(1);
|
|
111
164
|
}
|
|
112
165
|
resolvedVersion = meta.version || 'latest';
|
|
113
166
|
}
|
|
114
167
|
const { result, errors: contentErrors } = await (0, multi_registry_1.multiRegistryGetContent)(dossierName, resolvedVersion);
|
|
115
168
|
if (!result) {
|
|
116
|
-
|
|
117
|
-
console.error(' Not a local file and not found in any registry');
|
|
118
|
-
for (const e of contentErrors) {
|
|
119
|
-
console.error(` ${e.registry}: ${e.error}`);
|
|
120
|
-
}
|
|
121
|
-
console.error('');
|
|
169
|
+
(0, helpers_1.printRegistryNotFoundError)(file, contentErrors);
|
|
122
170
|
process.exit(1);
|
|
123
171
|
}
|
|
124
172
|
if (!options.fresh) {
|
|
@@ -132,12 +180,18 @@ function registerRunCommand(program) {
|
|
|
132
180
|
source_registry: result._registry,
|
|
133
181
|
}, null, 2), 'utf8');
|
|
134
182
|
resolvedFile = contentFile;
|
|
183
|
+
runContext.source = 'registry';
|
|
184
|
+
runContext.resolvedVersion = resolvedVersion || 'unknown';
|
|
185
|
+
runContext.registry = result._registry;
|
|
135
186
|
log(`š„ Fetched: ${dossierName}@${resolvedVersion}\n`);
|
|
136
187
|
}
|
|
137
188
|
else {
|
|
138
189
|
const tmpFile = node_path_1.default.join(node_os_1.default.tmpdir(), `dossier-${Date.now()}.ds.md`);
|
|
139
190
|
node_fs_1.default.writeFileSync(tmpFile, result.content, 'utf8');
|
|
140
191
|
resolvedFile = tmpFile;
|
|
192
|
+
runContext.source = 'registry';
|
|
193
|
+
runContext.resolvedVersion = resolvedVersion || 'unknown';
|
|
194
|
+
runContext.registry = result._registry;
|
|
141
195
|
log(`š„ Fetched: ${dossierName}@${resolvedVersion} (not cached)\n`);
|
|
142
196
|
}
|
|
143
197
|
}
|
|
@@ -156,6 +210,7 @@ function registerRunCommand(program) {
|
|
|
156
210
|
}
|
|
157
211
|
// If resolvedFile is still a URL, download it first
|
|
158
212
|
if (resolvedFile.startsWith('http://') || resolvedFile.startsWith('https://')) {
|
|
213
|
+
runContext.source = 'url';
|
|
159
214
|
try {
|
|
160
215
|
resolvedFile = (0, helpers_1.downloadUrlToTempFile)(resolvedFile);
|
|
161
216
|
}
|
|
@@ -210,20 +265,76 @@ function registerRunCommand(program) {
|
|
|
210
265
|
}
|
|
211
266
|
// Nested session detection
|
|
212
267
|
if (process.env.CLAUDE_CODE === '1' || process.env.CLAUDECODE === '1') {
|
|
268
|
+
// Wait for update check before showing warning
|
|
269
|
+
if (updateCheckPromise) {
|
|
270
|
+
await updateCheckPromise.catch(() => null);
|
|
271
|
+
}
|
|
272
|
+
if (runContext.updateAvailable) {
|
|
273
|
+
console.error(`\nā ļø Update available: ${file}@${runContext.updateAvailable} (cached: ${runContext.resolvedVersion})`);
|
|
274
|
+
console.error(' Run with --pull to update\n');
|
|
275
|
+
}
|
|
213
276
|
console.error('ā¹ļø Running inside Claude Code ā outputting dossier content\n');
|
|
277
|
+
const llmOption = options.llm || config.getConfig('defaultLlm') || 'auto';
|
|
278
|
+
(0, run_log_1.appendRunLog)({
|
|
279
|
+
timestamp: new Date().toISOString(),
|
|
280
|
+
dossier: file,
|
|
281
|
+
resolved_version: runContext.resolvedVersion,
|
|
282
|
+
source: runContext.source,
|
|
283
|
+
registry: runContext.registry,
|
|
284
|
+
verification: 'nested-skip',
|
|
285
|
+
llm: llmOption,
|
|
286
|
+
user: `${process.env.USER || 'unknown'}@${node_os_1.default.hostname()}`,
|
|
287
|
+
cwd: process.cwd(),
|
|
288
|
+
nested: true,
|
|
289
|
+
update_available: runContext.updateAvailable,
|
|
290
|
+
});
|
|
214
291
|
process.stdout.write(dossierContent);
|
|
215
292
|
node_fs_1.default.unlinkSync(secureTmpFile);
|
|
216
293
|
node_fs_1.default.rmdirSync(secureTmpDir);
|
|
217
294
|
process.exit(0);
|
|
218
295
|
}
|
|
296
|
+
// Wait for update check before verification
|
|
297
|
+
if (updateCheckPromise) {
|
|
298
|
+
await updateCheckPromise.catch(() => null);
|
|
299
|
+
}
|
|
300
|
+
if (runContext.updateAvailable) {
|
|
301
|
+
console.log(`\nā ļø Update available: ${file}@${runContext.updateAvailable} (cached: ${runContext.resolvedVersion})`);
|
|
302
|
+
console.log(' Run with --pull to update\n');
|
|
303
|
+
}
|
|
219
304
|
const result = await (0, helpers_1.runVerification)(resolvedFile, options);
|
|
305
|
+
const llmOption = options.llm || config.getConfig('defaultLlm') || 'auto';
|
|
220
306
|
if (!result.passed) {
|
|
221
307
|
console.log('ā Verification failed - cannot execute\n');
|
|
308
|
+
(0, run_log_1.appendRunLog)({
|
|
309
|
+
timestamp: new Date().toISOString(),
|
|
310
|
+
dossier: file,
|
|
311
|
+
resolved_version: runContext.resolvedVersion,
|
|
312
|
+
source: runContext.source,
|
|
313
|
+
registry: runContext.registry,
|
|
314
|
+
verification: 'failed',
|
|
315
|
+
llm: llmOption,
|
|
316
|
+
user: `${process.env.USER || 'unknown'}@${node_os_1.default.hostname()}`,
|
|
317
|
+
cwd: process.cwd(),
|
|
318
|
+
nested: false,
|
|
319
|
+
update_available: runContext.updateAvailable,
|
|
320
|
+
});
|
|
222
321
|
node_fs_1.default.unlinkSync(secureTmpFile);
|
|
223
322
|
node_fs_1.default.rmdirSync(secureTmpDir);
|
|
224
323
|
process.exit(1);
|
|
225
324
|
}
|
|
226
|
-
|
|
325
|
+
(0, run_log_1.appendRunLog)({
|
|
326
|
+
timestamp: new Date().toISOString(),
|
|
327
|
+
dossier: file,
|
|
328
|
+
resolved_version: runContext.resolvedVersion,
|
|
329
|
+
source: runContext.source,
|
|
330
|
+
registry: runContext.registry,
|
|
331
|
+
verification: options.skipAllChecks ? 'skipped' : 'passed',
|
|
332
|
+
llm: llmOption,
|
|
333
|
+
user: `${process.env.USER || 'unknown'}@${node_os_1.default.hostname()}`,
|
|
334
|
+
cwd: process.cwd(),
|
|
335
|
+
nested: false,
|
|
336
|
+
update_available: runContext.updateAvailable,
|
|
337
|
+
});
|
|
227
338
|
console.log('š Audit Log:');
|
|
228
339
|
console.log('āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā');
|
|
229
340
|
console.log(` Timestamp: ${new Date().toISOString()}`);
|
|
@@ -249,14 +360,18 @@ function registerRunCommand(program) {
|
|
|
249
360
|
try {
|
|
250
361
|
node_fs_1.default.unlinkSync(secureTmpFile);
|
|
251
362
|
}
|
|
252
|
-
catch {
|
|
253
|
-
|
|
363
|
+
catch (err) {
|
|
364
|
+
if (err.code !== 'ENOENT') {
|
|
365
|
+
process.stderr.write(`Warning: failed to clean up secure temp file: ${String(err.message || err)}\n`);
|
|
366
|
+
}
|
|
254
367
|
}
|
|
255
368
|
try {
|
|
256
369
|
node_fs_1.default.rmdirSync(secureTmpDir);
|
|
257
370
|
}
|
|
258
|
-
catch {
|
|
259
|
-
|
|
371
|
+
catch (err) {
|
|
372
|
+
if (err.code !== 'ENOENT') {
|
|
373
|
+
process.stderr.write(`Warning: failed to clean up secure temp dir: ${String(err.message || err)}\n`);
|
|
374
|
+
}
|
|
260
375
|
}
|
|
261
376
|
};
|
|
262
377
|
console.log('š¤ Executing Dossier...\n');
|