@securecode-ai/mcp 0.5.5 → 0.5.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +52 -12
- package/dist/api/types.d.ts +7 -0
- package/dist/approval/auditLog.d.ts +1 -1
- package/dist/approval/auditLog.js +11 -3
- package/dist/approval/auditLog.js.map +1 -1
- package/dist/approval/broker.d.ts +7 -2
- package/dist/approval/broker.js +239 -110
- package/dist/approval/broker.js.map +1 -1
- package/dist/approval/policy.d.ts +10 -0
- package/dist/approval/policy.js +104 -0
- package/dist/approval/policy.js.map +1 -0
- package/dist/approval/types.d.ts +11 -2
- package/dist/approval/types.js +10 -1
- package/dist/approval/types.js.map +1 -1
- package/dist/attack/agentScanExecutor.d.ts +35 -1
- package/dist/attack/agentScanExecutor.js +405 -76
- package/dist/attack/agentScanExecutor.js.map +1 -1
- package/dist/attack/agentScanLoop.d.ts +20 -0
- package/dist/attack/agentScanLoop.js +1264 -60
- package/dist/attack/agentScanLoop.js.map +1 -1
- package/dist/attack/agentScanProtocol.d.ts +382 -6
- package/dist/attack/agentScanProtocol.js +110 -4
- package/dist/attack/agentScanProtocol.js.map +1 -1
- package/dist/attack/agentTrace.d.ts +73 -0
- package/dist/attack/agentTrace.js +228 -0
- package/dist/attack/agentTrace.js.map +1 -0
- package/dist/attack/architectureScoutExecutor.d.ts +18 -0
- package/dist/attack/architectureScoutExecutor.js +211 -0
- package/dist/attack/architectureScoutExecutor.js.map +1 -0
- package/dist/attack/architectureScoutLoop.d.ts +36 -0
- package/dist/attack/architectureScoutLoop.js +403 -0
- package/dist/attack/architectureScoutLoop.js.map +1 -0
- package/dist/attack/architectureScoutProtocol.d.ts +209 -0
- package/dist/attack/architectureScoutProtocol.js +47 -0
- package/dist/attack/architectureScoutProtocol.js.map +1 -0
- package/dist/attack/candidateStore.d.ts +95 -0
- package/dist/attack/candidateStore.js +231 -0
- package/dist/attack/candidateStore.js.map +1 -0
- package/dist/attack/evidenceLedger.d.ts +67 -0
- package/dist/attack/evidenceLedger.js +192 -0
- package/dist/attack/evidenceLedger.js.map +1 -0
- package/dist/attack/finishGate.d.ts +62 -0
- package/dist/attack/finishGate.js +209 -0
- package/dist/attack/finishGate.js.map +1 -0
- package/dist/attack/fixCodeMerge.d.ts +27 -0
- package/dist/attack/fixCodeMerge.js +42 -0
- package/dist/attack/fixCodeMerge.js.map +1 -0
- package/dist/attack/fixVerifyLoop.d.ts +55 -0
- package/dist/attack/fixVerifyLoop.js +187 -0
- package/dist/attack/fixVerifyLoop.js.map +1 -0
- package/dist/attack/investigationProfiles.d.ts +36 -0
- package/dist/attack/investigationProfiles.js +144 -0
- package/dist/attack/investigationProfiles.js.map +1 -0
- package/dist/attack/investigationState.d.ts +227 -0
- package/dist/attack/investigationState.js +666 -0
- package/dist/attack/investigationState.js.map +1 -0
- package/dist/attack/mutationOperators.d.ts +22 -0
- package/dist/attack/mutationOperators.js +170 -0
- package/dist/attack/mutationOperators.js.map +1 -0
- package/dist/attack/mutationTest.d.ts +33 -0
- package/dist/attack/mutationTest.js +110 -0
- package/dist/attack/mutationTest.js.map +1 -0
- package/dist/attack/proofGate.d.ts +20 -0
- package/dist/attack/proofGate.js +104 -0
- package/dist/attack/proofGate.js.map +1 -0
- package/dist/attack/proofTypes.d.ts +57 -0
- package/dist/attack/proofTypes.js +32 -0
- package/dist/attack/proofTypes.js.map +1 -0
- package/dist/attack/protocolValidator.d.ts +50 -0
- package/dist/attack/protocolValidator.js +427 -0
- package/dist/attack/protocolValidator.js.map +1 -0
- package/dist/attack/qualityMetrics.d.ts +133 -0
- package/dist/attack/qualityMetrics.js +226 -0
- package/dist/attack/qualityMetrics.js.map +1 -0
- package/dist/attack/scanScheduler.d.ts +52 -0
- package/dist/attack/scanScheduler.js +265 -0
- package/dist/attack/scanScheduler.js.map +1 -0
- package/dist/attack/scanState.d.ts +58 -0
- package/dist/attack/scanState.js +102 -0
- package/dist/attack/scanState.js.map +1 -0
- package/dist/attack/searchIntent.d.ts +16 -0
- package/dist/attack/searchIntent.js +57 -0
- package/dist/attack/searchIntent.js.map +1 -0
- package/dist/attack/verifyLoop.d.ts +43 -0
- package/dist/attack/verifyLoop.js +314 -14
- package/dist/attack/verifyLoop.js.map +1 -1
- package/dist/attack/workItem.d.ts +57 -0
- package/dist/attack/workItem.js +225 -0
- package/dist/attack/workItem.js.map +1 -0
- package/dist/audit/findingReviewQueue.d.ts +109 -0
- package/dist/audit/findingReviewQueue.js +335 -0
- package/dist/audit/findingReviewQueue.js.map +1 -0
- package/dist/audit/scanAuditLog.d.ts +160 -0
- package/dist/audit/scanAuditLog.js +404 -0
- package/dist/audit/scanAuditLog.js.map +1 -0
- package/dist/dependency/dependencyChecker.js +35 -9
- package/dist/dependency/dependencyChecker.js.map +1 -1
- package/dist/dependency/exploitPriority.d.ts +33 -0
- package/dist/dependency/exploitPriority.js +78 -0
- package/dist/dependency/exploitPriority.js.map +1 -0
- package/dist/dependency/finding.d.ts +16 -0
- package/dist/dependency/osvClient.js +2 -0
- package/dist/dependency/osvClient.js.map +1 -1
- package/dist/dependency/types.d.ts +12 -1
- package/dist/mcp/server.js +13 -2
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/tools.d.ts +1 -0
- package/dist/mcp/tools.js +127 -6
- package/dist/mcp/tools.js.map +1 -1
- package/dist/project-map/agentMemory.d.ts +83 -1
- package/dist/project-map/agentMemory.js +197 -7
- package/dist/project-map/agentMemory.js.map +1 -1
- package/dist/project-map/architectureContext.d.ts +202 -0
- package/dist/project-map/architectureContext.js +421 -0
- package/dist/project-map/architectureContext.js.map +1 -0
- package/dist/project-map/blastRadius.d.ts +54 -0
- package/dist/project-map/blastRadius.js +196 -0
- package/dist/project-map/blastRadius.js.map +1 -0
- package/dist/project-map/callGraphExtractor.d.ts +13 -0
- package/dist/project-map/callGraphExtractor.js +222 -0
- package/dist/project-map/callGraphExtractor.js.map +1 -0
- package/dist/project-map/capabilityRegistry.d.ts +46 -0
- package/dist/project-map/capabilityRegistry.js +91 -0
- package/dist/project-map/capabilityRegistry.js.map +1 -0
- package/dist/project-map/findTests.d.ts +29 -0
- package/dist/project-map/findTests.js +236 -0
- package/dist/project-map/findTests.js.map +1 -0
- package/dist/project-map/handlerInventory.d.ts +112 -0
- package/dist/project-map/handlerInventory.js +184 -0
- package/dist/project-map/handlerInventory.js.map +1 -0
- package/dist/project-map/implementationResolver.d.ts +43 -0
- package/dist/project-map/implementationResolver.js +217 -0
- package/dist/project-map/implementationResolver.js.map +1 -0
- package/dist/project-map/mapContext.d.ts +6 -1
- package/dist/project-map/mapContext.js +1 -0
- package/dist/project-map/mapContext.js.map +1 -1
- package/dist/project-map/scanCache.d.ts +57 -3
- package/dist/project-map/scanCache.js +61 -2
- package/dist/project-map/scanCache.js.map +1 -1
- package/dist/project-map/symbolIndex.d.ts +39 -0
- package/dist/project-map/symbolIndex.js +385 -0
- package/dist/project-map/symbolIndex.js.map +1 -0
- package/dist/tooling/agentEvalScoring.d.ts +77 -0
- package/dist/tooling/agentEvalScoring.js +140 -0
- package/dist/tooling/agentEvalScoring.js.map +1 -0
- package/dist/tooling/agentRegression.d.ts +53 -0
- package/dist/tooling/agentRegression.js +99 -0
- package/dist/tooling/agentRegression.js.map +1 -0
- package/dist/tools/agentScan.d.ts +69 -0
- package/dist/tools/agentScan.js +702 -43
- package/dist/tools/agentScan.js.map +1 -1
- package/dist/tools/findingReviewTools.d.ts +22 -0
- package/dist/tools/findingReviewTools.js +121 -0
- package/dist/tools/findingReviewTools.js.map +1 -0
- package/dist/tools/fix.js +1 -1
- package/dist/tools/fix.js.map +1 -1
- package/dist/tools/map.js +191 -1
- package/dist/tools/map.js.map +1 -1
- package/dist/tools/runTests.d.ts +2 -0
- package/dist/tools/runTests.js +29 -0
- package/dist/tools/runTests.js.map +1 -0
- package/dist/utils/effectMock.d.ts +1 -0
- package/dist/utils/effectMock.js +162 -0
- package/dist/utils/effectMock.js.map +1 -0
- package/dist/utils/gitContext.d.ts +26 -0
- package/dist/utils/gitContext.js +317 -0
- package/dist/utils/gitContext.js.map +1 -0
- package/dist/utils/localTestRunner.d.ts +57 -2
- package/dist/utils/localTestRunner.js +122 -115
- package/dist/utils/localTestRunner.js.map +1 -1
- package/dist/utils/securityConfig.d.ts +17 -0
- package/dist/utils/securityConfig.js +192 -0
- package/dist/utils/securityConfig.js.map +1 -0
- package/dist/utils/testCommandPolicy.d.ts +36 -0
- package/dist/utils/testCommandPolicy.js +252 -0
- package/dist/utils/testCommandPolicy.js.map +1 -0
- package/dist/utils/testRunner.d.ts +56 -0
- package/dist/utils/testRunner.js +246 -0
- package/dist/utils/testRunner.js.map +1 -0
- package/dist/utils/testSafety.d.ts +40 -2
- package/dist/utils/testSafety.js +205 -26
- package/dist/utils/testSafety.js.map +1 -1
- package/dist/utils/verificationSandbox.d.ts +113 -0
- package/dist/utils/verificationSandbox.js +656 -0
- package/dist/utils/verificationSandbox.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"architectureScoutLoop.js","sourceRoot":"","sources":["../../src/attack/architectureScoutLoop.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Architecture scout protocol — wire contract between the MCP loop and the
|
|
3
|
+
* API brain for the architecture-scout subagent.
|
|
4
|
+
*
|
|
5
|
+
* Mirror: api/src/attacker/architectureScoutProtocol.ts — keep string values
|
|
6
|
+
* in step. Types are duplicated (not shared) between the API and MCP repos,
|
|
7
|
+
* same pattern as agentScanProtocol.
|
|
8
|
+
*/
|
|
9
|
+
import type { ArchitectureContext, ArchitectureDepth } from '../project-map/architectureContext';
|
|
10
|
+
export type { ArchitectureDepth };
|
|
11
|
+
/** Default budgets for one architecture scout run, by depth. */
|
|
12
|
+
export declare const ARCHITECTURE_SCOUT_DEFAULTS: {
|
|
13
|
+
readonly quick: {
|
|
14
|
+
readonly maxSteps: 12;
|
|
15
|
+
readonly costCapUsd: 0.5;
|
|
16
|
+
readonly wallClockMs: 120000;
|
|
17
|
+
readonly perStepEstimateUsd: 0.08;
|
|
18
|
+
readonly creditsPerRun: 5;
|
|
19
|
+
readonly maxImportantFiles: 20;
|
|
20
|
+
};
|
|
21
|
+
readonly standard: {
|
|
22
|
+
readonly maxSteps: 25;
|
|
23
|
+
readonly costCapUsd: 1.5;
|
|
24
|
+
readonly wallClockMs: 240000;
|
|
25
|
+
readonly perStepEstimateUsd: 0.08;
|
|
26
|
+
readonly creditsPerRun: 10;
|
|
27
|
+
readonly maxImportantFiles: 50;
|
|
28
|
+
};
|
|
29
|
+
readonly deep: {
|
|
30
|
+
readonly maxSteps: 50;
|
|
31
|
+
readonly costCapUsd: 3;
|
|
32
|
+
readonly wallClockMs: 480000;
|
|
33
|
+
readonly perStepEstimateUsd: 0.08;
|
|
34
|
+
readonly creditsPerRun: 20;
|
|
35
|
+
readonly maxImportantFiles: 100;
|
|
36
|
+
};
|
|
37
|
+
};
|
|
38
|
+
export interface ArchitectureScoutBudget {
|
|
39
|
+
stepsRemaining: number;
|
|
40
|
+
costSpentUsd: number;
|
|
41
|
+
costCapUsd: number;
|
|
42
|
+
}
|
|
43
|
+
export interface ArchitectureScoutReadFileAction {
|
|
44
|
+
type: 'read_file';
|
|
45
|
+
path: string;
|
|
46
|
+
startLine?: number;
|
|
47
|
+
endLine?: number;
|
|
48
|
+
rationale: string;
|
|
49
|
+
}
|
|
50
|
+
export interface ArchitectureScoutSearchCodeAction {
|
|
51
|
+
type: 'search_code';
|
|
52
|
+
pattern: string;
|
|
53
|
+
glob?: string;
|
|
54
|
+
rationale: string;
|
|
55
|
+
}
|
|
56
|
+
export interface ArchitectureScoutListFilesAction {
|
|
57
|
+
type: 'list_files';
|
|
58
|
+
path?: string;
|
|
59
|
+
glob?: string;
|
|
60
|
+
rationale: string;
|
|
61
|
+
}
|
|
62
|
+
export interface ArchitectureScoutListImportsAction {
|
|
63
|
+
type: 'list_imports';
|
|
64
|
+
filePath: string;
|
|
65
|
+
rationale: string;
|
|
66
|
+
}
|
|
67
|
+
export interface ArchitectureScoutGetEndpointsAction {
|
|
68
|
+
type: 'get_endpoints';
|
|
69
|
+
glob?: string;
|
|
70
|
+
rationale: string;
|
|
71
|
+
}
|
|
72
|
+
export interface ArchitectureScoutCallGraphAction {
|
|
73
|
+
type: 'call_graph';
|
|
74
|
+
filePath: string;
|
|
75
|
+
functionName?: string;
|
|
76
|
+
rationale: string;
|
|
77
|
+
}
|
|
78
|
+
export interface ArchitectureScoutReadConfigAction {
|
|
79
|
+
type: 'read_config';
|
|
80
|
+
configKind: 'auth' | 'cors' | 'rate_limit' | 'headers' | 'env' | 'all';
|
|
81
|
+
rationale: string;
|
|
82
|
+
}
|
|
83
|
+
export interface ArchitectureScoutCheckDependenciesAction {
|
|
84
|
+
type: 'check_dependencies';
|
|
85
|
+
rationale: string;
|
|
86
|
+
}
|
|
87
|
+
export interface ArchitectureScoutFindDefinitionAction {
|
|
88
|
+
type: 'find_definition';
|
|
89
|
+
filePath: string;
|
|
90
|
+
symbol: string;
|
|
91
|
+
line?: number;
|
|
92
|
+
rationale: string;
|
|
93
|
+
}
|
|
94
|
+
export interface ArchitectureScoutFindReferencesAction {
|
|
95
|
+
type: 'find_references';
|
|
96
|
+
filePath: string;
|
|
97
|
+
symbol: string;
|
|
98
|
+
line?: number;
|
|
99
|
+
rationale: string;
|
|
100
|
+
}
|
|
101
|
+
export interface ArchitectureScoutFinishAction {
|
|
102
|
+
type: 'finish';
|
|
103
|
+
architecture: ArchitectureContext;
|
|
104
|
+
summary: string;
|
|
105
|
+
selfCritique: string;
|
|
106
|
+
}
|
|
107
|
+
export type ArchitectureScoutAction = ArchitectureScoutReadFileAction | ArchitectureScoutSearchCodeAction | ArchitectureScoutListFilesAction | ArchitectureScoutListImportsAction | ArchitectureScoutGetEndpointsAction | ArchitectureScoutCallGraphAction | ArchitectureScoutReadConfigAction | ArchitectureScoutCheckDependenciesAction | ArchitectureScoutFindDefinitionAction | ArchitectureScoutFindReferencesAction | ArchitectureScoutFinishAction;
|
|
108
|
+
export type ArchitectureScoutActionType = 'read_file' | 'search_code' | 'list_files' | 'list_imports' | 'get_endpoints' | 'call_graph' | 'read_config' | 'check_dependencies' | 'find_definition' | 'find_references' | 'finish';
|
|
109
|
+
export interface ArchitectureScoutTranscriptStep {
|
|
110
|
+
action: ArchitectureScoutAction;
|
|
111
|
+
observation: string;
|
|
112
|
+
}
|
|
113
|
+
export interface ArchitectureInventory {
|
|
114
|
+
files: Array<{
|
|
115
|
+
file: string;
|
|
116
|
+
language: string;
|
|
117
|
+
lines: number;
|
|
118
|
+
endpointCount: number;
|
|
119
|
+
importCount: number;
|
|
120
|
+
}>;
|
|
121
|
+
endpoints: Array<{
|
|
122
|
+
method: string;
|
|
123
|
+
path: string;
|
|
124
|
+
handler: string;
|
|
125
|
+
sourceFile: string;
|
|
126
|
+
line: number;
|
|
127
|
+
authScheme: string;
|
|
128
|
+
dataLayer: string;
|
|
129
|
+
}>;
|
|
130
|
+
runtimes: string[];
|
|
131
|
+
packageManager: string | null;
|
|
132
|
+
languages: string[];
|
|
133
|
+
dependencyFindings?: Array<{
|
|
134
|
+
name: string;
|
|
135
|
+
installedVersion: string;
|
|
136
|
+
fixedVersion: string | null;
|
|
137
|
+
severity: string;
|
|
138
|
+
}>;
|
|
139
|
+
configSummary?: {
|
|
140
|
+
auth?: string | null;
|
|
141
|
+
cors?: string | null;
|
|
142
|
+
rateLimit?: string | null;
|
|
143
|
+
headers?: string | null;
|
|
144
|
+
envKeys?: string[];
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
export interface ArchitectureScoutTarget {
|
|
148
|
+
depth: ArchitectureDepth;
|
|
149
|
+
inventory: ArchitectureInventory;
|
|
150
|
+
maxImportantFiles: number;
|
|
151
|
+
}
|
|
152
|
+
export interface ArchitectureScoutStartResponse {
|
|
153
|
+
runId: string;
|
|
154
|
+
budget: ArchitectureScoutBudget;
|
|
155
|
+
scanCredits: number;
|
|
156
|
+
refundId: string;
|
|
157
|
+
}
|
|
158
|
+
export interface ArchitectureScoutStepRequest {
|
|
159
|
+
runId: string;
|
|
160
|
+
target: ArchitectureScoutTarget;
|
|
161
|
+
transcript: ArchitectureScoutTranscriptStep[];
|
|
162
|
+
budget: ArchitectureScoutBudget;
|
|
163
|
+
}
|
|
164
|
+
export interface ArchitectureScoutStepResponse {
|
|
165
|
+
next: ArchitectureScoutAction | null;
|
|
166
|
+
costUsd: number;
|
|
167
|
+
tokens: number;
|
|
168
|
+
degraded: boolean;
|
|
169
|
+
costCapped: boolean;
|
|
170
|
+
stepsRemaining: number;
|
|
171
|
+
callBreakdown?: {
|
|
172
|
+
decision: number;
|
|
173
|
+
retry: number;
|
|
174
|
+
critique: number;
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
export type ArchitectureScoutRunStatus = 'completed' | 'capped' | 'degraded' | 'spawn_failed' | 'cancelled';
|
|
178
|
+
export interface ArchitectureScoutResult {
|
|
179
|
+
status: ArchitectureScoutRunStatus;
|
|
180
|
+
architecture: ArchitectureContext | null;
|
|
181
|
+
summary?: string;
|
|
182
|
+
transcript: ArchitectureScoutTranscriptStep[];
|
|
183
|
+
stepsUsed: number;
|
|
184
|
+
costSpentUsd: number;
|
|
185
|
+
error?: string;
|
|
186
|
+
}
|
|
187
|
+
export declare function isScoutFinishAction(a: ArchitectureScoutAction): a is ArchitectureScoutFinishAction;
|
|
188
|
+
export declare function scoutDefaultsForDepth(depth: ArchitectureDepth): {
|
|
189
|
+
readonly maxSteps: 12;
|
|
190
|
+
readonly costCapUsd: 0.5;
|
|
191
|
+
readonly wallClockMs: 120000;
|
|
192
|
+
readonly perStepEstimateUsd: 0.08;
|
|
193
|
+
readonly creditsPerRun: 5;
|
|
194
|
+
readonly maxImportantFiles: 20;
|
|
195
|
+
} | {
|
|
196
|
+
readonly maxSteps: 25;
|
|
197
|
+
readonly costCapUsd: 1.5;
|
|
198
|
+
readonly wallClockMs: 240000;
|
|
199
|
+
readonly perStepEstimateUsd: 0.08;
|
|
200
|
+
readonly creditsPerRun: 10;
|
|
201
|
+
readonly maxImportantFiles: 50;
|
|
202
|
+
} | {
|
|
203
|
+
readonly maxSteps: 50;
|
|
204
|
+
readonly costCapUsd: 3;
|
|
205
|
+
readonly wallClockMs: 480000;
|
|
206
|
+
readonly perStepEstimateUsd: 0.08;
|
|
207
|
+
readonly creditsPerRun: 20;
|
|
208
|
+
readonly maxImportantFiles: 100;
|
|
209
|
+
};
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Architecture scout protocol — wire contract between the MCP loop and the
|
|
4
|
+
* API brain for the architecture-scout subagent.
|
|
5
|
+
*
|
|
6
|
+
* Mirror: api/src/attacker/architectureScoutProtocol.ts — keep string values
|
|
7
|
+
* in step. Types are duplicated (not shared) between the API and MCP repos,
|
|
8
|
+
* same pattern as agentScanProtocol.
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.ARCHITECTURE_SCOUT_DEFAULTS = void 0;
|
|
12
|
+
exports.isScoutFinishAction = isScoutFinishAction;
|
|
13
|
+
exports.scoutDefaultsForDepth = scoutDefaultsForDepth;
|
|
14
|
+
/** Default budgets for one architecture scout run, by depth. */
|
|
15
|
+
exports.ARCHITECTURE_SCOUT_DEFAULTS = {
|
|
16
|
+
quick: {
|
|
17
|
+
maxSteps: 12,
|
|
18
|
+
costCapUsd: 0.50,
|
|
19
|
+
wallClockMs: 120_000,
|
|
20
|
+
perStepEstimateUsd: 0.08,
|
|
21
|
+
creditsPerRun: 5,
|
|
22
|
+
maxImportantFiles: 20,
|
|
23
|
+
},
|
|
24
|
+
standard: {
|
|
25
|
+
maxSteps: 25,
|
|
26
|
+
costCapUsd: 1.50,
|
|
27
|
+
wallClockMs: 240_000,
|
|
28
|
+
perStepEstimateUsd: 0.08,
|
|
29
|
+
creditsPerRun: 10,
|
|
30
|
+
maxImportantFiles: 50,
|
|
31
|
+
},
|
|
32
|
+
deep: {
|
|
33
|
+
maxSteps: 50,
|
|
34
|
+
costCapUsd: 3.00,
|
|
35
|
+
wallClockMs: 480_000,
|
|
36
|
+
perStepEstimateUsd: 0.08,
|
|
37
|
+
creditsPerRun: 20,
|
|
38
|
+
maxImportantFiles: 100,
|
|
39
|
+
},
|
|
40
|
+
};
|
|
41
|
+
function isScoutFinishAction(a) {
|
|
42
|
+
return a.type === 'finish';
|
|
43
|
+
}
|
|
44
|
+
function scoutDefaultsForDepth(depth) {
|
|
45
|
+
return exports.ARCHITECTURE_SCOUT_DEFAULTS[depth] ?? exports.ARCHITECTURE_SCOUT_DEFAULTS.standard;
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=architectureScoutProtocol.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"architectureScoutProtocol.js","sourceRoot":"","sources":["../../src/attack/architectureScoutProtocol.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AAgOH,kDAEC;AAED,sDAEC;AA9ND,gEAAgE;AACnD,QAAA,2BAA2B,GAAG;IACvC,KAAK,EAAE;QACH,QAAQ,EAAE,EAAE;QACZ,UAAU,EAAE,IAAI;QAChB,WAAW,EAAE,OAAO;QACpB,kBAAkB,EAAE,IAAI;QACxB,aAAa,EAAE,CAAC;QAChB,iBAAiB,EAAE,EAAE;KACxB;IACD,QAAQ,EAAE;QACN,QAAQ,EAAE,EAAE;QACZ,UAAU,EAAE,IAAI;QAChB,WAAW,EAAE,OAAO;QACpB,kBAAkB,EAAE,IAAI;QACxB,aAAa,EAAE,EAAE;QACjB,iBAAiB,EAAE,EAAE;KACxB;IACD,IAAI,EAAE;QACF,QAAQ,EAAE,EAAE;QACZ,UAAU,EAAE,IAAI;QAChB,WAAW,EAAE,OAAO;QACpB,kBAAkB,EAAE,IAAI;QACxB,aAAa,EAAE,EAAE;QACjB,iBAAiB,EAAE,GAAG;KACzB;CACK,CAAC;AA8LX,SAAgB,mBAAmB,CAAC,CAA0B;IAC1D,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC;AAC/B,CAAC;AAED,SAAgB,qBAAqB,CAAC,KAAwB;IAC1D,OAAO,mCAA2B,CAAC,KAAK,CAAC,IAAI,mCAA2B,CAAC,QAAQ,CAAC;AACtF,CAAC"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Candidate store — tracks vulnerability candidates before finish, accumulates
|
|
3
|
+
* evidence, and guarantees every candidate becomes terminal before the scan
|
|
4
|
+
* can complete.
|
|
5
|
+
*
|
|
6
|
+
* Candidates are NOT findings. A candidate is a structured concern that the
|
|
7
|
+
* agent is investigating. Only after verification does a candidate become a
|
|
8
|
+
* finding (or get rejected/unproven).
|
|
9
|
+
*
|
|
10
|
+
* Rules:
|
|
11
|
+
* - Every final finding must originate from a candidate.
|
|
12
|
+
* - The model cannot mark a candidate as 'verified' — only the verifier can.
|
|
13
|
+
* - The model may propose 'rejected' or 'unproven', but the MCP validates evidence.
|
|
14
|
+
* - Duplicate root causes are merged.
|
|
15
|
+
* - Candidates cannot disappear between steps.
|
|
16
|
+
*/
|
|
17
|
+
import type { EvidenceRequirement } from './evidenceLedger';
|
|
18
|
+
export type CandidateStatus = 'discovered' | 'investigating' | 'supported' | 'rejected' | 'unproven' | 'verified' | 'merged' | 'blocked';
|
|
19
|
+
export type CandidateSeverity = 'critical' | 'high' | 'medium' | 'low';
|
|
20
|
+
export interface EvidenceLocation {
|
|
21
|
+
filePath: string;
|
|
22
|
+
line: number;
|
|
23
|
+
symbol?: string;
|
|
24
|
+
}
|
|
25
|
+
export interface CandidateVerification {
|
|
26
|
+
verdict: 'PROVEN' | 'UNPROVEN' | 'INCONCLUSIVE';
|
|
27
|
+
reason: string;
|
|
28
|
+
repeatedRuns: number;
|
|
29
|
+
repeatPasses: number;
|
|
30
|
+
mutationDiscriminating: boolean;
|
|
31
|
+
}
|
|
32
|
+
export type ProofDimension = 'source' | 'reachability' | 'control' | 'threat-model' | 'impact' | 'verification';
|
|
33
|
+
export interface Candidate {
|
|
34
|
+
id: string;
|
|
35
|
+
rootCauseId: string;
|
|
36
|
+
type: string;
|
|
37
|
+
severity: CandidateSeverity;
|
|
38
|
+
locations: EvidenceLocation[];
|
|
39
|
+
claim: string;
|
|
40
|
+
status: CandidateStatus;
|
|
41
|
+
evidenceRefs: string[];
|
|
42
|
+
evidenceCategories?: EvidenceCategory[];
|
|
43
|
+
requiredEvidence: EvidenceRequirement[];
|
|
44
|
+
requiredProofDimensions?: ProofDimension[];
|
|
45
|
+
satisfiedDimensions?: ProofDimension[];
|
|
46
|
+
verification?: CandidateVerification;
|
|
47
|
+
mergedInto?: string;
|
|
48
|
+
blockedReason?: string;
|
|
49
|
+
createdAt: number;
|
|
50
|
+
updatedAt: number;
|
|
51
|
+
}
|
|
52
|
+
export interface CandidateRegistration {
|
|
53
|
+
rootCauseId: string;
|
|
54
|
+
type: string;
|
|
55
|
+
severity: CandidateSeverity;
|
|
56
|
+
locations: EvidenceLocation[];
|
|
57
|
+
claim: string;
|
|
58
|
+
requiredEvidence?: EvidenceRequirement[];
|
|
59
|
+
requiredProofDimensions?: ProofDimension[];
|
|
60
|
+
}
|
|
61
|
+
export type EvidenceCategory = 'source' | 'flow' | 'guard' | 'policy' | 'impact' | 'test' | 'negative' | 'cross-file';
|
|
62
|
+
export declare class CandidateStore {
|
|
63
|
+
private candidates;
|
|
64
|
+
private rootCauseIndex;
|
|
65
|
+
register(input: CandidateRegistration): string;
|
|
66
|
+
get(id: string): Candidate | undefined;
|
|
67
|
+
update(id: string, update: Partial<Candidate>): void;
|
|
68
|
+
setVerified(id: string, verification: CandidateVerification): void;
|
|
69
|
+
setUnproven(id: string, reason: string): void;
|
|
70
|
+
setBlocked(id: string, reason: string): void;
|
|
71
|
+
addEvidence(id: string, evidenceRef: string, category?: EvidenceCategory, dimension?: ProofDimension): void;
|
|
72
|
+
isReadyForJuror(id: string): boolean;
|
|
73
|
+
getCandidatesByRootCause(rootCauseId: string): Candidate[];
|
|
74
|
+
getAll(): Candidate[];
|
|
75
|
+
getActive(): Candidate[];
|
|
76
|
+
getTerminal(): Candidate[];
|
|
77
|
+
getVerified(): Candidate[];
|
|
78
|
+
allTerminal(): boolean;
|
|
79
|
+
allReadyForJuror(): boolean;
|
|
80
|
+
getUnderInvestigation(): Candidate[];
|
|
81
|
+
size(): number;
|
|
82
|
+
snapshot(): {
|
|
83
|
+
total: number;
|
|
84
|
+
discovered: number;
|
|
85
|
+
investigating: number;
|
|
86
|
+
supported: number;
|
|
87
|
+
verified: number;
|
|
88
|
+
unproven: number;
|
|
89
|
+
rejected: number;
|
|
90
|
+
merged: number;
|
|
91
|
+
blocked: number;
|
|
92
|
+
terminal: number;
|
|
93
|
+
};
|
|
94
|
+
clear(): void;
|
|
95
|
+
}
|
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Candidate store — tracks vulnerability candidates before finish, accumulates
|
|
4
|
+
* evidence, and guarantees every candidate becomes terminal before the scan
|
|
5
|
+
* can complete.
|
|
6
|
+
*
|
|
7
|
+
* Candidates are NOT findings. A candidate is a structured concern that the
|
|
8
|
+
* agent is investigating. Only after verification does a candidate become a
|
|
9
|
+
* finding (or get rejected/unproven).
|
|
10
|
+
*
|
|
11
|
+
* Rules:
|
|
12
|
+
* - Every final finding must originate from a candidate.
|
|
13
|
+
* - The model cannot mark a candidate as 'verified' — only the verifier can.
|
|
14
|
+
* - The model may propose 'rejected' or 'unproven', but the MCP validates evidence.
|
|
15
|
+
* - Duplicate root causes are merged.
|
|
16
|
+
* - Candidates cannot disappear between steps.
|
|
17
|
+
*/
|
|
18
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
|
+
exports.CandidateStore = void 0;
|
|
20
|
+
let candidateIdCounter = 0;
|
|
21
|
+
class CandidateStore {
|
|
22
|
+
candidates = new Map();
|
|
23
|
+
rootCauseIndex = new Map();
|
|
24
|
+
register(input) {
|
|
25
|
+
// Check for existing candidates with the same root cause
|
|
26
|
+
const existing = this.rootCauseIndex.get(input.rootCauseId);
|
|
27
|
+
if (existing && existing.length > 0) {
|
|
28
|
+
// Merge into the first candidate with this root cause
|
|
29
|
+
const firstId = existing[0];
|
|
30
|
+
const first = this.candidates.get(firstId);
|
|
31
|
+
if (first) {
|
|
32
|
+
// Add new locations
|
|
33
|
+
for (const loc of input.locations) {
|
|
34
|
+
if (!first.locations.some(l => l.filePath === loc.filePath && l.line === loc.line)) {
|
|
35
|
+
first.locations.push(loc);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
first.updatedAt = Date.now();
|
|
39
|
+
return firstId;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
const id = `candidate-${++candidateIdCounter}`;
|
|
43
|
+
const now = Date.now();
|
|
44
|
+
const defaultDimensions = input.severity === 'critical' || input.severity === 'high'
|
|
45
|
+
? ['source', 'reachability', 'control', 'threat-model', 'impact', 'verification']
|
|
46
|
+
: input.severity === 'medium'
|
|
47
|
+
? ['source', 'reachability', 'control', 'threat-model']
|
|
48
|
+
: ['source', 'control'];
|
|
49
|
+
const requiredProofDimensions = input.requiredProofDimensions || defaultDimensions;
|
|
50
|
+
const candidate = {
|
|
51
|
+
id,
|
|
52
|
+
rootCauseId: input.rootCauseId,
|
|
53
|
+
type: input.type,
|
|
54
|
+
severity: input.severity,
|
|
55
|
+
locations: input.locations,
|
|
56
|
+
claim: input.claim,
|
|
57
|
+
status: 'discovered',
|
|
58
|
+
evidenceRefs: [],
|
|
59
|
+
requiredEvidence: input.requiredEvidence || [],
|
|
60
|
+
requiredProofDimensions,
|
|
61
|
+
satisfiedDimensions: [],
|
|
62
|
+
createdAt: now,
|
|
63
|
+
updatedAt: now,
|
|
64
|
+
};
|
|
65
|
+
this.candidates.set(id, candidate);
|
|
66
|
+
// Index by root cause
|
|
67
|
+
const rcList = this.rootCauseIndex.get(input.rootCauseId) || [];
|
|
68
|
+
rcList.push(id);
|
|
69
|
+
this.rootCauseIndex.set(input.rootCauseId, rcList);
|
|
70
|
+
return id;
|
|
71
|
+
}
|
|
72
|
+
get(id) {
|
|
73
|
+
return this.candidates.get(id);
|
|
74
|
+
}
|
|
75
|
+
update(id, update) {
|
|
76
|
+
const candidate = this.candidates.get(id);
|
|
77
|
+
if (!candidate)
|
|
78
|
+
return;
|
|
79
|
+
// The model cannot set status to 'verified' — only the verifier can
|
|
80
|
+
if (update.status === 'verified' && candidate.status !== 'verified') {
|
|
81
|
+
throw new Error('Cannot mark candidate as verified — only the verifier can set this status');
|
|
82
|
+
}
|
|
83
|
+
Object.assign(candidate, update, { updatedAt: Date.now() });
|
|
84
|
+
}
|
|
85
|
+
setVerified(id, verification) {
|
|
86
|
+
const candidate = this.candidates.get(id);
|
|
87
|
+
if (!candidate)
|
|
88
|
+
return;
|
|
89
|
+
candidate.status = 'verified';
|
|
90
|
+
candidate.verification = verification;
|
|
91
|
+
candidate.updatedAt = Date.now();
|
|
92
|
+
}
|
|
93
|
+
setUnproven(id, reason) {
|
|
94
|
+
const candidate = this.candidates.get(id);
|
|
95
|
+
if (!candidate)
|
|
96
|
+
return;
|
|
97
|
+
candidate.status = 'unproven';
|
|
98
|
+
candidate.verification = {
|
|
99
|
+
verdict: 'UNPROVEN',
|
|
100
|
+
reason,
|
|
101
|
+
repeatedRuns: 0,
|
|
102
|
+
repeatPasses: 0,
|
|
103
|
+
mutationDiscriminating: false,
|
|
104
|
+
};
|
|
105
|
+
candidate.updatedAt = Date.now();
|
|
106
|
+
}
|
|
107
|
+
setBlocked(id, reason) {
|
|
108
|
+
const candidate = this.candidates.get(id);
|
|
109
|
+
if (!candidate)
|
|
110
|
+
return;
|
|
111
|
+
candidate.status = 'blocked';
|
|
112
|
+
candidate.blockedReason = reason;
|
|
113
|
+
candidate.verification = undefined;
|
|
114
|
+
candidate.updatedAt = Date.now();
|
|
115
|
+
}
|
|
116
|
+
addEvidence(id, evidenceRef, category, dimension) {
|
|
117
|
+
const candidate = this.candidates.get(id);
|
|
118
|
+
if (candidate && !candidate.evidenceRefs.includes(evidenceRef)) {
|
|
119
|
+
candidate.evidenceRefs.push(evidenceRef);
|
|
120
|
+
if (category) {
|
|
121
|
+
if (!candidate.evidenceCategories)
|
|
122
|
+
candidate.evidenceCategories = [];
|
|
123
|
+
if (!candidate.evidenceCategories.includes(category)) {
|
|
124
|
+
candidate.evidenceCategories.push(category);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
if (dimension) {
|
|
128
|
+
if (!candidate.satisfiedDimensions)
|
|
129
|
+
candidate.satisfiedDimensions = [];
|
|
130
|
+
if (!candidate.satisfiedDimensions.includes(dimension)) {
|
|
131
|
+
candidate.satisfiedDimensions.push(dimension);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
if (candidate.status === 'discovered') {
|
|
135
|
+
candidate.status = 'investigating';
|
|
136
|
+
}
|
|
137
|
+
const required = candidate.requiredProofDimensions || [];
|
|
138
|
+
const satisfied = candidate.satisfiedDimensions || [];
|
|
139
|
+
if (candidate.status === 'investigating' && required.length > 0) {
|
|
140
|
+
const allDimensionsSatisfied = required.every(d => satisfied.includes(d));
|
|
141
|
+
if (allDimensionsSatisfied) {
|
|
142
|
+
candidate.status = 'supported';
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
else if (candidate.status === 'investigating' && required.length === 0) {
|
|
146
|
+
const categories = candidate.evidenceCategories || [];
|
|
147
|
+
const categoryCount = categories.length;
|
|
148
|
+
const minCategories = (candidate.severity === 'critical' || candidate.severity === 'high') ? 2 : 1;
|
|
149
|
+
if (categoryCount >= minCategories) {
|
|
150
|
+
candidate.status = 'supported';
|
|
151
|
+
}
|
|
152
|
+
else if (candidate.evidenceRefs.length >= 1 && categoryCount === 0) {
|
|
153
|
+
candidate.status = 'supported';
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
candidate.updatedAt = Date.now();
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
isReadyForJuror(id) {
|
|
160
|
+
const candidate = this.candidates.get(id);
|
|
161
|
+
if (!candidate)
|
|
162
|
+
return false;
|
|
163
|
+
if (candidate.status !== 'supported')
|
|
164
|
+
return false;
|
|
165
|
+
const required = candidate.requiredProofDimensions || [];
|
|
166
|
+
if (required.length === 0)
|
|
167
|
+
return true;
|
|
168
|
+
const satisfied = candidate.satisfiedDimensions || [];
|
|
169
|
+
return required.every(d => satisfied.includes(d));
|
|
170
|
+
}
|
|
171
|
+
getCandidatesByRootCause(rootCauseId) {
|
|
172
|
+
const ids = this.rootCauseIndex.get(rootCauseId) || [];
|
|
173
|
+
return ids.map(id => this.candidates.get(id)).filter(Boolean);
|
|
174
|
+
}
|
|
175
|
+
getAll() {
|
|
176
|
+
return [...this.candidates.values()];
|
|
177
|
+
}
|
|
178
|
+
getActive() {
|
|
179
|
+
return [...this.candidates.values()].filter(c => c.status === 'discovered' || c.status === 'investigating' || c.status === 'supported');
|
|
180
|
+
}
|
|
181
|
+
getTerminal() {
|
|
182
|
+
return [...this.candidates.values()].filter(c => c.status === 'verified' || c.status === 'unproven' ||
|
|
183
|
+
c.status === 'rejected' || c.status === 'merged' || c.status === 'blocked');
|
|
184
|
+
}
|
|
185
|
+
getVerified() {
|
|
186
|
+
return [...this.candidates.values()].filter(c => c.status === 'verified');
|
|
187
|
+
}
|
|
188
|
+
allTerminal() {
|
|
189
|
+
const all = this.getAll();
|
|
190
|
+
if (all.length === 0)
|
|
191
|
+
return true;
|
|
192
|
+
return all.every(c => c.status === 'verified' || c.status === 'unproven' ||
|
|
193
|
+
c.status === 'rejected' || c.status === 'merged' || c.status === 'blocked');
|
|
194
|
+
}
|
|
195
|
+
allReadyForJuror() {
|
|
196
|
+
const all = this.getAll();
|
|
197
|
+
if (all.length === 0)
|
|
198
|
+
return true;
|
|
199
|
+
return all.every(c => c.status === 'supported' || c.status === 'verified' ||
|
|
200
|
+
c.status === 'unproven' || c.status === 'rejected' ||
|
|
201
|
+
c.status === 'merged' || c.status === 'blocked');
|
|
202
|
+
}
|
|
203
|
+
getUnderInvestigation() {
|
|
204
|
+
return [...this.candidates.values()].filter(c => c.status === 'discovered' || c.status === 'investigating');
|
|
205
|
+
}
|
|
206
|
+
size() {
|
|
207
|
+
return this.candidates.size;
|
|
208
|
+
}
|
|
209
|
+
snapshot() {
|
|
210
|
+
const all = this.getAll();
|
|
211
|
+
return {
|
|
212
|
+
total: all.length,
|
|
213
|
+
discovered: all.filter(c => c.status === 'discovered').length,
|
|
214
|
+
investigating: all.filter(c => c.status === 'investigating').length,
|
|
215
|
+
supported: all.filter(c => c.status === 'supported').length,
|
|
216
|
+
verified: all.filter(c => c.status === 'verified').length,
|
|
217
|
+
unproven: all.filter(c => c.status === 'unproven').length,
|
|
218
|
+
rejected: all.filter(c => c.status === 'rejected').length,
|
|
219
|
+
merged: all.filter(c => c.status === 'merged').length,
|
|
220
|
+
blocked: all.filter(c => c.status === 'blocked').length,
|
|
221
|
+
terminal: all.filter(c => c.status === 'verified' || c.status === 'unproven' ||
|
|
222
|
+
c.status === 'rejected' || c.status === 'merged' || c.status === 'blocked').length,
|
|
223
|
+
};
|
|
224
|
+
}
|
|
225
|
+
clear() {
|
|
226
|
+
this.candidates.clear();
|
|
227
|
+
this.rootCauseIndex.clear();
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
exports.CandidateStore = CandidateStore;
|
|
231
|
+
//# sourceMappingURL=candidateStore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"candidateStore.js","sourceRoot":"","sources":["../../src/attack/candidateStore.ts"],"names":[],"mappings":"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"}
|