@ai-dossier/core 1.11.0 → 1.12.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.
@@ -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,789 @@
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
+ /** True when `s` ends inside an unterminated '...' or "..." string. */
84
+ function endsInsideQuote(s) {
85
+ let quote = null;
86
+ for (let i = 0; i < s.length; i++) {
87
+ const c = s[i];
88
+ if (quote) {
89
+ if (c === '\\' && quote === '"')
90
+ i++;
91
+ else if (c === quote)
92
+ quote = null;
93
+ }
94
+ else if (c === '\\') {
95
+ i++;
96
+ }
97
+ else if (c === '"' || c === "'") {
98
+ quote = c;
99
+ }
100
+ }
101
+ return quote !== null;
102
+ }
103
+ /** Longest quoted span joined into one logical line before giving up (stray apostrophes in prose). */
104
+ const MAX_QUOTED_LINES = 40;
105
+ /** Join `\`-continued lines and multi-line quoted strings, keeping the number of the first physical line. */
106
+ function logicalLines(fence) {
107
+ const out = [];
108
+ let acc = '';
109
+ let accLine = 0;
110
+ let accCount = 0;
111
+ fence.lines.forEach((raw, idx) => {
112
+ const lineNo = fence.startLine + idx;
113
+ if (!acc) {
114
+ accLine = lineNo;
115
+ accCount = 0;
116
+ }
117
+ accCount++;
118
+ if (/\\\s*$/.test(raw)) {
119
+ acc += `${raw.replace(/\\\s*$/, '')} `;
120
+ return;
121
+ }
122
+ const joined = acc + raw;
123
+ if (endsInsideQuote(joined) && accCount < MAX_QUOTED_LINES) {
124
+ acc = `${joined} `;
125
+ return;
126
+ }
127
+ out.push({ text: joined.trim(), line: accLine });
128
+ acc = '';
129
+ });
130
+ if (acc.trim())
131
+ out.push({ text: acc.trim(), line: accLine });
132
+ return out;
133
+ }
134
+ /** Replace quoted string contents with spaces so operators inside quotes are ignored. */
135
+ function maskQuotes(input) {
136
+ // `<placeholder text>` template slots are not redirections or pipes; blank them first.
137
+ const s = input.replace(/(^|[^<>\d])<[A-Za-z][^<>]*(?:<[^<>]*>[^<>]*)*>/g, (m, pre) => pre + ' '.repeat(m.length - pre.length));
138
+ let out = '';
139
+ let quote = null;
140
+ for (let i = 0; i < s.length; i++) {
141
+ const c = s[i];
142
+ if (quote) {
143
+ if (c === quote && (quote === "'" || s[i - 1] !== '\\')) {
144
+ quote = null;
145
+ out += c;
146
+ }
147
+ else {
148
+ out += ' ';
149
+ }
150
+ }
151
+ else if (c === '"' || c === "'") {
152
+ quote = c;
153
+ out += c;
154
+ }
155
+ else {
156
+ out += c;
157
+ }
158
+ }
159
+ return out;
160
+ }
161
+ /** Split a shell line into simple commands on `&&`, `||`, `;`, `|` (quote-aware). */
162
+ function splitCommands(line) {
163
+ const masked = maskQuotes(line);
164
+ const parts = [];
165
+ let last = 0;
166
+ const re = /&&|\|\||;|\||\$\(|`|\(|\)/g;
167
+ let m = re.exec(masked);
168
+ while (m !== null) {
169
+ parts.push(line.slice(last, m.index));
170
+ last = m.index + m[0].length;
171
+ m = re.exec(masked);
172
+ }
173
+ parts.push(line.slice(last));
174
+ return parts.map((p) => p.trim()).filter(Boolean);
175
+ }
176
+ function tokenize(cmd) {
177
+ const tokens = [];
178
+ const re = /(?:[^\s"']|"[^"]*"|'[^']*')+/g;
179
+ let m = re.exec(cmd);
180
+ while (m !== null) {
181
+ if (m[0].startsWith('#'))
182
+ break; // trailing shell comment
183
+ tokens.push(m[0].replace(/"([^"]*)"|'([^']*)'/g, (_q, d, sq) => d ?? sq));
184
+ m = re.exec(cmd);
185
+ }
186
+ return tokens;
187
+ }
188
+ // --- classification tables -------------------------------------------------
189
+ const SHELL_KEYWORDS = new Set([
190
+ 'if',
191
+ 'then',
192
+ 'else',
193
+ 'elif',
194
+ 'fi',
195
+ 'for',
196
+ 'do',
197
+ 'done',
198
+ 'while',
199
+ 'until',
200
+ 'case',
201
+ 'esac',
202
+ 'in',
203
+ 'function',
204
+ 'return',
205
+ 'exit',
206
+ 'break',
207
+ 'continue',
208
+ '{',
209
+ '}',
210
+ '(',
211
+ ')',
212
+ '!',
213
+ ]);
214
+ const READ_ONLY = new Set([
215
+ 'ls',
216
+ 'cat',
217
+ 'grep',
218
+ 'rg',
219
+ 'egrep',
220
+ 'fgrep',
221
+ 'echo',
222
+ 'printf',
223
+ 'test',
224
+ '[',
225
+ '[[',
226
+ 'head',
227
+ 'tail',
228
+ 'wc',
229
+ 'sort',
230
+ 'uniq',
231
+ 'cut',
232
+ 'tr',
233
+ 'jq',
234
+ 'yq',
235
+ 'awk',
236
+ 'diff',
237
+ 'pwd',
238
+ 'cd',
239
+ 'which',
240
+ 'command',
241
+ 'type',
242
+ 'date',
243
+ 'basename',
244
+ 'dirname',
245
+ 'readlink',
246
+ 'realpath',
247
+ 'stat',
248
+ 'file',
249
+ 'env',
250
+ 'export',
251
+ 'set',
252
+ 'unset',
253
+ 'read',
254
+ 'true',
255
+ 'false',
256
+ 'sleep',
257
+ 'xargs',
258
+ 'tree',
259
+ 'du',
260
+ 'df',
261
+ 'whoami',
262
+ 'hostname',
263
+ 'uname',
264
+ 'id',
265
+ 'nproc',
266
+ 'source',
267
+ '.',
268
+ 'local',
269
+ 'declare',
270
+ 'shift',
271
+ 'trap',
272
+ 'wait',
273
+ ]);
274
+ /** Tools that talk to a remote service by nature. */
275
+ const REMOTE_TOOLS = new Set([
276
+ 'curl',
277
+ 'wget',
278
+ 'ssh',
279
+ 'scp',
280
+ 'rsync',
281
+ 'aws',
282
+ 'gcloud',
283
+ 'az',
284
+ 'kubectl',
285
+ 'helm',
286
+ 'terraform',
287
+ 'tofu',
288
+ 'fly',
289
+ 'flyctl',
290
+ 'vercel',
291
+ 'heroku',
292
+ 'netlify',
293
+ 'psql',
294
+ 'mongosh',
295
+ 'mongo',
296
+ 'redis-cli',
297
+ 'mysql',
298
+ 'nc',
299
+ 'ping',
300
+ 'dig',
301
+ 'nslookup',
302
+ ]);
303
+ const PACKAGE_MANAGERS = new Set(['npm', 'pnpm', 'yarn', 'npx', 'pnpx', 'pip', 'pip3', 'cargo']);
304
+ const LOCAL_WRITE_TOOLS = new Set([
305
+ 'mkdir',
306
+ 'touch',
307
+ 'cp',
308
+ 'chmod',
309
+ 'chown',
310
+ 'ln',
311
+ 'make',
312
+ 'tar',
313
+ 'unzip',
314
+ 'zip',
315
+ 'gzip',
316
+ 'gunzip',
317
+ 'install',
318
+ 'patch',
319
+ 'mktemp',
320
+ 'node',
321
+ 'python',
322
+ 'python3',
323
+ 'bash',
324
+ 'sh',
325
+ 'zsh',
326
+ 'tsc',
327
+ 'biome',
328
+ 'vitest',
329
+ 'jest',
330
+ 'kill',
331
+ 'pkill',
332
+ 'claude',
333
+ 'opencode',
334
+ 'ai-dossier',
335
+ 'dossier',
336
+ ]);
337
+ const DESTRUCTIVE_VERB = /^(delete|destroy|terminate|rm|remove|drop|purge|prune|uninstall|deregister)$/;
338
+ const GH_READ_VERBS = new Set([
339
+ 'view',
340
+ 'list',
341
+ 'status',
342
+ 'diff',
343
+ 'checks',
344
+ 'watch',
345
+ 'download',
346
+ 'get',
347
+ 'search',
348
+ 'browse',
349
+ 'show',
350
+ ]);
351
+ const GH_DESTRUCTIVE_VERBS = new Set(['merge', 'delete', 'close', 'archive', 'lock']);
352
+ const GIT_READ = new Set([
353
+ 'status',
354
+ 'log',
355
+ 'diff',
356
+ 'show',
357
+ 'rev-parse',
358
+ 'rev-list',
359
+ 'ls-files',
360
+ 'ls-tree',
361
+ 'cat-file',
362
+ 'blame',
363
+ 'describe',
364
+ 'config',
365
+ 'remote',
366
+ 'merge-base',
367
+ 'grep',
368
+ 'shortlog',
369
+ 'name-rev',
370
+ 'for-each-ref',
371
+ 'symbolic-ref',
372
+ 'var',
373
+ 'check-ignore',
374
+ 'patch-id',
375
+ 'cherry',
376
+ 'range-diff',
377
+ ]);
378
+ const GIT_REMOTE_READ = new Set(['fetch', 'pull', 'clone', 'ls-remote']);
379
+ function stripEnvAssignments(tokens) {
380
+ let i = 0;
381
+ while (i < tokens.length && /^[A-Za-z_][A-Za-z0-9_]*=/.test(tokens[i]))
382
+ i++;
383
+ while (i < tokens.length && ['sudo', 'time', 'nohup', 'exec', 'command'].includes(tokens[i]))
384
+ i++;
385
+ return tokens.slice(i);
386
+ }
387
+ function hostOf(url) {
388
+ const m = url.match(/^[a-z][a-z0-9+.-]*:\/\/([^/\s:]+)/i);
389
+ return m ? m[1] : null;
390
+ }
391
+ function nonFlags(tokens) {
392
+ return tokens.filter((t) => !t.startsWith('-'));
393
+ }
394
+ /** Classify a single simple command (already split from pipelines). */
395
+ function classifyCommand(cmd, rawLine) {
396
+ const tokens = stripEnvAssignments(tokenize(cmd));
397
+ if (tokens.length === 0)
398
+ return null;
399
+ const exe = tokens[0].replace(/^.*\//, '');
400
+ const args = tokens.slice(1);
401
+ if (SHELL_KEYWORDS.has(exe) || exe.startsWith('#'))
402
+ return null;
403
+ // Pure variable assignment (`X=$(...)`) has no executable of its own.
404
+ if (/^[A-Za-z_][A-Za-z0-9_]*=/.test(tokens[0]))
405
+ return null;
406
+ const files = [];
407
+ let kind = 'read';
408
+ let recognized = true;
409
+ let network;
410
+ const bump = (k) => {
411
+ const order = ['read', 'local_write', 'remote', 'destructive'];
412
+ if (order.indexOf(k) > order.indexOf(kind))
413
+ kind = k;
414
+ };
415
+ // Output redirection (`> file`, `>> file`), ignoring quoted operators and /dev/*.
416
+ const masked = maskQuotes(rawLine);
417
+ const redir = /(?:^|[^<>&\d-])\d?>>?\s*([^\s|&;<>()]+)/g;
418
+ let rm = redir.exec(masked);
419
+ while (rm !== null) {
420
+ // Recover the unmasked target from the original line.
421
+ const target = rawLine.slice(rm.index + rm[0].length - rm[1].length, rm.index + rm[0].length);
422
+ if (!target.startsWith('/dev/') && !target.startsWith('&')) {
423
+ files.push({ path: target.replace(/^["']|["']$/g, ''), operation: 'write' });
424
+ bump('local_write');
425
+ }
426
+ rm = redir.exec(masked);
427
+ }
428
+ switch (exe) {
429
+ case 'rm':
430
+ case 'rmdir':
431
+ case 'unlink':
432
+ case 'shred':
433
+ for (const p of nonFlags(args))
434
+ files.push({ path: p, operation: 'delete' });
435
+ bump('destructive');
436
+ break;
437
+ case 'mv':
438
+ for (const p of nonFlags(args))
439
+ files.push({ path: p, operation: 'move' });
440
+ bump('local_write');
441
+ break;
442
+ case 'tee':
443
+ for (const p of nonFlags(args))
444
+ files.push({ path: p, operation: 'write' });
445
+ bump('local_write');
446
+ break;
447
+ case 'cp':
448
+ case 'install':
449
+ {
450
+ const paths = nonFlags(args);
451
+ if (paths.length > 0)
452
+ files.push({ path: paths[paths.length - 1], operation: 'write' });
453
+ }
454
+ bump('local_write');
455
+ break;
456
+ case 'mkdir':
457
+ case 'touch':
458
+ for (const p of nonFlags(args))
459
+ files.push({ path: p, operation: 'write' });
460
+ bump('local_write');
461
+ break;
462
+ case 'sed':
463
+ if (args.some((a) => /^-[a-zA-Z]*i/.test(a) || a === '--in-place')) {
464
+ const paths = nonFlags(args);
465
+ if (paths.length > 1)
466
+ files.push({ path: paths[paths.length - 1], operation: 'write' });
467
+ bump('local_write');
468
+ }
469
+ break;
470
+ case 'find':
471
+ if (args.includes('-delete'))
472
+ bump('destructive');
473
+ else if (args.includes('-exec'))
474
+ bump('local_write');
475
+ break;
476
+ case 'git': {
477
+ const sub = args.find((a) => !a.startsWith('-')) ?? '';
478
+ const rest = args.slice(args.indexOf(sub) + 1);
479
+ if (sub === 'push') {
480
+ const forced = rest.some((a) => a === '--force' || a === '-f' || a.startsWith('--force-with-lease'));
481
+ const deleting = rest.includes('--delete') || rest.some((a) => /^:\S/.test(a));
482
+ network = { tool: 'git', target: 'push', mutates: true };
483
+ bump(forced || deleting ? 'destructive' : 'remote');
484
+ }
485
+ else if (GIT_REMOTE_READ.has(sub)) {
486
+ network = { tool: 'git', target: sub, mutates: false };
487
+ bump('remote');
488
+ if (sub !== 'ls-remote')
489
+ bump('local_write');
490
+ }
491
+ else if (GIT_READ.has(sub)) {
492
+ // read-only (git config/remote may write, but bare invocations here are inspection)
493
+ }
494
+ else if ((sub === 'reset' && rest.includes('--hard')) ||
495
+ sub === 'clean' ||
496
+ (sub === 'branch' && rest.some((a) => a === '-D' || a === '--delete')) ||
497
+ (sub === 'checkout' && rest.includes('--') && rest.includes('.')) ||
498
+ (sub === 'worktree' && rest[0] === 'remove') ||
499
+ (sub === 'stash' && (rest[0] === 'drop' || rest[0] === 'clear'))) {
500
+ bump('destructive');
501
+ }
502
+ else {
503
+ bump('local_write');
504
+ }
505
+ break;
506
+ }
507
+ case 'gh': {
508
+ const words = nonFlags(args);
509
+ const group = words[0] ?? '';
510
+ const verb = words[1] ?? '';
511
+ if (group === 'api') {
512
+ const method = (() => {
513
+ const i = args.findIndex((a) => a === '-X' || a === '--method');
514
+ return i >= 0 ? (args[i + 1] ?? '').toUpperCase() : '';
515
+ })();
516
+ const hasBody = args.some((a) => a === '-f' || a === '-F' || a === '--field' || a === '--raw-field' || a === '--input');
517
+ const mutates = (method !== '' && method !== 'GET') || (method === '' && hasBody);
518
+ network = { tool: 'gh', target: `api ${words[1] ?? ''}`.trim(), mutates };
519
+ bump(method === 'DELETE' ? 'destructive' : 'remote');
520
+ }
521
+ else {
522
+ const mutates = !GH_READ_VERBS.has(verb);
523
+ network = { tool: 'gh', target: [group, verb].filter(Boolean).join(' '), mutates };
524
+ bump(GH_DESTRUCTIVE_VERBS.has(verb) ? 'destructive' : 'remote');
525
+ }
526
+ break;
527
+ }
528
+ case 'curl':
529
+ case 'wget': {
530
+ const url = args.find((a) => /^[a-z][a-z0-9+.-]*:\/\//i.test(a)) ?? '';
531
+ const method = (() => {
532
+ const i = args.findIndex((a) => a === '-X' || a === '--request');
533
+ return i >= 0 ? (args[i + 1] ?? '').toUpperCase() : '';
534
+ })();
535
+ const hasBody = args.some((a) => a === '-d' ||
536
+ a === '--data' ||
537
+ a === '--data-raw' ||
538
+ a === '--json' ||
539
+ a === '-F' ||
540
+ a === '-T');
541
+ const mutates = (method !== '' && method !== 'GET' && method !== 'HEAD') || hasBody;
542
+ network = { tool: exe, target: hostOf(url) ?? (url || 'unknown host'), mutates };
543
+ bump(method === 'DELETE' ? 'destructive' : 'remote');
544
+ const oi = args.findIndex((a) => a === '-o' || a === '--output' || a === '-O' || a === '--output-document');
545
+ if (oi >= 0 && args[oi + 1]) {
546
+ files.push({ path: args[oi + 1], operation: 'write' });
547
+ bump('remote');
548
+ }
549
+ break;
550
+ }
551
+ default: {
552
+ if (REMOTE_TOOLS.has(exe)) {
553
+ const words = nonFlags(args);
554
+ const destructive = words.some((w) => DESTRUCTIVE_VERB.test(w));
555
+ const mutates = destructive ||
556
+ 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));
557
+ network = { tool: exe, target: words.slice(0, 2).join(' ') || exe, mutates };
558
+ bump(destructive ? 'destructive' : 'remote');
559
+ }
560
+ else if (PACKAGE_MANAGERS.has(exe)) {
561
+ const sub = nonFlags(args)[0] ?? '';
562
+ if (sub === 'publish' || (exe === 'cargo' && sub === 'publish')) {
563
+ network = { tool: exe, target: 'publish', mutates: true };
564
+ bump('destructive');
565
+ }
566
+ else if (/^(install|i|add|ci|update|upgrade|dlx|exec)$/.test(sub) ||
567
+ exe === 'npx' ||
568
+ exe === 'pnpx') {
569
+ network = { tool: exe, target: sub || exe, mutates: false };
570
+ bump('remote');
571
+ bump('local_write');
572
+ }
573
+ else if (/^(run|test|build|lint|check|start|dev)$/.test(sub) || sub === '') {
574
+ bump('local_write');
575
+ }
576
+ else {
577
+ bump('local_write');
578
+ }
579
+ }
580
+ else if (exe === 'docker' || exe === 'podman') {
581
+ const sub = nonFlags(args)[0] ?? '';
582
+ if (sub === 'push' || sub === 'pull' || sub === 'login') {
583
+ network = { tool: exe, target: sub, mutates: sub === 'push' };
584
+ bump('remote');
585
+ }
586
+ else if (/^(rm|rmi|prune|kill|system)$/.test(sub)) {
587
+ bump('destructive');
588
+ }
589
+ else {
590
+ bump('local_write');
591
+ }
592
+ }
593
+ else if (exe === 'ai-dossier' || exe === 'dossier') {
594
+ const sub = nonFlags(args)[0] ?? '';
595
+ if (sub === 'publish' || sub === 'login') {
596
+ network = { tool: exe, target: sub, mutates: sub === 'publish' };
597
+ bump('remote');
598
+ }
599
+ else if (sub === 'run' || sub === 'pull' || sub === 'get') {
600
+ network = { tool: exe, target: sub, mutates: false };
601
+ bump('remote');
602
+ bump('local_write');
603
+ }
604
+ else {
605
+ bump('local_write');
606
+ }
607
+ }
608
+ else if (READ_ONLY.has(exe)) {
609
+ // stays 'read'
610
+ }
611
+ else if (LOCAL_WRITE_TOOLS.has(exe)) {
612
+ bump('local_write');
613
+ }
614
+ else {
615
+ recognized = false;
616
+ bump('local_write');
617
+ }
618
+ }
619
+ }
620
+ // `curl ... | sh` style: handled by the caller, which sees the whole pipeline.
621
+ return { kind, recognized, files: files.filter((f) => f.path.trim() !== ''), network };
622
+ }
623
+ const KNOWN_TOOL_NAMES = new Set([
624
+ ...REMOTE_TOOLS,
625
+ ...PACKAGE_MANAGERS,
626
+ ...LOCAL_WRITE_TOOLS,
627
+ 'git',
628
+ 'gh',
629
+ 'docker',
630
+ 'podman',
631
+ 'rm',
632
+ 'mv',
633
+ 'tee',
634
+ 'sed',
635
+ 'find',
636
+ 'rmdir',
637
+ 'cat',
638
+ 'grep',
639
+ 'ls',
640
+ 'echo',
641
+ 'jq',
642
+ ]);
643
+ const ENV_SHELL = /\$(?:\{([A-Z_][A-Z0-9_]*)[^}]*\}|([A-Z_][A-Z0-9_]*))/g;
644
+ const ENV_NODE = /process\.env\.([A-Za-z_][A-Za-z0-9_]*)|process\.env\[['"]([A-Za-z_][A-Za-z0-9_]*)['"]\]/g;
645
+ /** Shell-provided or ubiquitous variables that are not meaningful "inputs". */
646
+ const IGNORED_ENV = new Set([
647
+ 'PATH',
648
+ 'PWD',
649
+ 'OLDPWD',
650
+ 'IFS',
651
+ 'RANDOM',
652
+ 'LINENO',
653
+ 'SECONDS',
654
+ 'BASH_SOURCE',
655
+ 'FUNCNAME',
656
+ 'PIPESTATUS',
657
+ 'UID',
658
+ 'EUID',
659
+ ]);
660
+ // --- analysis --------------------------------------------------------------
661
+ function analyzeDryRun(input) {
662
+ const { frontmatter, body } = typeof input === 'string' ? (0, parser_1.parseDossierContent)(input) : input;
663
+ const commands = [];
664
+ const files = [];
665
+ const network = [];
666
+ const env = new Map();
667
+ // Variables the dossier assigns itself are internal state, not external inputs.
668
+ const assigned = new Set();
669
+ for (const fence of extractFences(body)) {
670
+ const isShell = SHELL_LANGS.has(fence.lang);
671
+ const isScript = SCRIPT_LANGS.has(fence.lang);
672
+ const isBare = fence.lang === '';
673
+ if (!isShell && !isScript && !isBare)
674
+ continue;
675
+ let heredocEnd = null;
676
+ for (const { text, line } of logicalLines(fence)) {
677
+ if (heredocEnd !== null) {
678
+ if (text === heredocEnd)
679
+ heredocEnd = null;
680
+ continue; // heredoc bodies are data (PR bodies, file contents), not commands
681
+ }
682
+ const heredoc = text.match(/<<-?\s*['"]?([A-Za-z_][A-Za-z0-9_]*)['"]?/);
683
+ // A heredoc already closed inside a joined multi-line quote needs no skipping.
684
+ if (heredoc &&
685
+ !new RegExp(`\\b${heredoc[1]}\\b`).test(text.slice((heredoc.index ?? 0) + heredoc[0].length))) {
686
+ heredocEnd = heredoc[1];
687
+ }
688
+ if (!text || text.startsWith('#'))
689
+ continue;
690
+ if (isScript) {
691
+ for (const m of text.matchAll(ENV_NODE)) {
692
+ const name = m[1] ?? m[2];
693
+ if (name && !env.has(name))
694
+ env.set(name, { name, line });
695
+ }
696
+ continue;
697
+ }
698
+ // Strip a leading `$ ` prompt used in console-style blocks.
699
+ const clean = text.replace(/^\$\s+/, '');
700
+ if (isBare &&
701
+ !KNOWN_TOOL_NAMES.has(stripEnvAssignments(tokenize(clean))[0]?.replace(/^.*\//, '') ?? '')) {
702
+ // Unlabeled fences are often templates (PR bodies, commit messages); only trust known tools.
703
+ continue;
704
+ }
705
+ for (const m of clean.matchAll(/(?:^|[\s;&(])([A-Za-z_][A-Za-z0-9_]*)=/g))
706
+ assigned.add(m[1]);
707
+ for (const m of clean.matchAll(/\b(?:for|read(?:\s+-\w+)*|local|declare|export)\s+([A-Za-z_][A-Za-z0-9_]*)/g))
708
+ assigned.add(m[1]);
709
+ const envText = clean.replace(/'[^']*'/g, (q) => ' '.repeat(q.length));
710
+ for (const m of envText.matchAll(ENV_SHELL)) {
711
+ const name = m[1] ?? m[2];
712
+ if (name && !assigned.has(name) && !IGNORED_ENV.has(name) && !env.has(name)) {
713
+ env.set(name, { name, line });
714
+ }
715
+ }
716
+ const parts = splitCommands(clean);
717
+ const exes = parts.map((p) => stripEnvAssignments(tokenize(p))[0]?.replace(/^.*\//, '') ?? '');
718
+ const pipesToShell = /\|\s*(sudo\s+)?(sh|bash|zsh)\b/.test(maskQuotes(clean)) && /\b(curl|wget)\b/.test(clean);
719
+ parts.forEach((part, i) => {
720
+ // Redirections are attached to the segment that owns them.
721
+ const c = classifyCommand(part, part);
722
+ if (!c)
723
+ return;
724
+ // Unknown words after a pipe are almost always prose (`a|b|c` alternatives), not tools.
725
+ if (i > 0 && !c.recognized && c.files.length === 0)
726
+ return;
727
+ let kind = c.kind;
728
+ if (pipesToShell && (exes[i] === 'sh' || exes[i] === 'bash' || exes[i] === 'zsh'))
729
+ kind = 'destructive';
730
+ commands.push({ command: part, kind, recognized: c.recognized, line });
731
+ for (const f of c.files)
732
+ files.push({ ...f, command: part, line });
733
+ if (c.network)
734
+ network.push({ ...c.network, command: part, line });
735
+ });
736
+ }
737
+ }
738
+ // Score.
739
+ const breakdown = [];
740
+ const riskLevel = frontmatter.risk_level ?? null;
741
+ const base = riskLevel ? (exports.SCORE_BASE[riskLevel] ?? 0) : 0;
742
+ if (base > 0)
743
+ breakdown.push({ component: `declared risk_level: ${riskLevel}`, points: base });
744
+ const factors = frontmatter.risk_factors ?? [];
745
+ const factorPts = Math.min(factors.length * exports.SCORE_PER_RISK_FACTOR, exports.SCORE_RISK_FACTOR_CAP);
746
+ if (factorPts > 0)
747
+ breakdown.push({ component: `${factors.length} declared risk_factors`, points: factorPts });
748
+ const destructive = frontmatter.destructive_operations ?? [];
749
+ const destPts = Math.min(destructive.length * exports.SCORE_PER_DESTRUCTIVE_DECLARATION, exports.SCORE_DESTRUCTIVE_DECLARATION_CAP);
750
+ if (destPts > 0)
751
+ breakdown.push({
752
+ component: `${destructive.length} declared destructive_operations`,
753
+ points: destPts,
754
+ });
755
+ for (const kind of ['local_write', 'remote', 'destructive']) {
756
+ const n = commands.filter((c) => c.kind === kind).length;
757
+ const pts = Math.min(n * exports.SCORE_PER_COMMAND[kind], exports.SCORE_COMMAND_CAP[kind]);
758
+ if (pts > 0)
759
+ breakdown.push({
760
+ component: `${n} ${kind} command${n === 1 ? '' : 's'} in code blocks`,
761
+ points: pts,
762
+ });
763
+ }
764
+ const risk_score = Math.min(100, breakdown.reduce((s, b) => s + b.points, 0));
765
+ return {
766
+ schema_version: exports.DRY_RUN_SCHEMA_VERSION,
767
+ static_preview: true,
768
+ disclaimer: exports.DRY_RUN_DISCLAIMER,
769
+ dossier: {
770
+ title: frontmatter.title,
771
+ version: frontmatter.version,
772
+ declared_risk_level: riskLevel,
773
+ },
774
+ declared: {
775
+ risk_factors: factors,
776
+ destructive_operations: destructive,
777
+ tools_required: (frontmatter.tools_required ?? []).map((t) => t.name),
778
+ requires_approval: frontmatter.requires_approval === true,
779
+ },
780
+ files,
781
+ commands,
782
+ network,
783
+ env: [...env.values()],
784
+ risk_score,
785
+ level: levelForScore(risk_score),
786
+ score_breakdown: breakdown,
787
+ };
788
+ }
789
+ //# 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":";AAAA;;;;;;;;;;;GAWG;;;;;;;;;;;;;;;;;;AAIH,6CASuB;AARrB,oHAAA,qBAAqB,OAAA;AACrB,8GAAA,eAAe,OAAA;AACf,iHAAA,kBAAkB,OAAA;AAClB,oHAAA,qBAAqB,OAAA;AACrB,+GAAA,gBAAgB,OAAA;AAChB,iHAAA,kBAAkB,OAAA;AAClB,mHAAA,oBAAoB,OAAA;AACpB,6GAAA,cAAc,OAAA;AAEhB,mBAAmB;AACnB,uCAAgE;AAAvD,6GAAA,iBAAiB,OAAA;AAAE,2GAAA,eAAe,OAAA;AAU3C,yCAAuE;AAA9D,8GAAA,iBAAiB,OAAA;AAAE,kHAAA,qBAAqB,OAAA;AAYjD,qCAKmB;AAJjB,wGAAA,aAAa,OAAA;AACb,6GAAA,kBAAkB,OAAA;AAClB,iHAAA,sBAAsB,OAAA;AACtB,wGAAA,aAAa,OAAA;AAIf,uCAQoB;AAPlB,gHAAA,oBAAoB,OAAA;AACpB,8GAAA,kBAAkB,OAAA;AAClB,wHAAA,4BAA4B,OAAA;AAC5B,mHAAA,uBAAuB,OAAA;AACvB,kHAAA,sBAAsB,OAAA;AACtB,yGAAA,aAAa,OAAA;AACb,4GAAA,gBAAgB,OAAA;AAGlB,oBAAoB;AACpB,yCAAsE;AAA7D,iHAAA,oBAAoB,OAAA;AAAE,8GAAA,iBAAiB,OAAA;AAUhD,iBAAiB;AACjB,mCAMkB;AALhB,sGAAA,YAAY,OAAA;AACZ,0GAAA,gBAAgB,OAAA;AAChB,qGAAA,WAAW,OAAA;AACX,yGAAA,eAAe,OAAA;AACf,wGAAA,cAAc,OAAA;AAEhB,iBAAiB;AACjB,mCAQkB;AAPhB,6GAAA,mBAAmB,OAAA;AACnB,0GAAA,gBAAgB,OAAA;AAChB,4GAAA,kBAAkB,OAAA;AAClB,yGAAA,eAAe,OAAA;AACf,2GAAA,iBAAiB,OAAA;AACjB,wGAAA,cAAc,OAAA;AACd,6GAAA,mBAAmB,OAAA;AASrB,0BAA0B;AAC1B,qDAA8E;AAArE,oHAAA,iBAAiB,OAAA;AAAE,yHAAA,sBAAsB,OAAA;AAGlD,iDAA8C;AAArC,4GAAA,WAAW,OAAA;AAYpB,uDAO4B;AAN1B,+GAAA,WAAW,OAAA;AACX,wHAAA,oBAAoB,OAAA;AACpB,wHAAA,oBAAoB,OAAA;AACpB,+GAAA,WAAW,OAAA;AACX,mHAAA,eAAe,OAAA;AACf,gHAAA,YAAY,OAAA;AAId,yCAUqB;AATnB,kHAAA,qBAAqB,OAAA;AACrB,+GAAA,kBAAkB,OAAA;AAClB,4GAAA,eAAe,OAAA;AACf,6GAAA,gBAAgB,OAAA;AAChB,qHAAA,wBAAwB,OAAA;AACxB,mHAAA,sBAAsB,OAAA;AACtB,4GAAA,eAAe,OAAA;AACf,8GAAA,iBAAiB,OAAA;AACjB,0GAAA,aAAa,OAAA;AAEf,iDAAiD;AACjD,qCAWmB;AAVjB,wGAAA,aAAa,OAAA;AACb,0GAAA,eAAe,OAAA;AACf,8GAAA,mBAAmB,OAAA;AACnB,oGAAA,SAAS,OAAA;AACT,sGAAA,WAAW,OAAA;AAIX,2GAAA,gBAAgB,OAAA;AAKlB,qDAQ2B;AAPzB,qHAAA,kBAAkB,OAAA;AAClB,0HAAA,uBAAuB,OAAA;AACvB,uHAAA,oBAAoB,OAAA;AACpB,qHAAA,kBAAkB,OAAA;AAClB,kHAAA,eAAe,OAAA;AACf,oHAAA,iBAAiB,OAAA;AACjB,4GAAA,SAAS,OAAA;AASX,+CAAoD;AAA3C,kHAAA,kBAAkB,OAAA;AAW3B,mDAA6E;AAApE,qHAAA,mBAAmB,OAAA;AAAE,sHAAA,oBAAoB,OAAA;AAClD,eAAe;AACf,0CAAwB;AACxB,mBAAmB;AACnB,yCAAuD;AAA9C,oGAAA,UAAU,OAAA;AAAE,mGAAA,SAAS,OAAA;AAC9B,kBAAkB;AAClB,yCAAgE;AAAvD,yGAAA,eAAe,OAAA;AAAE,uGAAA,aAAa,OAAA;AACvC,wBAAwB;AACxB,iCAA8C;AAArC,sGAAA,gBAAgB,OAAA;AACzB,yBAAyB;AACzB,mDAO6B;AAN3B,kHAAA,mBAAmB,OAAA;AACnB,kHAAA,mBAAmB,OAAA;AACnB,iHAAA,kBAAkB,OAAA;AAClB,+GAAA,gBAAgB,OAAA;AAChB,qHAAA,sBAAsB,OAAA;AACtB,8GAAA,eAAe,OAAA;AAEjB,yBAAyB;AACzB,qDAAuE;AAA9D,+HAAA,+BAA+B,OAAA"}
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.1",
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",