@securecode-ai/mcp 0.6.1 → 0.9.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.
Files changed (75) hide show
  1. package/README.md +32 -3
  2. package/dist/api/types.d.ts +27 -0
  3. package/dist/approval/policy.js +7 -2
  4. package/dist/approval/policy.js.map +1 -1
  5. package/dist/attack/agentCorroboration.d.ts +14 -0
  6. package/dist/attack/agentCorroboration.js +98 -0
  7. package/dist/attack/agentCorroboration.js.map +1 -0
  8. package/dist/attack/agentLoop.js +9 -6
  9. package/dist/attack/agentLoop.js.map +1 -1
  10. package/dist/attack/agentScanBatchProtocol.d.ts +1 -1
  11. package/dist/attack/agentScanBatchProtocol.js.map +1 -1
  12. package/dist/attack/agentScanExecutor.d.ts +6 -2
  13. package/dist/attack/agentScanExecutor.js +62 -21
  14. package/dist/attack/agentScanExecutor.js.map +1 -1
  15. package/dist/attack/agentScanLoop.js +265 -151
  16. package/dist/attack/agentScanLoop.js.map +1 -1
  17. package/dist/attack/agentScanProtocol.d.ts +14 -5
  18. package/dist/attack/agentScanProtocol.js.map +1 -1
  19. package/dist/attack/architectureScoutLoop.js +1 -1
  20. package/dist/attack/architectureScoutLoop.js.map +1 -1
  21. package/dist/attack/investigationState.d.ts +32 -4
  22. package/dist/attack/investigationState.js +98 -10
  23. package/dist/attack/investigationState.js.map +1 -1
  24. package/dist/attack/llmHealth.d.ts +53 -0
  25. package/dist/attack/llmHealth.js +100 -0
  26. package/dist/attack/llmHealth.js.map +1 -0
  27. package/dist/attack/observationLimits.d.ts +12 -0
  28. package/dist/attack/observationLimits.js +16 -0
  29. package/dist/attack/observationLimits.js.map +1 -0
  30. package/dist/attack/policy.d.ts +1 -0
  31. package/dist/attack/policy.js +1 -0
  32. package/dist/attack/policy.js.map +1 -1
  33. package/dist/attack/probeRules.d.ts +51 -0
  34. package/dist/attack/probeRules.js +291 -0
  35. package/dist/attack/probeRules.js.map +1 -0
  36. package/dist/attack/protocol.d.ts +16 -0
  37. package/dist/attack/qualityMetrics.js +3 -0
  38. package/dist/attack/qualityMetrics.js.map +1 -1
  39. package/dist/attack/report.d.ts +3 -1
  40. package/dist/attack/report.js +4 -2
  41. package/dist/attack/report.js.map +1 -1
  42. package/dist/attack/runtimeProbe.d.ts +71 -0
  43. package/dist/attack/runtimeProbe.js +300 -0
  44. package/dist/attack/runtimeProbe.js.map +1 -0
  45. package/dist/attack/scanScheduler.d.ts +7 -0
  46. package/dist/attack/scanScheduler.js +58 -33
  47. package/dist/attack/scanScheduler.js.map +1 -1
  48. package/dist/attack/scanState.d.ts +1 -1
  49. package/dist/attack/scanState.js.map +1 -1
  50. package/dist/audit/findingReviewQueue.d.ts +1 -1
  51. package/dist/audit/findingReviewQueue.js.map +1 -1
  52. package/dist/auth/credentialStore.js +1 -1
  53. package/dist/auth/credentialStore.js.map +1 -1
  54. package/dist/auth/keychain.js +80 -80
  55. package/dist/auth/keychain.js.map +1 -1
  56. package/dist/mcp/server.js +5 -1
  57. package/dist/mcp/server.js.map +1 -1
  58. package/dist/mcp/tools.js +8 -9
  59. package/dist/mcp/tools.js.map +1 -1
  60. package/dist/project-map/architectureContext.d.ts +1 -1
  61. package/dist/project-map/architectureContext.js +1 -1
  62. package/dist/project-map/scanCache.d.ts +6 -1
  63. package/dist/project-map/scanCache.js +6 -1
  64. package/dist/project-map/scanCache.js.map +1 -1
  65. package/dist/tools/agentScan.d.ts +9 -1
  66. package/dist/tools/agentScan.js +160 -7
  67. package/dist/tools/agentScan.js.map +1 -1
  68. package/dist/tools/agentScanBatch.js +7 -1
  69. package/dist/tools/agentScanBatch.js.map +1 -1
  70. package/dist/tools/attack.js +1 -1
  71. package/dist/tools/attack.js.map +1 -1
  72. package/dist/tools/map.js +1 -1
  73. package/dist/utils/verificationSandbox.js +43 -2
  74. package/dist/utils/verificationSandbox.js.map +1 -1
  75. package/package.json +62 -62
@@ -0,0 +1,300 @@
1
+ "use strict";
2
+ /**
3
+ * Runtime probe engine — executes a small baseline + attack HTTP plan against
4
+ * the user's local dev server (127.0.0.1) and applies deterministic rules for
5
+ * a PROVEN / UNPROVEN / INCONCLUSIVE verdict.
6
+ *
7
+ * Fires when sandbox verification cannot exercise an HTTP-endpoint-shaped
8
+ * finding (e.g. "Effect-TS module requires full runtime", "Test timed out
9
+ * after 12 rounds"): the probe replays the decisive requests against the
10
+ * real listener instead of a sandboxed boot.
11
+ */
12
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ var desc = Object.getOwnPropertyDescriptor(m, k);
15
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
16
+ desc = { enumerable: true, get: function() { return m[k]; } };
17
+ }
18
+ Object.defineProperty(o, k2, desc);
19
+ }) : (function(o, m, k, k2) {
20
+ if (k2 === undefined) k2 = k;
21
+ o[k2] = m[k];
22
+ }));
23
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
24
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
25
+ }) : function(o, v) {
26
+ o["default"] = v;
27
+ });
28
+ var __importStar = (this && this.__importStar) || (function () {
29
+ var ownKeys = function(o) {
30
+ ownKeys = Object.getOwnPropertyNames || function (o) {
31
+ var ar = [];
32
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
33
+ return ar;
34
+ };
35
+ return ownKeys(o);
36
+ };
37
+ return function (mod) {
38
+ if (mod && mod.__esModule) return mod;
39
+ var result = {};
40
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
41
+ __setModuleDefault(result, mod);
42
+ return result;
43
+ };
44
+ })();
45
+ Object.defineProperty(exports, "__esModule", { value: true });
46
+ exports.PROBE_ELIGIBLE_TYPES = void 0;
47
+ exports.encodeProbePath = encodeProbePath;
48
+ exports.detectDevServer = detectDevServer;
49
+ exports.executeProbePlan = executeProbePlan;
50
+ exports.matchEndpointForFinding = matchEndpointForFinding;
51
+ exports.isProbeEligible = isProbeEligible;
52
+ const fs = __importStar(require("fs"));
53
+ const net = __importStar(require("net"));
54
+ const path = __importStar(require("path"));
55
+ const executor_1 = require("./executor");
56
+ const policy_1 = require("./policy");
57
+ const report_1 = require("./report");
58
+ const probeRules_1 = require("./probeRules");
59
+ const AUTODETECT_PORTS = [3000, 5173, 8080, 4000, 8000, 5174, 3001];
60
+ const PROBE_BUDGET = {
61
+ maxSteps: 8,
62
+ maxRequests: 8,
63
+ wallClockMs: 60_000,
64
+ maxResponseBytes: 200_000,
65
+ requestTimeoutMs: 10_000,
66
+ costCapUsd: 0,
67
+ };
68
+ /** Vulnerability types a runtime probe can exercise (pocRouter HTTP list + xss). */
69
+ exports.PROBE_ELIGIBLE_TYPES = new Set([
70
+ 'sql_injection',
71
+ 'nosql_injection',
72
+ 'ssrf',
73
+ 'open_redirect',
74
+ 'broken_access_control',
75
+ 'xss',
76
+ ]);
77
+ const PROBE_VERIFY_REASON_RE = /(timed? ?out|full runtime|cannot test in sandbox|runtime|DOM\/jsdom)/i;
78
+ function redactResponseHeaders(headers) {
79
+ if (!headers)
80
+ return {};
81
+ const out = {};
82
+ for (const [k, v] of Object.entries(headers)) {
83
+ if (/authorization|cookie|x-api-key|api-key/i.test(k)) {
84
+ out[k] = '[REDACTED]';
85
+ }
86
+ else {
87
+ out[k] = v;
88
+ }
89
+ }
90
+ return out;
91
+ }
92
+ /** URL-encode the path so SQLi/XSS payloads with spaces/quotes survive the request. */
93
+ function encodeProbePath(rawPath) {
94
+ try {
95
+ const parsed = new URL(rawPath, 'http://127.0.0.1');
96
+ return parsed.pathname + parsed.search;
97
+ }
98
+ catch {
99
+ const qIdx = rawPath.indexOf('?');
100
+ const pathPart = qIdx >= 0 ? rawPath.slice(0, qIdx) : rawPath;
101
+ const queryPart = qIdx >= 0 ? rawPath.slice(qIdx + 1) : '';
102
+ const encodedPath = pathPart.split('/').map((segment) => encodeURIComponent(segment)).join('/');
103
+ const encodedQuery = queryPart
104
+ .split('&')
105
+ .map((pair) => {
106
+ const eq = pair.indexOf('=');
107
+ return eq >= 0
108
+ ? `${encodeURIComponent(pair.slice(0, eq))}=${encodeURIComponent(pair.slice(eq + 1))}`
109
+ : encodeURIComponent(pair);
110
+ })
111
+ .join('&');
112
+ return qIdx >= 0 ? `${encodedPath}?${encodedQuery}` : encodedPath;
113
+ }
114
+ }
115
+ function isPortOpen(host, port, timeoutMs) {
116
+ return new Promise((resolve) => {
117
+ let settled = false;
118
+ const socket = net.createConnection({ host, port });
119
+ const done = (open) => {
120
+ if (settled)
121
+ return;
122
+ settled = true;
123
+ socket.destroy();
124
+ resolve(open);
125
+ };
126
+ socket.setTimeout(timeoutMs);
127
+ socket.once('connect', () => done(true));
128
+ socket.once('timeout', () => done(false));
129
+ socket.once('error', () => done(false));
130
+ });
131
+ }
132
+ async function detectDevServer(workspaceRoot, opts) {
133
+ const envValue = process.env.SECURECODE_DEV_SERVER_PORT;
134
+ if (envValue) {
135
+ const port = Number.parseInt(envValue.trim(), 10);
136
+ if (Number.isInteger(port) && port >= 1 && port <= 65535) {
137
+ return { host: '127.0.0.1', port, source: 'env' };
138
+ }
139
+ }
140
+ try {
141
+ const cfgPath = path.join(workspaceRoot, '.securecode', 'runtime-probe.json');
142
+ if (fs.existsSync(cfgPath)) {
143
+ const cfg = JSON.parse(fs.readFileSync(cfgPath, 'utf8'));
144
+ const port = typeof cfg.port === 'number' ? cfg.port : Number.parseInt(String(cfg.port ?? ''), 10);
145
+ const host = typeof cfg.host === 'string' && cfg.host.length > 0 ? cfg.host : '127.0.0.1';
146
+ if (Number.isInteger(port) && port >= 1 && port <= 65535 && (0, policy_1.isLocalhostHost)(host)) {
147
+ return { host, port, source: 'config' };
148
+ }
149
+ }
150
+ }
151
+ catch {
152
+ // fall through to autodetect
153
+ }
154
+ const candidates = opts?.candidatePorts ?? AUTODETECT_PORTS;
155
+ for (const port of candidates) {
156
+ if (await isPortOpen('127.0.0.1', port, 400)) {
157
+ return { host: '127.0.0.1', port, source: 'autodetect' };
158
+ }
159
+ }
160
+ return null;
161
+ }
162
+ function snapshotToRuleResponse(snapshot) {
163
+ return {
164
+ statusCode: snapshot.statusCode,
165
+ headers: snapshot.headers,
166
+ body: snapshot.body,
167
+ latencyMs: snapshot.latencyMs,
168
+ };
169
+ }
170
+ function buildEvidence(ruleResult, baseline, attack) {
171
+ const parts = [
172
+ `Rule '${ruleResult.rule}' → ${ruleResult.verdict}: ${ruleResult.reason}`,
173
+ `Decisive statuses: baseline ${baseline ? baseline.statusCode : 'none'} → attack ${attack.statusCode}.`,
174
+ ];
175
+ const snippet = attack.body.slice(0, 300);
176
+ if (snippet.length > 0) {
177
+ parts.push(`Attack body (first ${snippet.length} of ${attack.body.length} chars, redacted): ${snippet}`);
178
+ }
179
+ return (0, report_1.redactText)(parts.join(' ')).slice(0, 2000);
180
+ }
181
+ async function executeProbePlan(plan, opts = {}) {
182
+ const observed = [];
183
+ const inconclusive = (reason) => ({
184
+ verdict: 'INCONCLUSIVE',
185
+ reason,
186
+ evidence: (0, report_1.redactText)(reason).slice(0, 2000),
187
+ requests: observed,
188
+ });
189
+ if (plan.requests.length === 0) {
190
+ return inconclusive('Probe plan contains no requests.');
191
+ }
192
+ if (plan.requests.length > PROBE_BUDGET.maxRequests) {
193
+ return inconclusive(`Probe plan has ${plan.requests.length} requests, exceeding the budget cap of ${PROBE_BUDGET.maxRequests}.`);
194
+ }
195
+ const snapshots = [];
196
+ for (const req of plan.requests) {
197
+ if (opts.signal?.aborted) {
198
+ return inconclusive('cancelled');
199
+ }
200
+ let safePath;
201
+ try {
202
+ (0, policy_1.validateTarget)({ host: plan.host, port: plan.port, path: req.path });
203
+ safePath = encodeProbePath(req.path);
204
+ }
205
+ catch (err) {
206
+ const message = err instanceof policy_1.PolicyError ? err.message : String(err);
207
+ return inconclusive(`Policy validation failed for ${req.role} ${req.method} ${req.path}: ${message}`);
208
+ }
209
+ const resp = await (0, executor_1.executeHttpRequest)({
210
+ method: req.method,
211
+ path: safePath,
212
+ host: plan.host,
213
+ port: plan.port,
214
+ headers: req.headers,
215
+ body: req.body,
216
+ }, PROBE_BUDGET, opts.signal);
217
+ observed.push({
218
+ role: req.role,
219
+ method: req.method,
220
+ path: req.path,
221
+ statusCode: resp.statusCode,
222
+ latencyMs: resp.latencyMs,
223
+ });
224
+ snapshots.push({
225
+ role: req.role,
226
+ statusCode: resp.statusCode,
227
+ headers: redactResponseHeaders(resp.headers),
228
+ body: (0, report_1.redactText)(resp.body),
229
+ latencyMs: resp.latencyMs,
230
+ error: resp.error,
231
+ });
232
+ }
233
+ if (opts.signal?.aborted) {
234
+ return inconclusive('cancelled');
235
+ }
236
+ let baseline = null;
237
+ let attack = null;
238
+ let attackRequest = null;
239
+ for (let i = 0; i < plan.requests.length; i++) {
240
+ if (plan.requests[i].role === 'baseline') {
241
+ baseline = snapshots[i];
242
+ }
243
+ else {
244
+ attack = snapshots[i];
245
+ attackRequest = plan.requests[i];
246
+ }
247
+ }
248
+ if (!attackRequest || !attack) {
249
+ return inconclusive('Probe plan contains no attack request.');
250
+ }
251
+ const ruleResult = (0, probeRules_1.applyProbeRules)({
252
+ method: attackRequest.method,
253
+ path: attackRequest.path,
254
+ headers: attackRequest.headers,
255
+ body: attackRequest.body,
256
+ ...(attackRequest.expect ?? {}),
257
+ }, attack.statusCode === 0 ? null : snapshotToRuleResponse(attack), null, baseline && baseline.statusCode !== 0 ? snapshotToRuleResponse(baseline) : null);
258
+ const verdict = ruleResult.verdict === 'confirmed-bypass'
259
+ ? 'PROVEN'
260
+ : ruleResult.verdict === 'refuted'
261
+ ? 'UNPROVEN'
262
+ : 'INCONCLUSIVE';
263
+ return {
264
+ verdict,
265
+ rule: ruleResult.rule,
266
+ reason: (0, report_1.redactText)(ruleResult.reason),
267
+ baselineStatus: baseline ? baseline.statusCode : undefined,
268
+ attackStatus: attack.statusCode,
269
+ evidence: buildEvidence(ruleResult, baseline, attack),
270
+ requests: observed,
271
+ };
272
+ }
273
+ function matchEndpointForFinding(finding, endpointContext) {
274
+ if (!Array.isArray(endpointContext))
275
+ return null;
276
+ for (const entry of endpointContext) {
277
+ if (!entry || typeof entry !== 'object')
278
+ continue;
279
+ const candidate = entry;
280
+ if (typeof candidate.method !== 'string' || candidate.method.length === 0)
281
+ continue;
282
+ if (typeof candidate.path !== 'string' || candidate.path.length === 0)
283
+ continue;
284
+ if (typeof candidate.line !== 'number')
285
+ continue;
286
+ const nearLine = Math.abs(candidate.line - finding.line) <= 25;
287
+ const coversLine = candidate.line <= finding.line && finding.line <= candidate.line + 200;
288
+ if (nearLine || coversLine)
289
+ return candidate;
290
+ }
291
+ return null;
292
+ }
293
+ function isProbeEligible(finding, verifyReason, endpointContext) {
294
+ if (!exports.PROBE_ELIGIBLE_TYPES.has(finding.type))
295
+ return false;
296
+ if (!PROBE_VERIFY_REASON_RE.test(verifyReason ?? ''))
297
+ return false;
298
+ return matchEndpointForFinding(finding, endpointContext) !== null;
299
+ }
300
+ //# sourceMappingURL=runtimeProbe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtimeProbe.js","sourceRoot":"","sources":["../../src/attack/runtimeProbe.ts"],"names":[],"mappings":"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"}
@@ -53,5 +53,12 @@ export declare function buildRecoveryConstraint(state: ScanRunState, investigati
53
53
  /**
54
54
  * Compute a deterministic fingerprint for an action, used to detect
55
55
  * repeated recovery attempts on the same action.
56
+ *
57
+ * Requirement-derived scheduler actions carry a `requirementId` scope so
58
+ * two DIFFERENT requirements that map to the same tool call (e.g. several
59
+ * read_config requirements all producing `read_config:all`) don't collide
60
+ * on one burned fingerprint — the second requirement's recovery would
61
+ * otherwise be rejected as a duplicate of the first. read_file fingerprints
62
+ * stay range-based: ranged reads are already distinct per range.
56
63
  */
57
64
  export declare function actionFingerprint(action: AgentScanAction): string;
@@ -34,7 +34,7 @@ function schedule(input) {
34
34
  const activeCandidates = candidates.getActive();
35
35
  for (const candidate of activeCandidates) {
36
36
  if (candidate.severity === 'critical' || candidate.severity === 'high') {
37
- const action = actionForCandidateEvidence(candidate, target);
37
+ const action = actionForCandidateEvidence(candidate, target, investigation);
38
38
  if (action) {
39
39
  return {
40
40
  kind: 'deterministic-action',
@@ -52,7 +52,7 @@ function schedule(input) {
52
52
  const topWorkItem = workItems.highestPriority();
53
53
  if (topWorkItem && (topWorkItem.priority === 'critical' || topWorkItem.priority === 'high')) {
54
54
  if (topWorkItem.status === 'pending' || topWorkItem.status === 'active') {
55
- const action = actionForWorkItem(topWorkItem, target, workItems);
55
+ const action = actionForWorkItem(topWorkItem, target, workItems, investigation);
56
56
  if (action) {
57
57
  return {
58
58
  kind: 'deterministic-action',
@@ -124,7 +124,7 @@ function schedule(input) {
124
124
  // 6-8. Missing evidence from unsatisfied requirements
125
125
  const unsatisfied = evidence.getUnsatisfiedRequirements();
126
126
  if (unsatisfied.length > 0) {
127
- const action = actionForRequirement(unsatisfied[0], target);
127
+ const action = actionForRequirement(unsatisfied[0], target, undefined, investigation);
128
128
  if (action) {
129
129
  return {
130
130
  kind: 'deterministic-action',
@@ -136,7 +136,7 @@ function schedule(input) {
136
136
  // 9. Lower-priority pending work items
137
137
  const pending = workItems.getPending();
138
138
  if (pending.length > 0) {
139
- const action = actionForWorkItem(pending[0], target, workItems);
139
+ const action = actionForWorkItem(pending[0], target, workItems, investigation);
140
140
  if (action) {
141
141
  return {
142
142
  kind: 'deterministic-action',
@@ -168,27 +168,35 @@ function buildRecoveryConstraint(state, investigation) {
168
168
  /**
169
169
  * Compute a deterministic fingerprint for an action, used to detect
170
170
  * repeated recovery attempts on the same action.
171
+ *
172
+ * Requirement-derived scheduler actions carry a `requirementId` scope so
173
+ * two DIFFERENT requirements that map to the same tool call (e.g. several
174
+ * read_config requirements all producing `read_config:all`) don't collide
175
+ * on one burned fingerprint — the second requirement's recovery would
176
+ * otherwise be rejected as a duplicate of the first. read_file fingerprints
177
+ * stay range-based: ranged reads are already distinct per range.
171
178
  */
172
179
  function actionFingerprint(action) {
173
180
  const a = action;
181
+ const reqScope = a.requirementId ? `@${a.requirementId}` : '';
174
182
  switch (a.type) {
175
183
  case 'read_file':
176
184
  return `read_file:${a.path || ''}:${a.startLine || 0}:${a.endLine || 0}`;
177
185
  case 'search_code':
178
- return `search_code:${a.pattern || ''}:${a.glob || ''}`;
186
+ return `search_code:${a.pattern || ''}:${a.glob || ''}${reqScope}`;
179
187
  case 'trace_flow':
180
188
  case 'trace_flow_cross_file':
181
- return `${a.type}:${a.filePath || ''}`;
189
+ return `${a.type}:${a.filePath || ''}${reqScope}`;
182
190
  case 'check_guard':
183
- return `check_guard:${a.guardName || ''}:${a.attackType || ''}:${a.filePath || ''}`;
191
+ return `check_guard:${a.guardName || ''}:${a.attackType || ''}:${a.filePath || ''}${reqScope}`;
184
192
  case 'check_policy':
185
- return `check_policy:${a.filePath || ''}`;
193
+ return `check_policy:${a.filePath || ''}${reqScope}`;
186
194
  case 'read_config':
187
- return `read_config:${a.configKind || 'all'}`;
195
+ return `read_config:${a.configKind || 'all'}${reqScope}`;
188
196
  case 'get_endpoints':
189
- return `get_endpoints:${a.glob || ''}`;
197
+ return `get_endpoints:${a.glob || ''}${reqScope}`;
190
198
  case 'find_tests':
191
- return `find_tests:${a.filePath || ''}:${a.symbol || ''}`;
199
+ return `find_tests:${a.filePath || ''}:${a.symbol || ''}${reqScope}`;
192
200
  case 'find_definition':
193
201
  return `find_definition:${a.filePath || ''}:${a.symbol || ''}`;
194
202
  case 'find_references':
@@ -203,10 +211,10 @@ function canExecute(input) {
203
211
  return input.state.budget.stepsRemaining > 0 &&
204
212
  input.state.budget.costSpentUsd < input.state.budget.costCapUsd;
205
213
  }
206
- function actionForCandidateEvidence(candidate, target) {
214
+ function actionForCandidateEvidence(candidate, target, investigation) {
207
215
  if (candidate.requiredEvidence && candidate.requiredEvidence.length > 0) {
208
216
  const req = candidate.requiredEvidence[0];
209
- return actionForRequirement(req, target);
217
+ return actionForRequirement(req, target, undefined, investigation);
210
218
  }
211
219
  // Default: trace flow to gather more evidence
212
220
  return {
@@ -215,7 +223,7 @@ function actionForCandidateEvidence(candidate, target) {
215
223
  rationale: `Gather evidence for candidate: ${candidate.claim}`,
216
224
  };
217
225
  }
218
- function actionForWorkItem(item, target, queue) {
226
+ function actionForWorkItem(item, target, queue, investigation) {
219
227
  if (item.kind === 'implementation-review') {
220
228
  const symbol = item.title.replace('Resolve implementation for: ', '');
221
229
  return {
@@ -231,64 +239,81 @@ function actionForWorkItem(item, target, queue) {
231
239
  return null;
232
240
  const req = unsatisfied[0];
233
241
  const targetFile = req.targetFiles?.[0] || item.targetFiles[0] || target.filePath;
234
- return actionForRequirement(req, target, targetFile);
242
+ return actionForRequirement(req, target, targetFile, investigation);
235
243
  }
236
- function actionForRequirement(req, target, explicitTargetFile) {
244
+ function actionForRequirement(req, target, explicitTargetFile, investigation) {
237
245
  const tool = req.requiredTools?.[0];
238
246
  if (!tool)
239
247
  return null;
240
248
  const targetFile = explicitTargetFile || req.targetFiles?.[0] || target.filePath;
249
+ // Stamp the requirement id so actionFingerprint scopes requirement-derived
250
+ // actions per-requirement — see actionFingerprint for why.
251
+ const stamp = (action) => Object.assign({}, action, { requirementId: req.id });
241
252
  switch (tool) {
242
- case 'read_file':
243
- return {
253
+ case 'read_file': {
254
+ // Ranged read: a rangeless read on a large file returns a
255
+ // function map (no content, no progress), so derive the next
256
+ // unread range from tracked coverage when one exists.
257
+ const nextRange = investigation?.getNextUnreadRange(targetFile) ?? null;
258
+ if (nextRange) {
259
+ return stamp({
260
+ type: 'read_file',
261
+ path: targetFile,
262
+ startLine: nextRange.start,
263
+ endLine: nextRange.end,
264
+ rationale: req.description,
265
+ });
266
+ }
267
+ return stamp({
244
268
  type: 'read_file',
245
269
  path: targetFile,
246
270
  rationale: req.description,
247
- };
271
+ });
272
+ }
248
273
  case 'search_code':
249
- return {
274
+ return stamp({
250
275
  type: 'search_code',
251
276
  pattern: 'auth|require|guard|permission|owner',
252
277
  rationale: req.description,
253
- };
278
+ });
254
279
  case 'check_policy':
255
- return {
280
+ return stamp({
256
281
  type: 'check_policy',
257
282
  filePath: targetFile,
258
283
  rationale: req.description,
259
- };
284
+ });
260
285
  case 'check_guard':
261
- return {
286
+ return stamp({
262
287
  type: 'check_guard',
263
288
  filePath: targetFile,
264
289
  guardName: 'auth',
265
290
  attackType: 'broken_access_control',
266
291
  rationale: req.description,
267
- };
292
+ });
268
293
  case 'get_endpoints':
269
- return {
294
+ return stamp({
270
295
  type: 'get_endpoints',
271
296
  rationale: req.description,
272
- };
297
+ });
273
298
  case 'trace_flow':
274
299
  case 'trace_flow_cross_file':
275
- return {
300
+ return stamp({
276
301
  type: 'trace_flow_cross_file',
277
302
  filePath: targetFile,
278
303
  rationale: req.description,
279
- };
304
+ });
280
305
  case 'read_config':
281
- return {
306
+ return stamp({
282
307
  type: 'read_config',
283
308
  configKind: 'all',
284
309
  rationale: req.description,
285
- };
310
+ });
286
311
  case 'find_tests':
287
- return {
312
+ return stamp({
288
313
  type: 'find_tests',
289
314
  filePath: targetFile,
290
315
  rationale: req.description,
291
- };
316
+ });
292
317
  case 'find_definition':
293
318
  return null;
294
319
  case 'find_references':
@@ -1 +1 @@
1
- {"version":3,"file":"scanScheduler.js","sourceRoot":"","sources":["../../src/attack/scanScheduler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scanScheduler.js","sourceRoot":"","sources":["../../src/attack/scanScheduler.ts"],"names":[],"mappings":"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"}
@@ -10,7 +10,7 @@
10
10
  */
11
11
  import type { AgentScanTarget, AgentScanTranscriptStep, AgentScanBudget } from './agentScanProtocol';
12
12
  export type ScanPhase = 'planning' | 'surveying' | 'tracing' | 'candidate_investigation' | 'finish_review' | 'verifying' | 'evidence_recovery' | 'finalizing' | 'completed' | 'terminated';
13
- export type ScanTerminationReason = 'agent_finish' | 'forced_incomplete' | 'cost_cap' | 'budget_exhausted' | 'wall_clock' | 'cancelled' | 'api_error' | 'blocked_read_recovery';
13
+ export type ScanTerminationReason = 'agent_finish' | 'forced_incomplete' | 'cost_cap' | 'budget_exhausted' | 'wall_clock' | 'cancelled' | 'api_error' | 'blocked_read_recovery' | 'llm_degraded';
14
14
  export interface ScanTermination {
15
15
  reason: ScanTerminationReason;
16
16
  phase: ScanPhase;
@@ -1 +1 @@
1
- {"version":3,"file":"scanState.js","sourceRoot":"","sources":["../../src/attack/scanState.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scanState.js","sourceRoot":"","sources":["../../src/attack/scanState.ts"],"names":[],"mappings":"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"}
@@ -23,7 +23,7 @@
23
23
  * evidenceHash) are not re-enqueued — the existing item is returned.
24
24
  */
25
25
  export type ReviewDecision = 'confirmed' | 'rejected' | 'deferred';
26
- export type ReviewReason = 'inconclusive-verification' | 'sandbox-unavailable' | 'verification-budget-exhausted' | 'runtime-blocked' | 'test-generation-failed' | 'manual-request';
26
+ export type ReviewReason = 'inconclusive-verification' | 'sandbox-unavailable' | 'verification-budget-exhausted' | 'runtime-blocked' | 'test-generation-failed' | 'runtime-probe-pending' | 'manual-request';
27
27
  export interface FindingReviewItem {
28
28
  id: string;
29
29
  createdAt: string;