@ai-dossier/core 1.10.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.
- package/dist/dry-run.d.ts +99 -0
- package/dist/dry-run.d.ts.map +1 -0
- package/dist/dry-run.js +743 -0
- package/dist/dry-run.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -2
- package/dist/index.js.map +1 -1
- package/dist/run-log-entry.d.ts +10 -0
- package/dist/run-log-entry.d.ts.map +1 -1
- package/dist/run-log-entry.js.map +1 -1
- package/package.json +1 -1
|
@@ -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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"}
|
package/dist/dry-run.js
ADDED
|
@@ -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';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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.
|
|
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":";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;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/run-log-entry.d.ts
CHANGED
|
@@ -92,6 +92,16 @@ export interface RunLogEntry {
|
|
|
92
92
|
* historical dispatch is no longer recorded anywhere.
|
|
93
93
|
*/
|
|
94
94
|
tier?: string | null;
|
|
95
|
+
/**
|
|
96
|
+
* The host agent session this `ai-dossier run` was invoked from (#769),
|
|
97
|
+
* e.g. Claude Code's `CLAUDE_CODE_SESSION_ID` — the join key `ai-dossier
|
|
98
|
+
* usage` uses to attribute dossier runs to the session (and so the
|
|
99
|
+
* model/tokens) that executed them. Null/absent outside an agent host and
|
|
100
|
+
* on sched dispatch entries.
|
|
101
|
+
*/
|
|
102
|
+
session_id?: string | null;
|
|
103
|
+
/** The host agent that invoked this run (#769): `claude-code` | `opencode`; null/absent outside an agent host. */
|
|
104
|
+
agent?: string | null;
|
|
95
105
|
}
|
|
96
106
|
/**
|
|
97
107
|
* `~/.dossier/runs.jsonl` — the single location both writers (`cli`'s
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-log-entry.d.ts","sourceRoot":"","sources":["../src/run-log-entry.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;GAUG;AACH,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,MAAM,CAAC;IACzB,MAAM,EAAE,OAAO,GAAG,UAAU,GAAG,OAAO,GAAG,KAAK,CAAC;IAC/C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;;;;OAQG;IACH,iBAAiB,CAAC,EAAE,QAAQ,GAAG,UAAU,GAAG,OAAO,GAAG,aAAa,CAAC;IACpE,YAAY,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,aAAa,CAAC;IAC9D,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,OAAO,CAAC;IAChB;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;OAIG;IACH,mFAAmF;IACnF,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,kGAAkG;IAClG,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,QAAQ,GAAG,UAAU,GAAG,IAAI,CAAC;IACxC,qIAAqI;IACrI,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,iIAAiI;IACjI,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,qEAAqE;IACrE,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,sEAAsE;IACtE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,mEAAmE;IACnE,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,6CAA6C;IAC7C,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB;;;;;OAKG;IACH,qBAAqB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,0EAA0E;IAC1E,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,8FAA8F;IAC9F,cAAc,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAChC;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB;;;;;;;OAOG;IACH,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"run-log-entry.d.ts","sourceRoot":"","sources":["../src/run-log-entry.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;GAUG;AACH,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,MAAM,CAAC;IACzB,MAAM,EAAE,OAAO,GAAG,UAAU,GAAG,OAAO,GAAG,KAAK,CAAC;IAC/C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;;;;OAQG;IACH,iBAAiB,CAAC,EAAE,QAAQ,GAAG,UAAU,GAAG,OAAO,GAAG,aAAa,CAAC;IACpE,YAAY,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,aAAa,CAAC;IAC9D,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,OAAO,CAAC;IAChB;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;OAIG;IACH,mFAAmF;IACnF,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,kGAAkG;IAClG,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,QAAQ,GAAG,UAAU,GAAG,IAAI,CAAC;IACxC,qIAAqI;IACrI,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,iIAAiI;IACjI,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,qEAAqE;IACrE,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,sEAAsE;IACtE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,mEAAmE;IACnE,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,6CAA6C;IAC7C,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB;;;;;OAKG;IACH,qBAAqB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,0EAA0E;IAC1E,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,8FAA8F;IAC9F,cAAc,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAChC;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB;;;;;;;OAOG;IACH,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,kHAAkH;IAClH,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,IAAI,GAAE,MAAqB,GAAG,MAAM,CAE/D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-log-entry.js","sourceRoot":"","sources":["../src/run-log-entry.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"run-log-entry.js","sourceRoot":"","sources":["../src/run-log-entry.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqHA,kCAEC;AAvHD,4CAA8B;AAC9B,gDAAkC;AA4GlC;;;;;;;GAOG;AACH,SAAgB,WAAW,CAAC,OAAe,EAAE,CAAC,OAAO,EAAE;IACrD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC;AACnD,CAAC"}
|
package/package.json
CHANGED