@ai-dossier/core 1.11.0 → 1.12.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,99 @@
1
+ /**
2
+ * Static dry-run analysis of a dossier (issue #20).
3
+ *
4
+ * IMPORTANT: dossiers are executed by an LLM, not by a deterministic
5
+ * interpreter. `analyzeDryRun` is therefore a STATIC PREVIEW: it reads the
6
+ * dossier's declared metadata (risk_level, risk_factors, destructive_operations,
7
+ * tools_required) and pattern-matches the shell / script code fences in its
8
+ * body. It cannot know what the executing agent will actually do, and the
9
+ * risk score is a triage heuristic, never a safety guarantee.
10
+ */
11
+ import type { DossierFrontmatter } from './types';
12
+ export declare const DRY_RUN_SCHEMA_VERSION = 1;
13
+ export declare const DRY_RUN_DISCLAIMER = "Static preview - derived from the dossier's declared metadata and code blocks; the executing agent may take other actions. The risk score is a heuristic, not a safety guarantee.";
14
+ /** Overall risk band derived from the 0-100 score. */
15
+ export type DryRunLevel = 'low' | 'medium' | 'high' | 'critical';
16
+ /**
17
+ * What a single command does, coarsely:
18
+ * - read: inspects local state only (green)
19
+ * - local_write: creates/modifies local files or repo state, or is an unrecognised executable (yellow)
20
+ * - remote: talks to a remote service (red)
21
+ * - destructive: deletes/overwrites/force-pushes/publishes, hard to reverse (red)
22
+ */
23
+ export type DryRunKind = 'read' | 'local_write' | 'remote' | 'destructive';
24
+ export interface DryRunCommand {
25
+ command: string;
26
+ kind: DryRunKind;
27
+ /** false when the executable is not in the analyzer's tables (treated as local_write). */
28
+ recognized: boolean;
29
+ /** 1-based line within the dossier body. */
30
+ line: number;
31
+ }
32
+ export interface DryRunFile {
33
+ path: string;
34
+ operation: 'write' | 'delete' | 'move';
35
+ command: string;
36
+ line: number;
37
+ }
38
+ export interface DryRunNetwork {
39
+ tool: string;
40
+ /** Host for URLs, otherwise the tool sub-command (e.g. `pr create`). */
41
+ target: string;
42
+ /** true when the call looks like it changes remote state (not a plain read). */
43
+ mutates: boolean;
44
+ command: string;
45
+ line: number;
46
+ }
47
+ export interface DryRunEnv {
48
+ name: string;
49
+ line: number;
50
+ }
51
+ export interface DryRunScoreComponent {
52
+ component: string;
53
+ points: number;
54
+ }
55
+ export interface DryRunPlan {
56
+ schema_version: typeof DRY_RUN_SCHEMA_VERSION;
57
+ /** Always true: this is never a record of what actually ran. */
58
+ static_preview: true;
59
+ disclaimer: string;
60
+ dossier: {
61
+ title: string;
62
+ version: string;
63
+ declared_risk_level: string | null;
64
+ };
65
+ declared: {
66
+ risk_factors: string[];
67
+ destructive_operations: string[];
68
+ tools_required: string[];
69
+ requires_approval: boolean;
70
+ };
71
+ files: DryRunFile[];
72
+ commands: DryRunCommand[];
73
+ network: DryRunNetwork[];
74
+ env: DryRunEnv[];
75
+ /** 0-100 heuristic; see SCORE_* constants for the formula. */
76
+ risk_score: number;
77
+ level: DryRunLevel;
78
+ score_breakdown: DryRunScoreComponent[];
79
+ }
80
+ /** Base points for the dossier's declared risk_level. */
81
+ export declare const SCORE_BASE: Record<string, number>;
82
+ /** Points per declared risk_factor / destructive_operation, and the cap for each. */
83
+ export declare const SCORE_PER_RISK_FACTOR = 4;
84
+ export declare const SCORE_RISK_FACTOR_CAP = 20;
85
+ export declare const SCORE_PER_DESTRUCTIVE_DECLARATION = 3;
86
+ export declare const SCORE_DESTRUCTIVE_DECLARATION_CAP = 15;
87
+ /** Points per detected command of each kind, and the cap per kind. */
88
+ export declare const SCORE_PER_COMMAND: Record<DryRunKind, number>;
89
+ export declare const SCORE_COMMAND_CAP: Record<DryRunKind, number>;
90
+ /** Band lower bounds. */
91
+ export declare const LEVEL_MEDIUM_MIN = 25;
92
+ export declare const LEVEL_HIGH_MIN = 50;
93
+ export declare const LEVEL_CRITICAL_MIN = 75;
94
+ export declare function levelForScore(score: number): DryRunLevel;
95
+ export declare function analyzeDryRun(input: string | {
96
+ frontmatter: DossierFrontmatter;
97
+ body: string;
98
+ }): DryRunPlan;
99
+ //# sourceMappingURL=dry-run.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dry-run.d.ts","sourceRoot":"","sources":["../src/dry-run.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,743 @@
1
+ "use strict";
2
+ /**
3
+ * Static dry-run analysis of a dossier (issue #20).
4
+ *
5
+ * IMPORTANT: dossiers are executed by an LLM, not by a deterministic
6
+ * interpreter. `analyzeDryRun` is therefore a STATIC PREVIEW: it reads the
7
+ * dossier's declared metadata (risk_level, risk_factors, destructive_operations,
8
+ * tools_required) and pattern-matches the shell / script code fences in its
9
+ * body. It cannot know what the executing agent will actually do, and the
10
+ * risk score is a triage heuristic, never a safety guarantee.
11
+ */
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.LEVEL_CRITICAL_MIN = exports.LEVEL_HIGH_MIN = exports.LEVEL_MEDIUM_MIN = exports.SCORE_COMMAND_CAP = exports.SCORE_PER_COMMAND = exports.SCORE_DESTRUCTIVE_DECLARATION_CAP = exports.SCORE_PER_DESTRUCTIVE_DECLARATION = exports.SCORE_RISK_FACTOR_CAP = exports.SCORE_PER_RISK_FACTOR = exports.SCORE_BASE = exports.DRY_RUN_DISCLAIMER = exports.DRY_RUN_SCHEMA_VERSION = void 0;
14
+ exports.levelForScore = levelForScore;
15
+ exports.analyzeDryRun = analyzeDryRun;
16
+ const parser_1 = require("./parser");
17
+ exports.DRY_RUN_SCHEMA_VERSION = 1;
18
+ exports.DRY_RUN_DISCLAIMER = "Static preview - derived from the dossier's declared metadata and code blocks; the executing agent may take other actions. The risk score is a heuristic, not a safety guarantee.";
19
+ // --- scoring formula -------------------------------------------------------
20
+ /** Base points for the dossier's declared risk_level. */
21
+ exports.SCORE_BASE = { low: 5, medium: 25, high: 50, critical: 75 };
22
+ /** Points per declared risk_factor / destructive_operation, and the cap for each. */
23
+ exports.SCORE_PER_RISK_FACTOR = 4;
24
+ exports.SCORE_RISK_FACTOR_CAP = 20;
25
+ exports.SCORE_PER_DESTRUCTIVE_DECLARATION = 3;
26
+ exports.SCORE_DESTRUCTIVE_DECLARATION_CAP = 15;
27
+ /** Points per detected command of each kind, and the cap per kind. */
28
+ exports.SCORE_PER_COMMAND = {
29
+ read: 0,
30
+ local_write: 1,
31
+ remote: 2,
32
+ destructive: 5,
33
+ };
34
+ exports.SCORE_COMMAND_CAP = {
35
+ read: 0,
36
+ local_write: 5,
37
+ remote: 15,
38
+ destructive: 15,
39
+ };
40
+ /** Band lower bounds. */
41
+ exports.LEVEL_MEDIUM_MIN = 25;
42
+ exports.LEVEL_HIGH_MIN = 50;
43
+ exports.LEVEL_CRITICAL_MIN = 75;
44
+ function levelForScore(score) {
45
+ if (score >= exports.LEVEL_CRITICAL_MIN)
46
+ return 'critical';
47
+ if (score >= exports.LEVEL_HIGH_MIN)
48
+ return 'high';
49
+ if (score >= exports.LEVEL_MEDIUM_MIN)
50
+ return 'medium';
51
+ return 'low';
52
+ }
53
+ const SHELL_LANGS = new Set(['sh', 'bash', 'shell', 'zsh', 'console', 'shell-session', 'terminal']);
54
+ const SCRIPT_LANGS = new Set(['js', 'javascript', 'ts', 'typescript', 'mjs', 'node']);
55
+ function extractFences(body) {
56
+ const fences = [];
57
+ const lines = body.split('\n');
58
+ let open = null;
59
+ for (let i = 0; i < lines.length; i++) {
60
+ const line = lines[i];
61
+ if (open) {
62
+ const close = line.match(/^\s*(`{3,}|~{3,})\s*$/);
63
+ if (close && close[1][0] === open.marker[0] && close[1].length >= open.marker.length) {
64
+ fences.push(open.fence);
65
+ open = null;
66
+ }
67
+ else {
68
+ open.fence.lines.push(line);
69
+ }
70
+ continue;
71
+ }
72
+ const start = line.match(/^\s*(`{3,}|~{3,})\s*([\w+-]*)/);
73
+ if (start) {
74
+ open = {
75
+ marker: start[1],
76
+ fence: { lang: start[2].toLowerCase(), startLine: i + 2, lines: [] },
77
+ };
78
+ }
79
+ }
80
+ return fences;
81
+ }
82
+ // --- shell tokenising ------------------------------------------------------
83
+ /** Join `\`-continued lines, keeping the number of the first physical line. */
84
+ function logicalLines(fence) {
85
+ const out = [];
86
+ let acc = '';
87
+ let accLine = 0;
88
+ fence.lines.forEach((raw, idx) => {
89
+ const lineNo = fence.startLine + idx;
90
+ if (!acc)
91
+ accLine = lineNo;
92
+ if (/\\\s*$/.test(raw)) {
93
+ acc += `${raw.replace(/\\\s*$/, '')} `;
94
+ return;
95
+ }
96
+ out.push({ text: (acc + raw).trim(), line: accLine });
97
+ acc = '';
98
+ });
99
+ if (acc.trim())
100
+ out.push({ text: acc.trim(), line: accLine });
101
+ return out;
102
+ }
103
+ /** Replace quoted string contents with spaces so operators inside quotes are ignored. */
104
+ function maskQuotes(input) {
105
+ // `<placeholder text>` template slots are not redirections or pipes; blank them first.
106
+ const s = input.replace(/(^|[^<>\d])<[A-Za-z][^<>]*(?:<[^<>]*>[^<>]*)*>/g, (m, pre) => pre + ' '.repeat(m.length - pre.length));
107
+ let out = '';
108
+ let quote = null;
109
+ for (let i = 0; i < s.length; i++) {
110
+ const c = s[i];
111
+ if (quote) {
112
+ if (c === quote && (quote === "'" || s[i - 1] !== '\\')) {
113
+ quote = null;
114
+ out += c;
115
+ }
116
+ else {
117
+ out += ' ';
118
+ }
119
+ }
120
+ else if (c === '"' || c === "'") {
121
+ quote = c;
122
+ out += c;
123
+ }
124
+ else {
125
+ out += c;
126
+ }
127
+ }
128
+ return out;
129
+ }
130
+ /** Split a shell line into simple commands on `&&`, `||`, `;`, `|` (quote-aware). */
131
+ function splitCommands(line) {
132
+ const masked = maskQuotes(line);
133
+ const parts = [];
134
+ let last = 0;
135
+ const re = /&&|\|\||;|\||\$\(|`|\(|\)/g;
136
+ let m = re.exec(masked);
137
+ while (m !== null) {
138
+ parts.push(line.slice(last, m.index));
139
+ last = m.index + m[0].length;
140
+ m = re.exec(masked);
141
+ }
142
+ parts.push(line.slice(last));
143
+ return parts.map((p) => p.trim()).filter(Boolean);
144
+ }
145
+ function tokenize(cmd) {
146
+ const tokens = [];
147
+ const re = /"([^"]*)"|'([^']*)'|(\S+)/g;
148
+ let m = re.exec(cmd);
149
+ while (m !== null) {
150
+ if (m[3]?.startsWith('#'))
151
+ break; // trailing shell comment
152
+ tokens.push(m[1] ?? m[2] ?? m[3]);
153
+ m = re.exec(cmd);
154
+ }
155
+ return tokens;
156
+ }
157
+ // --- classification tables -------------------------------------------------
158
+ const SHELL_KEYWORDS = new Set([
159
+ 'if',
160
+ 'then',
161
+ 'else',
162
+ 'elif',
163
+ 'fi',
164
+ 'for',
165
+ 'do',
166
+ 'done',
167
+ 'while',
168
+ 'until',
169
+ 'case',
170
+ 'esac',
171
+ 'in',
172
+ 'function',
173
+ 'return',
174
+ 'exit',
175
+ 'break',
176
+ 'continue',
177
+ '{',
178
+ '}',
179
+ '(',
180
+ ')',
181
+ '!',
182
+ ]);
183
+ const READ_ONLY = new Set([
184
+ 'ls',
185
+ 'cat',
186
+ 'grep',
187
+ 'rg',
188
+ 'egrep',
189
+ 'fgrep',
190
+ 'echo',
191
+ 'printf',
192
+ 'test',
193
+ '[',
194
+ '[[',
195
+ 'head',
196
+ 'tail',
197
+ 'wc',
198
+ 'sort',
199
+ 'uniq',
200
+ 'cut',
201
+ 'tr',
202
+ 'jq',
203
+ 'yq',
204
+ 'awk',
205
+ 'diff',
206
+ 'pwd',
207
+ 'cd',
208
+ 'which',
209
+ 'command',
210
+ 'type',
211
+ 'date',
212
+ 'basename',
213
+ 'dirname',
214
+ 'readlink',
215
+ 'realpath',
216
+ 'stat',
217
+ 'file',
218
+ 'env',
219
+ 'export',
220
+ 'set',
221
+ 'unset',
222
+ 'read',
223
+ 'true',
224
+ 'false',
225
+ 'sleep',
226
+ 'xargs',
227
+ 'tree',
228
+ 'du',
229
+ 'df',
230
+ 'whoami',
231
+ 'hostname',
232
+ 'uname',
233
+ 'id',
234
+ 'nproc',
235
+ 'source',
236
+ '.',
237
+ 'local',
238
+ 'declare',
239
+ 'shift',
240
+ 'trap',
241
+ 'wait',
242
+ ]);
243
+ /** Tools that talk to a remote service by nature. */
244
+ const REMOTE_TOOLS = new Set([
245
+ 'curl',
246
+ 'wget',
247
+ 'ssh',
248
+ 'scp',
249
+ 'rsync',
250
+ 'aws',
251
+ 'gcloud',
252
+ 'az',
253
+ 'kubectl',
254
+ 'helm',
255
+ 'terraform',
256
+ 'tofu',
257
+ 'fly',
258
+ 'flyctl',
259
+ 'vercel',
260
+ 'heroku',
261
+ 'netlify',
262
+ 'psql',
263
+ 'mongosh',
264
+ 'mongo',
265
+ 'redis-cli',
266
+ 'mysql',
267
+ 'nc',
268
+ 'ping',
269
+ 'dig',
270
+ 'nslookup',
271
+ ]);
272
+ const PACKAGE_MANAGERS = new Set(['npm', 'pnpm', 'yarn', 'npx', 'pnpx', 'pip', 'pip3', 'cargo']);
273
+ const LOCAL_WRITE_TOOLS = new Set([
274
+ 'mkdir',
275
+ 'touch',
276
+ 'cp',
277
+ 'chmod',
278
+ 'chown',
279
+ 'ln',
280
+ 'make',
281
+ 'tar',
282
+ 'unzip',
283
+ 'zip',
284
+ 'gzip',
285
+ 'gunzip',
286
+ 'install',
287
+ 'patch',
288
+ 'mktemp',
289
+ 'node',
290
+ 'python',
291
+ 'python3',
292
+ 'bash',
293
+ 'sh',
294
+ 'zsh',
295
+ 'tsc',
296
+ 'biome',
297
+ 'vitest',
298
+ 'jest',
299
+ 'kill',
300
+ 'pkill',
301
+ 'claude',
302
+ 'opencode',
303
+ 'ai-dossier',
304
+ 'dossier',
305
+ ]);
306
+ const DESTRUCTIVE_VERB = /^(delete|destroy|terminate|rm|remove|drop|purge|prune|uninstall|deregister)$/;
307
+ const GH_READ_VERBS = new Set([
308
+ 'view',
309
+ 'list',
310
+ 'status',
311
+ 'diff',
312
+ 'checks',
313
+ 'watch',
314
+ 'download',
315
+ 'get',
316
+ 'search',
317
+ 'browse',
318
+ 'show',
319
+ ]);
320
+ const GH_DESTRUCTIVE_VERBS = new Set(['merge', 'delete', 'close', 'archive', 'lock']);
321
+ const GIT_READ = new Set([
322
+ 'status',
323
+ 'log',
324
+ 'diff',
325
+ 'show',
326
+ 'rev-parse',
327
+ 'rev-list',
328
+ 'ls-files',
329
+ 'ls-tree',
330
+ 'cat-file',
331
+ 'blame',
332
+ 'describe',
333
+ 'config',
334
+ 'remote',
335
+ 'merge-base',
336
+ 'grep',
337
+ 'shortlog',
338
+ 'name-rev',
339
+ 'for-each-ref',
340
+ 'symbolic-ref',
341
+ 'var',
342
+ 'check-ignore',
343
+ 'patch-id',
344
+ 'cherry',
345
+ 'range-diff',
346
+ ]);
347
+ const GIT_REMOTE_READ = new Set(['fetch', 'pull', 'clone', 'ls-remote']);
348
+ function stripEnvAssignments(tokens) {
349
+ let i = 0;
350
+ while (i < tokens.length && /^[A-Za-z_][A-Za-z0-9_]*=/.test(tokens[i]))
351
+ i++;
352
+ while (i < tokens.length && ['sudo', 'time', 'nohup', 'exec', 'command'].includes(tokens[i]))
353
+ i++;
354
+ return tokens.slice(i);
355
+ }
356
+ function hostOf(url) {
357
+ const m = url.match(/^[a-z][a-z0-9+.-]*:\/\/([^/\s:]+)/i);
358
+ return m ? m[1] : null;
359
+ }
360
+ function nonFlags(tokens) {
361
+ return tokens.filter((t) => !t.startsWith('-'));
362
+ }
363
+ /** Classify a single simple command (already split from pipelines). */
364
+ function classifyCommand(cmd, rawLine) {
365
+ const tokens = stripEnvAssignments(tokenize(cmd));
366
+ if (tokens.length === 0)
367
+ return null;
368
+ const exe = tokens[0].replace(/^.*\//, '');
369
+ const args = tokens.slice(1);
370
+ if (SHELL_KEYWORDS.has(exe) || exe.startsWith('#'))
371
+ return null;
372
+ // Pure variable assignment (`X=$(...)`) has no executable of its own.
373
+ if (/^[A-Za-z_][A-Za-z0-9_]*=/.test(tokens[0]))
374
+ return null;
375
+ const files = [];
376
+ let kind = 'read';
377
+ let recognized = true;
378
+ let network;
379
+ const bump = (k) => {
380
+ const order = ['read', 'local_write', 'remote', 'destructive'];
381
+ if (order.indexOf(k) > order.indexOf(kind))
382
+ kind = k;
383
+ };
384
+ // Output redirection (`> file`, `>> file`), ignoring quoted operators and /dev/*.
385
+ const masked = maskQuotes(rawLine);
386
+ const redir = /(?:^|[^<>&\d-])\d?>>?\s*([^\s|&;<>()]+)/g;
387
+ let rm = redir.exec(masked);
388
+ while (rm !== null) {
389
+ // Recover the unmasked target from the original line.
390
+ const target = rawLine.slice(rm.index + rm[0].length - rm[1].length, rm.index + rm[0].length);
391
+ if (!target.startsWith('/dev/') && !target.startsWith('&')) {
392
+ files.push({ path: target.replace(/^["']|["']$/g, ''), operation: 'write' });
393
+ bump('local_write');
394
+ }
395
+ rm = redir.exec(masked);
396
+ }
397
+ switch (exe) {
398
+ case 'rm':
399
+ case 'rmdir':
400
+ case 'unlink':
401
+ case 'shred':
402
+ for (const p of nonFlags(args))
403
+ files.push({ path: p, operation: 'delete' });
404
+ bump('destructive');
405
+ break;
406
+ case 'mv':
407
+ for (const p of nonFlags(args))
408
+ files.push({ path: p, operation: 'move' });
409
+ bump('local_write');
410
+ break;
411
+ case 'tee':
412
+ for (const p of nonFlags(args))
413
+ files.push({ path: p, operation: 'write' });
414
+ bump('local_write');
415
+ break;
416
+ case 'cp':
417
+ case 'install':
418
+ {
419
+ const paths = nonFlags(args);
420
+ if (paths.length > 0)
421
+ files.push({ path: paths[paths.length - 1], operation: 'write' });
422
+ }
423
+ bump('local_write');
424
+ break;
425
+ case 'mkdir':
426
+ case 'touch':
427
+ for (const p of nonFlags(args))
428
+ files.push({ path: p, operation: 'write' });
429
+ bump('local_write');
430
+ break;
431
+ case 'sed':
432
+ if (args.some((a) => /^-[a-zA-Z]*i/.test(a) || a === '--in-place')) {
433
+ const paths = nonFlags(args);
434
+ if (paths.length > 1)
435
+ files.push({ path: paths[paths.length - 1], operation: 'write' });
436
+ bump('local_write');
437
+ }
438
+ break;
439
+ case 'find':
440
+ if (args.includes('-delete'))
441
+ bump('destructive');
442
+ else if (args.includes('-exec'))
443
+ bump('local_write');
444
+ break;
445
+ case 'git': {
446
+ const sub = args.find((a) => !a.startsWith('-')) ?? '';
447
+ const rest = args.slice(args.indexOf(sub) + 1);
448
+ if (sub === 'push') {
449
+ const forced = rest.some((a) => a === '--force' || a === '-f' || a.startsWith('--force-with-lease'));
450
+ const deleting = rest.includes('--delete') || rest.some((a) => /^:\S/.test(a));
451
+ network = { tool: 'git', target: 'push', mutates: true };
452
+ bump(forced || deleting ? 'destructive' : 'remote');
453
+ }
454
+ else if (GIT_REMOTE_READ.has(sub)) {
455
+ network = { tool: 'git', target: sub, mutates: false };
456
+ bump('remote');
457
+ if (sub !== 'ls-remote')
458
+ bump('local_write');
459
+ }
460
+ else if (GIT_READ.has(sub)) {
461
+ // read-only (git config/remote may write, but bare invocations here are inspection)
462
+ }
463
+ else if ((sub === 'reset' && rest.includes('--hard')) ||
464
+ sub === 'clean' ||
465
+ (sub === 'branch' && rest.some((a) => a === '-D' || a === '--delete')) ||
466
+ (sub === 'checkout' && rest.includes('--') && rest.includes('.')) ||
467
+ (sub === 'worktree' && rest[0] === 'remove') ||
468
+ (sub === 'stash' && (rest[0] === 'drop' || rest[0] === 'clear'))) {
469
+ bump('destructive');
470
+ }
471
+ else {
472
+ bump('local_write');
473
+ }
474
+ break;
475
+ }
476
+ case 'gh': {
477
+ const words = nonFlags(args);
478
+ const group = words[0] ?? '';
479
+ const verb = words[1] ?? '';
480
+ if (group === 'api') {
481
+ const method = (() => {
482
+ const i = args.findIndex((a) => a === '-X' || a === '--method');
483
+ return i >= 0 ? (args[i + 1] ?? '').toUpperCase() : '';
484
+ })();
485
+ const hasBody = args.some((a) => a === '-f' || a === '-F' || a === '--field' || a === '--raw-field' || a === '--input');
486
+ const mutates = (method !== '' && method !== 'GET') || (method === '' && hasBody);
487
+ network = { tool: 'gh', target: `api ${words[1] ?? ''}`.trim(), mutates };
488
+ bump(method === 'DELETE' ? 'destructive' : 'remote');
489
+ }
490
+ else {
491
+ const mutates = !GH_READ_VERBS.has(verb);
492
+ network = { tool: 'gh', target: [group, verb].filter(Boolean).join(' '), mutates };
493
+ bump(GH_DESTRUCTIVE_VERBS.has(verb) ? 'destructive' : 'remote');
494
+ }
495
+ break;
496
+ }
497
+ case 'curl':
498
+ case 'wget': {
499
+ const url = args.find((a) => /^[a-z][a-z0-9+.-]*:\/\//i.test(a)) ?? '';
500
+ const method = (() => {
501
+ const i = args.findIndex((a) => a === '-X' || a === '--request');
502
+ return i >= 0 ? (args[i + 1] ?? '').toUpperCase() : '';
503
+ })();
504
+ const hasBody = args.some((a) => a === '-d' ||
505
+ a === '--data' ||
506
+ a === '--data-raw' ||
507
+ a === '--json' ||
508
+ a === '-F' ||
509
+ a === '-T');
510
+ const mutates = (method !== '' && method !== 'GET' && method !== 'HEAD') || hasBody;
511
+ network = { tool: exe, target: hostOf(url) ?? (url || 'unknown host'), mutates };
512
+ bump(method === 'DELETE' ? 'destructive' : 'remote');
513
+ const oi = args.findIndex((a) => a === '-o' || a === '--output' || a === '-O' || a === '--output-document');
514
+ if (oi >= 0 && args[oi + 1]) {
515
+ files.push({ path: args[oi + 1], operation: 'write' });
516
+ bump('remote');
517
+ }
518
+ break;
519
+ }
520
+ default: {
521
+ if (REMOTE_TOOLS.has(exe)) {
522
+ const words = nonFlags(args);
523
+ const destructive = words.some((w) => DESTRUCTIVE_VERB.test(w));
524
+ const mutates = destructive ||
525
+ words.some((w) => /^(apply|create|patch|scale|put|push|deploy|update|run|start|stop|cp|sync|replace|set|annotate|label|rollout|exec|copy|upgrade|install)$/.test(w));
526
+ network = { tool: exe, target: words.slice(0, 2).join(' ') || exe, mutates };
527
+ bump(destructive ? 'destructive' : 'remote');
528
+ }
529
+ else if (PACKAGE_MANAGERS.has(exe)) {
530
+ const sub = nonFlags(args)[0] ?? '';
531
+ if (sub === 'publish' || (exe === 'cargo' && sub === 'publish')) {
532
+ network = { tool: exe, target: 'publish', mutates: true };
533
+ bump('destructive');
534
+ }
535
+ else if (/^(install|i|add|ci|update|upgrade|dlx|exec)$/.test(sub) ||
536
+ exe === 'npx' ||
537
+ exe === 'pnpx') {
538
+ network = { tool: exe, target: sub || exe, mutates: false };
539
+ bump('remote');
540
+ bump('local_write');
541
+ }
542
+ else if (/^(run|test|build|lint|check|start|dev)$/.test(sub) || sub === '') {
543
+ bump('local_write');
544
+ }
545
+ else {
546
+ bump('local_write');
547
+ }
548
+ }
549
+ else if (exe === 'docker' || exe === 'podman') {
550
+ const sub = nonFlags(args)[0] ?? '';
551
+ if (sub === 'push' || sub === 'pull' || sub === 'login') {
552
+ network = { tool: exe, target: sub, mutates: sub === 'push' };
553
+ bump('remote');
554
+ }
555
+ else if (/^(rm|rmi|prune|kill|system)$/.test(sub)) {
556
+ bump('destructive');
557
+ }
558
+ else {
559
+ bump('local_write');
560
+ }
561
+ }
562
+ else if (exe === 'ai-dossier' || exe === 'dossier') {
563
+ const sub = nonFlags(args)[0] ?? '';
564
+ if (sub === 'publish' || sub === 'login') {
565
+ network = { tool: exe, target: sub, mutates: sub === 'publish' };
566
+ bump('remote');
567
+ }
568
+ else if (sub === 'run' || sub === 'pull' || sub === 'get') {
569
+ network = { tool: exe, target: sub, mutates: false };
570
+ bump('remote');
571
+ bump('local_write');
572
+ }
573
+ else {
574
+ bump('local_write');
575
+ }
576
+ }
577
+ else if (READ_ONLY.has(exe)) {
578
+ // stays 'read'
579
+ }
580
+ else if (LOCAL_WRITE_TOOLS.has(exe)) {
581
+ bump('local_write');
582
+ }
583
+ else {
584
+ recognized = false;
585
+ bump('local_write');
586
+ }
587
+ }
588
+ }
589
+ // `curl ... | sh` style: handled by the caller, which sees the whole pipeline.
590
+ return { kind, recognized, files: files.filter((f) => f.path.trim() !== ''), network };
591
+ }
592
+ const KNOWN_TOOL_NAMES = new Set([
593
+ ...REMOTE_TOOLS,
594
+ ...PACKAGE_MANAGERS,
595
+ ...LOCAL_WRITE_TOOLS,
596
+ 'git',
597
+ 'gh',
598
+ 'docker',
599
+ 'podman',
600
+ 'rm',
601
+ 'mv',
602
+ 'tee',
603
+ 'sed',
604
+ 'find',
605
+ 'rmdir',
606
+ 'cat',
607
+ 'grep',
608
+ 'ls',
609
+ 'echo',
610
+ 'jq',
611
+ ]);
612
+ const ENV_SHELL = /\$(?:\{([A-Z_][A-Z0-9_]*)[^}]*\}|([A-Z_][A-Z0-9_]*))/g;
613
+ const ENV_NODE = /process\.env\.([A-Za-z_][A-Za-z0-9_]*)|process\.env\[['"]([A-Za-z_][A-Za-z0-9_]*)['"]\]/g;
614
+ /** Shell-provided or ubiquitous variables that are not meaningful "inputs". */
615
+ const IGNORED_ENV = new Set([
616
+ 'PATH',
617
+ 'PWD',
618
+ 'OLDPWD',
619
+ 'IFS',
620
+ 'RANDOM',
621
+ 'LINENO',
622
+ 'SECONDS',
623
+ 'BASH_SOURCE',
624
+ 'FUNCNAME',
625
+ 'PIPESTATUS',
626
+ 'UID',
627
+ 'EUID',
628
+ ]);
629
+ // --- analysis --------------------------------------------------------------
630
+ function analyzeDryRun(input) {
631
+ const { frontmatter, body } = typeof input === 'string' ? (0, parser_1.parseDossierContent)(input) : input;
632
+ const commands = [];
633
+ const files = [];
634
+ const network = [];
635
+ const env = new Map();
636
+ // Variables the dossier assigns itself are internal state, not external inputs.
637
+ const assigned = new Set();
638
+ for (const fence of extractFences(body)) {
639
+ const isShell = SHELL_LANGS.has(fence.lang);
640
+ const isScript = SCRIPT_LANGS.has(fence.lang);
641
+ const isBare = fence.lang === '';
642
+ if (!isShell && !isScript && !isBare)
643
+ continue;
644
+ for (const { text, line } of logicalLines(fence)) {
645
+ if (!text || text.startsWith('#'))
646
+ continue;
647
+ if (isScript) {
648
+ for (const m of text.matchAll(ENV_NODE)) {
649
+ const name = m[1] ?? m[2];
650
+ if (name && !env.has(name))
651
+ env.set(name, { name, line });
652
+ }
653
+ continue;
654
+ }
655
+ // Strip a leading `$ ` prompt used in console-style blocks.
656
+ const clean = text.replace(/^\$\s+/, '');
657
+ if (isBare &&
658
+ !KNOWN_TOOL_NAMES.has(stripEnvAssignments(tokenize(clean))[0]?.replace(/^.*\//, '') ?? '')) {
659
+ // Unlabeled fences are often templates (PR bodies, commit messages); only trust known tools.
660
+ continue;
661
+ }
662
+ for (const m of clean.matchAll(/(?:^|[\s;&(])([A-Za-z_][A-Za-z0-9_]*)=/g))
663
+ assigned.add(m[1]);
664
+ for (const m of clean.matchAll(/\b(?:for|read(?:\s+-\w+)*|local|declare|export)\s+([A-Za-z_][A-Za-z0-9_]*)/g))
665
+ assigned.add(m[1]);
666
+ const envText = clean.replace(/'[^']*'/g, (q) => ' '.repeat(q.length));
667
+ for (const m of envText.matchAll(ENV_SHELL)) {
668
+ const name = m[1] ?? m[2];
669
+ if (name && !assigned.has(name) && !IGNORED_ENV.has(name) && !env.has(name)) {
670
+ env.set(name, { name, line });
671
+ }
672
+ }
673
+ const parts = splitCommands(clean);
674
+ const exes = parts.map((p) => stripEnvAssignments(tokenize(p))[0]?.replace(/^.*\//, '') ?? '');
675
+ const pipesToShell = /\|\s*(sudo\s+)?(sh|bash|zsh)\b/.test(maskQuotes(clean)) && /\b(curl|wget)\b/.test(clean);
676
+ parts.forEach((part, i) => {
677
+ // Redirections are attached to the segment that owns them.
678
+ const c = classifyCommand(part, part);
679
+ if (!c)
680
+ return;
681
+ let kind = c.kind;
682
+ if (pipesToShell && (exes[i] === 'sh' || exes[i] === 'bash' || exes[i] === 'zsh'))
683
+ kind = 'destructive';
684
+ commands.push({ command: part, kind, recognized: c.recognized, line });
685
+ for (const f of c.files)
686
+ files.push({ ...f, command: part, line });
687
+ if (c.network)
688
+ network.push({ ...c.network, command: part, line });
689
+ });
690
+ }
691
+ }
692
+ // Score.
693
+ const breakdown = [];
694
+ const riskLevel = frontmatter.risk_level ?? null;
695
+ const base = riskLevel ? (exports.SCORE_BASE[riskLevel] ?? 0) : 0;
696
+ if (base > 0)
697
+ breakdown.push({ component: `declared risk_level: ${riskLevel}`, points: base });
698
+ const factors = frontmatter.risk_factors ?? [];
699
+ const factorPts = Math.min(factors.length * exports.SCORE_PER_RISK_FACTOR, exports.SCORE_RISK_FACTOR_CAP);
700
+ if (factorPts > 0)
701
+ breakdown.push({ component: `${factors.length} declared risk_factors`, points: factorPts });
702
+ const destructive = frontmatter.destructive_operations ?? [];
703
+ const destPts = Math.min(destructive.length * exports.SCORE_PER_DESTRUCTIVE_DECLARATION, exports.SCORE_DESTRUCTIVE_DECLARATION_CAP);
704
+ if (destPts > 0)
705
+ breakdown.push({
706
+ component: `${destructive.length} declared destructive_operations`,
707
+ points: destPts,
708
+ });
709
+ for (const kind of ['local_write', 'remote', 'destructive']) {
710
+ const n = commands.filter((c) => c.kind === kind).length;
711
+ const pts = Math.min(n * exports.SCORE_PER_COMMAND[kind], exports.SCORE_COMMAND_CAP[kind]);
712
+ if (pts > 0)
713
+ breakdown.push({
714
+ component: `${n} ${kind} command${n === 1 ? '' : 's'} in code blocks`,
715
+ points: pts,
716
+ });
717
+ }
718
+ const risk_score = Math.min(100, breakdown.reduce((s, b) => s + b.points, 0));
719
+ return {
720
+ schema_version: exports.DRY_RUN_SCHEMA_VERSION,
721
+ static_preview: true,
722
+ disclaimer: exports.DRY_RUN_DISCLAIMER,
723
+ dossier: {
724
+ title: frontmatter.title,
725
+ version: frontmatter.version,
726
+ declared_risk_level: riskLevel,
727
+ },
728
+ declared: {
729
+ risk_factors: factors,
730
+ destructive_operations: destructive,
731
+ tools_required: (frontmatter.tools_required ?? []).map((t) => t.name),
732
+ requires_approval: frontmatter.requires_approval === true,
733
+ },
734
+ files,
735
+ commands,
736
+ network,
737
+ env: [...env.values()],
738
+ risk_score,
739
+ level: levelForScore(risk_score),
740
+ score_breakdown: breakdown,
741
+ };
742
+ }
743
+ //# sourceMappingURL=dry-run.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dry-run.js","sourceRoot":"","sources":["../src/dry-run.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -15,6 +15,8 @@ export { isOpenCodeUsageStream, parseAgentUsage, parseAnnouncedWait, parseDispat
15
15
  export { calculateChecksum, verifyIntegrity } from './checksum';
16
16
  export type { CoherenceContext, CoherenceDiagnostic, CoherenceResult, CoherenceSeverity, DeclaredOutputSchema, StepOutput, } from './coherence';
17
17
  export { validateCoherence, validateStepCoherence } from './coherence';
18
+ export type { DryRunCommand, DryRunEnv, DryRunFile, DryRunKind, DryRunLevel, DryRunNetwork, DryRunPlan, DryRunScoreComponent, } from './dry-run';
19
+ export { analyzeDryRun, DRY_RUN_DISCLAIMER, DRY_RUN_SCHEMA_VERSION, levelForScore, } from './dry-run';
18
20
  export type { EvidenceEntry, EvidenceRecord, EvidenceRef } from './evidence';
19
21
  export { createEvidenceRecord, EVIDENCE_MAX_BYTES, EVIDENCE_MAX_RATIONALE_CHARS, EVIDENCE_SCHEMA_VERSION, evidenceMatchesDossier, parseEvidence, validateEvidence, } from './evidence';
20
22
  export type { FormatOptions, FormatResult } from './formatter';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -26,8 +26,8 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
26
26
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
27
27
  };
28
28
  Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.verifyWithEd25519 = exports.verifySignature = exports.trustedKeysFromContent = exports.reportTrustedKeyProblems = exports.parseTrustedKeys = exports.loadTrustedKeys = exports.isKmsKeyIdentifier = exports.findTrustedIdentifier = exports.scanMarkdown = exports.scanDossierFile = exports.scanDossier = exports.SecurityRuleRegistry = exports.defaultSecurityRules = exports.buildReport = exports.runsLogPath = exports.assessVerificationRisk = exports.assessContentRisk = exports.validateFrontmatter = exports.VALID_STATUSES = exports.VALID_RISK_LEVELS = exports.REQUIRED_FIELDS = exports.RECOMMENDED_FIELDS = exports.parseDossierFile = exports.parseDossierContent = exports.loadLintConfig = exports.lintDossierFile = exports.lintDossier = exports.LintRuleRegistry = exports.defaultRules = exports.formatDossierFile = exports.formatDossierContent = exports.validateEvidence = exports.parseEvidence = exports.evidenceMatchesDossier = exports.EVIDENCE_SCHEMA_VERSION = exports.EVIDENCE_MAX_RATIONALE_CHARS = exports.EVIDENCE_MAX_BYTES = exports.createEvidenceRecord = exports.validateStepCoherence = exports.validateCoherence = exports.verifyIntegrity = exports.calculateChecksum = exports.usageParserFor = exports.SCHED_DISPATCH_EVENT = exports.parseOpenCodeUsage = exports.parseLastToolUse = exports.parseDispatchApiError = exports.parseAnnouncedWait = exports.parseAgentUsage = exports.isOpenCodeUsageStream = void 0;
30
- exports.createDefaultVerificationResult = exports.scanBodyForUrls = exports.isUrlCoveredByDeclared = exports.isPlaceholderUrl = exports.findUndeclaredUrls = exports.findStaleReferences = exports.collectDeclaredUrls = exports.readFileIfExists = exports.getErrorStack = exports.getErrorMessage = exports.sha256Hex = exports.sha256Hash = exports.VALID_TRACE_STATUSES = exports.createTraceRecorder = exports.resolveTraceConfig = exports.toSpkiPem = exports.signatureCoverage = exports.publicKeysMatch = exports.normalizePublicKey = exports.isSupportedPublicKey = exports.canonicalizeFrontmatter = exports.buildSignedPayload = exports.VerifierRegistry = exports.KmsVerifier = exports.KmsSigner = exports.getVerifierRegistry = exports.Ed25519Verifier = exports.Ed25519Signer = exports.verifyWithKms = void 0;
29
+ exports.parseTrustedKeys = exports.loadTrustedKeys = exports.isKmsKeyIdentifier = exports.findTrustedIdentifier = exports.scanMarkdown = exports.scanDossierFile = exports.scanDossier = exports.SecurityRuleRegistry = exports.defaultSecurityRules = exports.buildReport = exports.runsLogPath = exports.assessVerificationRisk = exports.assessContentRisk = exports.validateFrontmatter = exports.VALID_STATUSES = exports.VALID_RISK_LEVELS = exports.REQUIRED_FIELDS = exports.RECOMMENDED_FIELDS = exports.parseDossierFile = exports.parseDossierContent = exports.loadLintConfig = exports.lintDossierFile = exports.lintDossier = exports.LintRuleRegistry = exports.defaultRules = exports.formatDossierFile = exports.formatDossierContent = exports.validateEvidence = exports.parseEvidence = exports.evidenceMatchesDossier = exports.EVIDENCE_SCHEMA_VERSION = exports.EVIDENCE_MAX_RATIONALE_CHARS = exports.EVIDENCE_MAX_BYTES = exports.createEvidenceRecord = exports.levelForScore = exports.DRY_RUN_SCHEMA_VERSION = exports.DRY_RUN_DISCLAIMER = exports.analyzeDryRun = exports.validateStepCoherence = exports.validateCoherence = exports.verifyIntegrity = exports.calculateChecksum = exports.usageParserFor = exports.SCHED_DISPATCH_EVENT = exports.parseOpenCodeUsage = exports.parseLastToolUse = exports.parseDispatchApiError = exports.parseAnnouncedWait = exports.parseAgentUsage = exports.isOpenCodeUsageStream = void 0;
30
+ exports.createDefaultVerificationResult = exports.scanBodyForUrls = exports.isUrlCoveredByDeclared = exports.isPlaceholderUrl = exports.findUndeclaredUrls = exports.findStaleReferences = exports.collectDeclaredUrls = exports.readFileIfExists = exports.getErrorStack = exports.getErrorMessage = exports.sha256Hex = exports.sha256Hash = exports.VALID_TRACE_STATUSES = exports.createTraceRecorder = exports.resolveTraceConfig = exports.toSpkiPem = exports.signatureCoverage = exports.publicKeysMatch = exports.normalizePublicKey = exports.isSupportedPublicKey = exports.canonicalizeFrontmatter = exports.buildSignedPayload = exports.VerifierRegistry = exports.KmsVerifier = exports.KmsSigner = exports.getVerifierRegistry = exports.Ed25519Verifier = exports.Ed25519Signer = exports.verifyWithKms = exports.verifyWithEd25519 = exports.verifySignature = exports.trustedKeysFromContent = exports.reportTrustedKeyProblems = void 0;
31
31
  var agent_usage_1 = require("./agent-usage");
32
32
  Object.defineProperty(exports, "isOpenCodeUsageStream", { enumerable: true, get: function () { return agent_usage_1.isOpenCodeUsageStream; } });
33
33
  Object.defineProperty(exports, "parseAgentUsage", { enumerable: true, get: function () { return agent_usage_1.parseAgentUsage; } });
@@ -44,6 +44,11 @@ Object.defineProperty(exports, "verifyIntegrity", { enumerable: true, get: funct
44
44
  var coherence_1 = require("./coherence");
45
45
  Object.defineProperty(exports, "validateCoherence", { enumerable: true, get: function () { return coherence_1.validateCoherence; } });
46
46
  Object.defineProperty(exports, "validateStepCoherence", { enumerable: true, get: function () { return coherence_1.validateStepCoherence; } });
47
+ var dry_run_1 = require("./dry-run");
48
+ Object.defineProperty(exports, "analyzeDryRun", { enumerable: true, get: function () { return dry_run_1.analyzeDryRun; } });
49
+ Object.defineProperty(exports, "DRY_RUN_DISCLAIMER", { enumerable: true, get: function () { return dry_run_1.DRY_RUN_DISCLAIMER; } });
50
+ Object.defineProperty(exports, "DRY_RUN_SCHEMA_VERSION", { enumerable: true, get: function () { return dry_run_1.DRY_RUN_SCHEMA_VERSION; } });
51
+ Object.defineProperty(exports, "levelForScore", { enumerable: true, get: function () { return dry_run_1.levelForScore; } });
47
52
  var evidence_1 = require("./evidence");
48
53
  Object.defineProperty(exports, "createEvidenceRecord", { enumerable: true, get: function () { return evidence_1.createEvidenceRecord; } });
49
54
  Object.defineProperty(exports, "EVIDENCE_MAX_BYTES", { enumerable: true, get: function () { return evidence_1.EVIDENCE_MAX_BYTES; } });
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ai-dossier/core",
3
- "version": "1.11.0",
3
+ "version": "1.12.0",
4
4
  "description": "Parsing, verification, and signing for dossiers — portable, signed, versioned skills for any LLM tool.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",