@securecode-ai/mcp 0.3.7 → 0.3.9

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.
@@ -2,7 +2,7 @@ export interface ScanRequest {
2
2
  code: string;
3
3
  language: string;
4
4
  filePath?: string;
5
- scanDepth?: 'auto' | 'deep';
5
+ scanDepth?: 'auto' | 'deep' | 'agent';
6
6
  workspaceHints?: {
7
7
  frameworkHint?: string;
8
8
  relatedFiles?: Array<{
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Scan agent executor — dispatches each agent action to the right tool
3
+ * and returns a redacted, truncated observation string.
4
+ *
5
+ * MCP-side tools (read_file, search_code, trace_flow, check_guard) run
6
+ * locally using tree-sitter + filesystem. API-side tools (check_policy)
7
+ * call POST /agent/scan/tool over the wire.
8
+ */
9
+ import { ApiClient } from '../api/client';
10
+ import type { ServerContext } from '../mcp/types';
11
+ import type { AgentScanAction, AgentScanTarget } from './agentScanProtocol';
12
+ export declare function executeAction(action: AgentScanAction, ctx: ServerContext, runId: string, client: ApiClient, target: AgentScanTarget): Promise<string>;
@@ -0,0 +1,208 @@
1
+ "use strict";
2
+ /**
3
+ * Scan agent executor — dispatches each agent action to the right tool
4
+ * and returns a redacted, truncated observation string.
5
+ *
6
+ * MCP-side tools (read_file, search_code, trace_flow, check_guard) run
7
+ * locally using tree-sitter + filesystem. API-side tools (check_policy)
8
+ * call POST /agent/scan/tool over the wire.
9
+ */
10
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ var desc = Object.getOwnPropertyDescriptor(m, k);
13
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
14
+ desc = { enumerable: true, get: function() { return m[k]; } };
15
+ }
16
+ Object.defineProperty(o, k2, desc);
17
+ }) : (function(o, m, k, k2) {
18
+ if (k2 === undefined) k2 = k;
19
+ o[k2] = m[k];
20
+ }));
21
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
22
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
23
+ }) : function(o, v) {
24
+ o["default"] = v;
25
+ });
26
+ var __importStar = (this && this.__importStar) || (function () {
27
+ var ownKeys = function(o) {
28
+ ownKeys = Object.getOwnPropertyNames || function (o) {
29
+ var ar = [];
30
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
31
+ return ar;
32
+ };
33
+ return ownKeys(o);
34
+ };
35
+ return function (mod) {
36
+ if (mod && mod.__esModule) return mod;
37
+ var result = {};
38
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
39
+ __setModuleDefault(result, mod);
40
+ return result;
41
+ };
42
+ })();
43
+ Object.defineProperty(exports, "__esModule", { value: true });
44
+ exports.executeAction = executeAction;
45
+ const fs = __importStar(require("fs"));
46
+ const path = __importStar(require("path"));
47
+ const files_1 = require("../utils/files");
48
+ const searchCode_1 = require("../utils/searchCode");
49
+ const taintTracker_1 = require("../project-map/taintTracker");
50
+ const guardEvaluator_1 = require("../project-map/guardEvaluator");
51
+ const report_1 = require("./report");
52
+ const MAX_OBSERVATION_CHARS = 8000;
53
+ function truncate(text) {
54
+ if (text.length <= MAX_OBSERVATION_CHARS)
55
+ return text;
56
+ return text.slice(0, MAX_OBSERVATION_CHARS) + '\n… [truncated]';
57
+ }
58
+ function redact(text) {
59
+ return truncate((0, report_1.redactText)(text));
60
+ }
61
+ function toSinkLanguage(language) {
62
+ const map = {
63
+ javascript: 'javascript',
64
+ javascriptreact: 'javascript',
65
+ typescript: 'typescript',
66
+ typescriptreact: 'tsx',
67
+ python: 'python',
68
+ };
69
+ return map[language] || null;
70
+ }
71
+ function findFunctionInFile(source, functionName) {
72
+ // Simple heuristic: find a function/method declaration by name and
73
+ // extract its body by brace matching. Works for most JS/TS/Python.
74
+ const patterns = [
75
+ new RegExp(`(?:export\\s+)?(?:async\\s+)?function\\s+${escapeRegex(functionName)}\\s*\\(`),
76
+ new RegExp(`(?:const|let|var)\\s+${escapeRegex(functionName)}\\s*=\\s*(?:async\\s*)?\\(`),
77
+ new RegExp(`\\b${escapeRegex(functionName)}\\s*(?::\\s*[^=]+)?\\s*=\\s*(?:async\\s*)?\\(`),
78
+ ];
79
+ for (const pattern of patterns) {
80
+ const match = source.match(pattern);
81
+ if (!match)
82
+ continue;
83
+ const startIdx = match.index;
84
+ // Find opening brace
85
+ let braceStart = source.indexOf('{', startIdx);
86
+ if (braceStart === -1)
87
+ continue;
88
+ // Find matching close brace
89
+ let depth = 0;
90
+ let endIdx = -1;
91
+ for (let i = braceStart; i < source.length; i++) {
92
+ if (source[i] === '{')
93
+ depth++;
94
+ else if (source[i] === '}') {
95
+ depth--;
96
+ if (depth === 0) {
97
+ endIdx = i;
98
+ break;
99
+ }
100
+ }
101
+ }
102
+ if (endIdx !== -1) {
103
+ return source.slice(startIdx, endIdx + 1);
104
+ }
105
+ }
106
+ return null;
107
+ }
108
+ function escapeRegex(s) {
109
+ return s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
110
+ }
111
+ async function executeAction(action, ctx, runId, client, target) {
112
+ switch (action.type) {
113
+ case 'read_file': {
114
+ try {
115
+ const absPath = (0, files_1.resolveWorkspacePath)(ctx.workspaceRoot, action.path);
116
+ const content = fs.readFileSync(absPath, 'utf8');
117
+ const rel = path.relative(ctx.workspaceRoot, absPath).replace(/\\/g, '/');
118
+ const lines = content.split('\n').length;
119
+ const numbered = content
120
+ .split('\n')
121
+ .map((line, i) => `${i + 1}: ${line}`)
122
+ .join('\n');
123
+ return redact(`File: ${rel} (${lines} lines)\n\n${numbered}`);
124
+ }
125
+ catch (e) {
126
+ return `Error reading file "${action.path}": ${e.message || e}`;
127
+ }
128
+ }
129
+ case 'search_code': {
130
+ try {
131
+ const result = await (0, searchCode_1.searchCode)(ctx.workspaceRoot, action.pattern, action.glob);
132
+ return redact((0, searchCode_1.formatSearchResult)(result));
133
+ }
134
+ catch (e) {
135
+ return `Error searching for "${action.pattern}": ${e.message || e}`;
136
+ }
137
+ }
138
+ case 'trace_flow': {
139
+ try {
140
+ const absPath = (0, files_1.resolveWorkspacePath)(ctx.workspaceRoot, action.filePath);
141
+ const content = fs.readFileSync(absPath, 'utf8');
142
+ const { language } = (0, files_1.readFileFromWorkspace)(ctx.workspaceRoot, action.filePath);
143
+ const sinkLang = toSinkLanguage(language);
144
+ if (!sinkLang) {
145
+ return `Unsupported language for taint tracking: ${language}`;
146
+ }
147
+ const results = await (0, taintTracker_1.trackTaint)(content, sinkLang);
148
+ if (results.length === 0) {
149
+ return `No taint flows found in ${action.filePath}.`;
150
+ }
151
+ const formatted = results.map(r => {
152
+ const path = r.propagationPath
153
+ .map(p => ` L${p.line} ${p.operation}: ${p.description}`)
154
+ .join('\n');
155
+ return `${r.source} (L${r.sourceLine}) → ${r.sink} (L${r.sinkLine}) [${r.canonicalType}]${r.isTainted ? ' TAINTED' : ' (sanitized)'}\n${path}`;
156
+ }).join('\n\n');
157
+ return redact(formatted);
158
+ }
159
+ catch (e) {
160
+ return `Error tracing flow in "${action.filePath}": ${e.message || e}`;
161
+ }
162
+ }
163
+ case 'check_guard': {
164
+ try {
165
+ const absPath = (0, files_1.resolveWorkspacePath)(ctx.workspaceRoot, action.filePath);
166
+ const content = fs.readFileSync(absPath, 'utf8');
167
+ const guardSource = findFunctionInFile(content, action.guardName);
168
+ if (!guardSource) {
169
+ return `Guard function "${action.guardName}" not found in ${action.filePath}. Use search_code to find where it's defined.`;
170
+ }
171
+ const { language } = (0, files_1.readFileFromWorkspace)(ctx.workspaceRoot, action.filePath);
172
+ const sinkLang = toSinkLanguage(language);
173
+ if (!sinkLang) {
174
+ return `Unsupported language for guard evaluation: ${language}`;
175
+ }
176
+ const result = await (0, guardEvaluator_1.evaluateGuard)(guardSource, action.guardName, action.attackType, sinkLang);
177
+ const effectiveStr = result.effective ? 'EFFECTIVE' : 'NOT EFFECTIVE';
178
+ let output = `Guard "${action.guardName}" vs ${action.attackType}: ${effectiveStr}\nReason: ${result.reason}`;
179
+ if (result.bypassExample) {
180
+ output += `\nBypass: ${result.bypassExample}`;
181
+ }
182
+ return output;
183
+ }
184
+ catch (e) {
185
+ return `Error evaluating guard "${action.guardName}": ${e.message || e}`;
186
+ }
187
+ }
188
+ case 'check_policy': {
189
+ try {
190
+ const toolReq = {
191
+ runId,
192
+ action,
193
+ target,
194
+ };
195
+ const resp = await client.postJson('/agent/scan/tool', toolReq);
196
+ return truncate(resp.observation);
197
+ }
198
+ catch (e) {
199
+ return `Error running check_policy: ${e.message || e}`;
200
+ }
201
+ }
202
+ case 'finish': {
203
+ // finish is handled by the loop, not the executor
204
+ return '';
205
+ }
206
+ }
207
+ }
208
+ //# sourceMappingURL=agentScanExecutor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agentScanExecutor.js","sourceRoot":"","sources":["../../src/attack/agentScanExecutor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Scan agent loop driver — the MCP-side loop that drives the scan agent.
3
+ *
4
+ * Mirrors agentLoop.ts (the attack agent) but with scan tools instead of
5
+ * HTTP probes. The API is a stateless per-step brain; this loop owns the
6
+ * transcript, the filesystem, and the tool execution.
7
+ *
8
+ * Flow:
9
+ * 1. POST /agent/scan/start → { runId, budget }
10
+ * 2. while (true):
11
+ * POST /agent/scan/step { runId, target, transcript, budget }
12
+ * ← { next: action | null }
13
+ * if null → done (capped or completed)
14
+ * if finish → done with findings
15
+ * execute action locally → observation
16
+ * push { action, observation } into transcript
17
+ * 3. return result
18
+ */
19
+ import type { ServerContext } from '../mcp/types';
20
+ import { type AgentScanBudget, type AgentScanResult, type AgentScanTarget } from './agentScanProtocol';
21
+ export interface AgentScanOptions {
22
+ budget?: Partial<AgentScanBudget>;
23
+ signal?: AbortSignal;
24
+ onProgress?: (stepsTaken: number, maxSteps: number, message: string) => void;
25
+ }
26
+ export declare function runAgentScan(ctx: ServerContext, target: AgentScanTarget, options?: AgentScanOptions): Promise<AgentScanResult>;
@@ -0,0 +1,135 @@
1
+ "use strict";
2
+ /**
3
+ * Scan agent loop driver — the MCP-side loop that drives the scan agent.
4
+ *
5
+ * Mirrors agentLoop.ts (the attack agent) but with scan tools instead of
6
+ * HTTP probes. The API is a stateless per-step brain; this loop owns the
7
+ * transcript, the filesystem, and the tool execution.
8
+ *
9
+ * Flow:
10
+ * 1. POST /agent/scan/start → { runId, budget }
11
+ * 2. while (true):
12
+ * POST /agent/scan/step { runId, target, transcript, budget }
13
+ * ← { next: action | null }
14
+ * if null → done (capped or completed)
15
+ * if finish → done with findings
16
+ * execute action locally → observation
17
+ * push { action, observation } into transcript
18
+ * 3. return result
19
+ */
20
+ Object.defineProperty(exports, "__esModule", { value: true });
21
+ exports.runAgentScan = runAgentScan;
22
+ const client_1 = require("../api/client");
23
+ const agentScanExecutor_1 = require("./agentScanExecutor");
24
+ const agentScanProtocol_1 = require("./agentScanProtocol");
25
+ async function runAgentScan(ctx, target, options = {}) {
26
+ const client = new client_1.ApiClient({ baseUrl: ctx.apiUrl, token: ctx.apiToken });
27
+ const budget = {
28
+ stepsRemaining: options.budget?.stepsRemaining ?? agentScanProtocol_1.AGENT_SCAN_DEFAULTS.maxSteps,
29
+ costSpentUsd: options.budget?.costSpentUsd ?? 0,
30
+ costCapUsd: options.budget?.costCapUsd ?? agentScanProtocol_1.AGENT_SCAN_DEFAULTS.costCapUsd,
31
+ };
32
+ const startTime = Date.now();
33
+ const wallClockMs = agentScanProtocol_1.AGENT_SCAN_DEFAULTS.wallClockMs;
34
+ let stepsTaken = 0;
35
+ let costSpentUsd = 0;
36
+ try {
37
+ const startResp = await client.postJson('/agent/scan/start', {});
38
+ const transcript = [];
39
+ while (true) {
40
+ // Wall clock check
41
+ if (Date.now() - startTime > wallClockMs) {
42
+ return {
43
+ status: 'capped',
44
+ findings: [],
45
+ transcript,
46
+ stepsUsed: stepsTaken,
47
+ costSpentUsd,
48
+ summary: `Wall clock limit (${wallClockMs}ms) exceeded.`,
49
+ };
50
+ }
51
+ // Abort check
52
+ if (options.signal?.aborted) {
53
+ return {
54
+ status: 'cancelled',
55
+ findings: [],
56
+ transcript,
57
+ stepsUsed: stepsTaken,
58
+ costSpentUsd,
59
+ summary: 'Cancelled by user.',
60
+ };
61
+ }
62
+ const stepReq = {
63
+ runId: startResp.runId,
64
+ target,
65
+ transcript,
66
+ budget: {
67
+ stepsRemaining: budget.stepsRemaining,
68
+ costSpentUsd,
69
+ costCapUsd: budget.costCapUsd,
70
+ },
71
+ };
72
+ const stepResp = await client.postJson('/agent/scan/step', stepReq);
73
+ costSpentUsd += stepResp.costUsd || 0;
74
+ // Null next = done (cost capped or steps exhausted)
75
+ if (!stepResp.next) {
76
+ const status = stepResp.costCapped
77
+ ? 'capped'
78
+ : (stepResp.degraded ? 'degraded' : 'completed');
79
+ return {
80
+ status,
81
+ findings: [],
82
+ transcript,
83
+ stepsUsed: stepsTaken,
84
+ costSpentUsd,
85
+ summary: stepResp.costCapped
86
+ ? `Cost cap ($${budget.costCapUsd.toFixed(2)}) reached.`
87
+ : 'Agent completed without explicit finish.',
88
+ };
89
+ }
90
+ const action = stepResp.next;
91
+ stepsTaken++;
92
+ budget.stepsRemaining = stepResp.stepsRemaining;
93
+ // Progress callback
94
+ if (options.onProgress) {
95
+ const actionDesc = describeAction(action);
96
+ options.onProgress(stepsTaken, agentScanProtocol_1.AGENT_SCAN_DEFAULTS.maxSteps, `Step ${stepsTaken}: ${actionDesc}`);
97
+ }
98
+ // Finish = done with findings
99
+ if (action.type === 'finish') {
100
+ return {
101
+ status: 'completed',
102
+ findings: action.findings,
103
+ transcript,
104
+ stepsUsed: stepsTaken,
105
+ costSpentUsd,
106
+ summary: action.summary,
107
+ };
108
+ }
109
+ // Execute the action locally
110
+ const observation = await (0, agentScanExecutor_1.executeAction)(action, ctx, startResp.runId, client, target);
111
+ transcript.push({ action, observation });
112
+ }
113
+ }
114
+ catch (err) {
115
+ return {
116
+ status: 'spawn_failed',
117
+ findings: [],
118
+ transcript: [],
119
+ stepsUsed: stepsTaken,
120
+ costSpentUsd,
121
+ error: err.message || String(err),
122
+ };
123
+ }
124
+ }
125
+ function describeAction(action) {
126
+ switch (action.type) {
127
+ case 'read_file': return `read_file(${action.path})`;
128
+ case 'search_code': return `search_code("${action.pattern}")`;
129
+ case 'trace_flow': return `trace_flow(${action.filePath})`;
130
+ case 'check_guard': return `check_guard(${action.guardName})`;
131
+ case 'check_policy': return `check_policy(${action.filePath})`;
132
+ case 'finish': return 'finish';
133
+ }
134
+ }
135
+ //# sourceMappingURL=agentScanLoop.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agentScanLoop.js","sourceRoot":"","sources":["../../src/attack/agentScanLoop.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,113 @@
1
+ /**
2
+ * Scan-side agent — wire contract mirror.
3
+ *
4
+ * Mirror: api/src/attacker/agentScanProtocol.ts — keep string values in step.
5
+ * Types are duplicated (not shared) between the API and MCP repos.
6
+ */
7
+ export declare const AGENT_SCAN_DEFAULTS: {
8
+ readonly maxSteps: 20;
9
+ readonly costCapUsd: 0.4;
10
+ readonly wallClockMs: 180000;
11
+ readonly perStepEstimateUsd: 0.08;
12
+ readonly creditsPerRun: 5;
13
+ readonly dailyRunLimit: 20;
14
+ };
15
+ export interface AgentScanReadFileAction {
16
+ type: 'read_file';
17
+ path: string;
18
+ rationale: string;
19
+ }
20
+ export interface AgentScanSearchCodeAction {
21
+ type: 'search_code';
22
+ pattern: string;
23
+ glob?: string;
24
+ rationale: string;
25
+ }
26
+ export interface AgentScanTraceFlowAction {
27
+ type: 'trace_flow';
28
+ filePath: string;
29
+ rationale: string;
30
+ }
31
+ export interface AgentScanCheckGuardAction {
32
+ type: 'check_guard';
33
+ filePath: string;
34
+ guardName: string;
35
+ attackType: AttackType;
36
+ rationale: string;
37
+ }
38
+ export interface AgentScanCheckPolicyAction {
39
+ type: 'check_policy';
40
+ filePath: string;
41
+ rationale: string;
42
+ }
43
+ export interface AgentScanFinding {
44
+ line: number;
45
+ lineEnd?: number;
46
+ type: string;
47
+ severity: 'critical' | 'high' | 'medium' | 'low';
48
+ confidence: number;
49
+ evidence: string;
50
+ why: string;
51
+ fixStrategy?: string;
52
+ }
53
+ export interface AgentScanFinishAction {
54
+ type: 'finish';
55
+ findings: AgentScanFinding[];
56
+ summary: string;
57
+ }
58
+ export type AgentScanAction = AgentScanReadFileAction | AgentScanSearchCodeAction | AgentScanTraceFlowAction | AgentScanCheckGuardAction | AgentScanCheckPolicyAction | AgentScanFinishAction;
59
+ export type AgentScanActionType = 'read_file' | 'search_code' | 'trace_flow' | 'check_guard' | 'check_policy' | 'finish';
60
+ export type AttackType = 'sql_injection' | 'nosql_injection' | 'command_injection' | 'xss' | 'ssrf' | 'path_traversal' | 'open_redirect' | 'prototype_pollution' | 'insecure_deserialization' | 'broken_access_control';
61
+ export interface AgentScanTranscriptStep {
62
+ action: AgentScanAction;
63
+ observation: string;
64
+ }
65
+ export interface AgentScanBudget {
66
+ stepsRemaining: number;
67
+ costSpentUsd: number;
68
+ costCapUsd: number;
69
+ }
70
+ export interface AgentScanTarget {
71
+ filePath: string;
72
+ language: string;
73
+ fileContent: string;
74
+ endpointContext?: unknown;
75
+ }
76
+ export interface AgentScanStartResponse {
77
+ runId: string;
78
+ budget: AgentScanBudget;
79
+ scanCredits: number;
80
+ refundId: string;
81
+ }
82
+ export interface AgentScanStepRequest {
83
+ runId: string;
84
+ target: AgentScanTarget;
85
+ transcript: AgentScanTranscriptStep[];
86
+ budget: AgentScanBudget;
87
+ }
88
+ export interface AgentScanStepResponse {
89
+ next: AgentScanAction | null;
90
+ costUsd: number;
91
+ tokens: number;
92
+ degraded: boolean;
93
+ costCapped: boolean;
94
+ stepsRemaining: number;
95
+ }
96
+ export interface AgentScanToolRequest {
97
+ runId: string;
98
+ action: AgentScanCheckPolicyAction;
99
+ target: AgentScanTarget;
100
+ }
101
+ export interface AgentScanToolResponse {
102
+ observation: string;
103
+ }
104
+ export type AgentScanRunStatus = 'completed' | 'capped' | 'degraded' | 'spawn_failed' | 'cancelled';
105
+ export interface AgentScanResult {
106
+ status: AgentScanRunStatus;
107
+ findings: AgentScanFinding[];
108
+ summary?: string;
109
+ transcript: AgentScanTranscriptStep[];
110
+ stepsUsed: number;
111
+ costSpentUsd: number;
112
+ error?: string;
113
+ }
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ /**
3
+ * Scan-side agent — wire contract mirror.
4
+ *
5
+ * Mirror: api/src/attacker/agentScanProtocol.ts — keep string values in step.
6
+ * Types are duplicated (not shared) between the API and MCP repos.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.AGENT_SCAN_DEFAULTS = void 0;
10
+ exports.AGENT_SCAN_DEFAULTS = {
11
+ maxSteps: 20,
12
+ costCapUsd: 0.40,
13
+ wallClockMs: 180_000,
14
+ perStepEstimateUsd: 0.08,
15
+ creditsPerRun: 5,
16
+ dailyRunLimit: 20,
17
+ };
18
+ //# sourceMappingURL=agentScanProtocol.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agentScanProtocol.js","sourceRoot":"","sources":["../../src/attack/agentScanProtocol.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEU,QAAA,mBAAmB,GAAG;IAC/B,QAAQ,EAAE,EAAE;IACZ,UAAU,EAAE,IAAI;IAChB,WAAW,EAAE,OAAO;IACpB,kBAAkB,EAAE,IAAI;IACxB,aAAa,EAAE,CAAC;IAChB,aAAa,EAAE,EAAE;CACX,CAAC"}
@@ -43,6 +43,7 @@ const attack_1 = require("../tools/attack");
43
43
  const scanDependencies_1 = require("../tools/scanDependencies");
44
44
  const scanBatch_1 = require("../tools/scanBatch");
45
45
  const scanSecrets_1 = require("../tools/scanSecrets");
46
+ const agentScan_1 = require("../tools/agentScan");
46
47
  const PROTOCOL_VERSION = '2025-03-26';
47
48
  const SERVER_NAME = 'securecode-mcp';
48
49
  const SERVER_VERSION = '0.2.0';
@@ -74,6 +75,7 @@ const TOOL_HANDLERS = {
74
75
  'securecode.scan-dependencies': scanDependencies_1.toolScanDependencies,
75
76
  'securecode.scan-batch': scanBatch_1.toolScanBatch,
76
77
  'securecode.scan-secrets': scanSecrets_1.toolScanSecrets,
78
+ 'securecode.agent-scan': agentScan_1.toolAgentScan,
77
79
  };
78
80
  function validateArgs(tool, args) {
79
81
  const schema = tool.inputSchema;
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6IA,kCA4CC;AAzLD,mDAAqC;AAErC,mCAAgC;AAChC,wCAAyC;AACzC,sCAAuC;AACvC,sCAAuC;AACvC,4CAA6C;AAC7C,gEAAiE;AACjE,kDAAmD;AACnD,sDAAuD;AAEvD,MAAM,gBAAgB,GAAG,YAAY,CAAC;AACtC,MAAM,WAAW,GAAG,gBAAgB,CAAC;AACrC,MAAM,cAAc,GAAG,OAAO,CAAC;AAE/B,IAAI,WAAW,GAAG,KAAK,CAAC;AAExB,SAAS,IAAI,CAAC,GAA2E;IACrF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;AACrD,CAAC;AAED,SAAS,MAAM,CAAC,EAA0B,EAAE,KAAc;IACtD,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;AAChD,CAAC;AAED,SAAS,KAAK,CAAC,EAA0B,EAAE,IAAY,EAAE,OAAe,EAAE,IAAc;IACpF,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;AACjE,CAAC;AAED,wFAAwF;AACxF,SAAS,YAAY,CAAC,aAA0C,EAAE,QAAgB,EAAE,KAAa,EAAE,OAAe;IAC9G,IAAI,aAAa,KAAK,SAAS;QAAE,OAAO;IACxC,IAAI,CAAC;QACD,OAAO,EAAE,KAAK;QACd,MAAM,EAAE,wBAAwB;QAChC,MAAM,EAAE,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE;KACtD,CAAC,CAAC;AACP,CAAC;AAED,MAAM,aAAa,GAAwE;IACvF,iBAAiB,EAAE,eAAQ;IAC3B,gBAAgB,EAAE,aAAO;IACzB,gBAAgB,EAAE,aAAO;IACzB,mBAAmB,EAAE,mBAAU;IAC/B,8BAA8B,EAAE,uCAAoB;IACpD,uBAAuB,EAAE,yBAAa;IACtC,yBAAyB,EAAE,6BAAe;CAC7C,CAAC;AAEF,SAAS,YAAY,CAAC,IAAa,EAAE,IAAS;IAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,WAGnB,CAAC;IACF,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC;IACtC,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;QACvC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;YAClD,OAAO,+BAA+B,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,CAAC;QACpE,CAAC;IACL,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/C,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC;QACnC,IAAI,CAAC,QAAQ,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;YAAE,SAAS;QACjE,MAAM,EAAE,GACJ,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC;YACnD,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;gBAC7E,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC;oBACrD,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;wBAC5E,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;4BAC7C,IAAI,CAAC;QACT,IAAI,CAAC,EAAE,EAAE,CAAC;YACN,OAAO,cAAc,IAAI,QAAQ,IAAI,CAAC,IAAI,cAAc,QAAQ,SAAS,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,KAAK,GAAG,CAAC;QAC9H,CAAC;IACL,CAAC;IACD,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,GAAkB,EAAE,GAAmB;IAChE,MAAM,EAAE,GAAG,GAAG,CAAC,EAAE,IAAI,IAAI,CAAC;IAC1B,IAAI,CAAC;QACD,QAAQ,GAAG,CAAC,MAAM,EAAE,CAAC;YACjB,KAAK,YAAY,CAAC,CAAC,CAAC;gBAChB,WAAW,GAAG,IAAI,CAAC;gBACnB,OAAO;oBACH,OAAO,EAAE,KAAK,EAAE,EAAE;oBAClB,MAAM,EAAE;wBACJ,eAAe,EAAE,gBAAgB;wBACjC,YAAY,EAAE,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE;wBAC/C,UAAU,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,cAAc,EAAE;qBAC7D;iBACJ,CAAC;YACN,CAAC;YACD,KAAK,2BAA2B,CAAC,CAAC,CAAC;gBAC/B,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;YACxC,CAAC;YACD,KAAK,YAAY,CAAC,CAAC,CAAC;gBAChB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,aAAK,EAAE,EAAE,CAAC;YAC5D,CAAC;YACD,KAAK,YAAY,CAAC,CAAC,CAAC;gBAChB,MAAM,MAAM,GAAG,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAAoF,CAAC;gBACrH,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;gBACzB,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC;gBACpC,MAAM,aAAa,GAAG,MAAM,CAAC,KAAK,EAAE,aAAa,CAAC;gBAClD,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBACvD,IAAI,CAAC,OAAO,EAAE,CAAC;oBACX,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,iBAAiB,IAAI,EAAE,EAAE,EAAE,CAAC;gBAC7F,CAAC;gBACD,MAAM,OAAO,GAAG,aAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;gBACnD,IAAI,CAAC,OAAO,EAAE,CAAC;oBACX,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,iBAAiB,IAAI,EAAE,EAAE,EAAE,CAAC;gBAC7F,CAAC;gBACD,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;gBAC5C,IAAI,OAAO,EAAE,CAAC;oBACV,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC;gBAC7E,CAAC;gBACD,iDAAiD;gBACjD,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;oBAC9B,IAAI,CAAC,SAAS,GAAG,CAAC,QAAgB,EAAE,KAAa,EAAE,OAAe,EAAE,EAAE,CAClE,YAAY,CAAC,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;gBAC9D,CAAC;gBACD,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;gBAC7C,OAAO;oBACH,OAAO,EAAE,KAAK,EAAE,EAAE;oBAClB,MAAM,EAAE;wBACJ,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;qBAC1E;iBACJ,CAAC;YACN,CAAC;YACD,OAAO,CAAC,CAAC,CAAC;gBACN,IAAI,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;oBAC1C,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;gBACxC,CAAC;gBACD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,qBAAqB,GAAG,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC;YACvG,CAAC;QACL,CAAC;IACL,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAChB,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC;QAChC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;IACxF,CAAC;AACL,CAAC;AAED,SAAgB,WAAW,CAAC,GAAkB;IAC1C,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;IAE/E,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;QAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO;YAAE,OAAO;QAErB,IAAI,MAAe,CAAC;QACpB,IAAI,CAAC;YACD,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACjC,CAAC;QAAC,MAAM,CAAC;YACL,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;YACnC,OAAO;QACX,CAAC;QAED,IACI,MAAM,KAAK,IAAI;YACf,OAAO,MAAM,KAAK,QAAQ;YAC1B,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YACrB,OAAQ,MAAyB,CAAC,MAAM,KAAK,QAAQ,EACvD,CAAC;YACC,MAAM,OAAO,GACT,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;gBAC1D,CAAC,CAAE,MAAyB,CAAC,EAAE,IAAI,IAAI;gBACvC,CAAC,CAAC,IAAI,CAAC;YACf,KAAK,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC;YAC1C,OAAO;QACX,CAAC;QAED,MAAM,GAAG,GAAG,MAAwB,CAAC;QACrC,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;YACjC,IAAI,GAAG,CAAC,EAAE,KAAK,SAAS,IAAI,GAAG,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC;gBAC1C,IAAI,CAAC,GAAG,CAAC,CAAC;YACd,CAAC;QACL,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YACb,IAAI,GAAG,CAAC,EAAE,KAAK,SAAS,IAAI,GAAG,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC;gBAC1C,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YACtD,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;QAChB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"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"}
package/dist/mcp/tools.js CHANGED
@@ -177,5 +177,26 @@ exports.TOOLS = [
177
177
  },
178
178
  },
179
179
  },
180
+ {
181
+ name: 'securecode.agent-scan',
182
+ description: 'Agent-mode scan: an AI investigator that reads files, traces data flows, checks guards, and compares endpoint policies to find vulnerabilities. Slower but deeper than a deep scan. The agent replaces the Scout phase and its findings are verified by the Juror. Uses 5 scan credits. Best for complex access-control and cross-file vulnerabilities.',
183
+ inputSchema: {
184
+ type: 'object',
185
+ properties: {
186
+ code: {
187
+ type: 'string',
188
+ description: 'Source code to scan (if filePath is omitted).',
189
+ },
190
+ filePath: {
191
+ type: 'string',
192
+ description: 'Workspace-relative path to the file to scan (reads from disk within the workspace root).',
193
+ },
194
+ language: {
195
+ type: 'string',
196
+ description: 'Language id (javascript, typescript, python, php). Inferred from filePath if omitted.',
197
+ },
198
+ },
199
+ },
200
+ },
180
201
  ];
181
202
  //# sourceMappingURL=tools.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/mcp/tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/mcp/tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * securecode.agent-scan MCP tool — agent-mode scan.
3
+ *
4
+ * An AI investigator that reads files, traces data flows, checks guards,
5
+ * and compares endpoint policies to find vulnerabilities. Slower but deeper
6
+ * than a deep scan. The agent replaces the Scout; its findings are verified
7
+ * by the existing Juror + Phase 3 pipeline.
8
+ *
9
+ * Flow:
10
+ * 1. Resolve code + language from filePath
11
+ * 2. Build endpoint context from the project map
12
+ * 3. Run the agent loop (POST /agent/scan/start + /step loop)
13
+ * 4. Map agent findings → CandidateContext[]
14
+ * 5. POST /scan with scanDepth: 'agent' + candidateContexts (skips Scout,
15
+ * Juror + Phase 3 verify the agent's candidates)
16
+ * 6. Return merged result (agent findings + Juror-verified findings)
17
+ */
18
+ import type { ServerContext } from '../mcp/types';
19
+ export declare function toolAgentScan(ctx: ServerContext, args: any): Promise<unknown>;
@@ -0,0 +1,122 @@
1
+ "use strict";
2
+ /**
3
+ * securecode.agent-scan MCP tool — agent-mode scan.
4
+ *
5
+ * An AI investigator that reads files, traces data flows, checks guards,
6
+ * and compares endpoint policies to find vulnerabilities. Slower but deeper
7
+ * than a deep scan. The agent replaces the Scout; its findings are verified
8
+ * by the existing Juror + Phase 3 pipeline.
9
+ *
10
+ * Flow:
11
+ * 1. Resolve code + language from filePath
12
+ * 2. Build endpoint context from the project map
13
+ * 3. Run the agent loop (POST /agent/scan/start + /step loop)
14
+ * 4. Map agent findings → CandidateContext[]
15
+ * 5. POST /scan with scanDepth: 'agent' + candidateContexts (skips Scout,
16
+ * Juror + Phase 3 verify the agent's candidates)
17
+ * 6. Return merged result (agent findings + Juror-verified findings)
18
+ */
19
+ Object.defineProperty(exports, "__esModule", { value: true });
20
+ exports.toolAgentScan = toolAgentScan;
21
+ const client_1 = require("../api/client");
22
+ const files_1 = require("../utils/files");
23
+ const mapContext_1 = require("../project-map/mapContext");
24
+ const agentScanLoop_1 = require("../attack/agentScanLoop");
25
+ function mapFindingsToCandidates(findings) {
26
+ return findings.map(f => ({
27
+ line: f.line,
28
+ lineEnd: f.lineEnd,
29
+ type: f.type,
30
+ snippet: f.evidence,
31
+ definitionContext: f.why,
32
+ }));
33
+ }
34
+ async function toolAgentScan(ctx, args) {
35
+ const progress = args._progress;
36
+ // 1. Resolve code + language
37
+ let code;
38
+ let language;
39
+ let filePath;
40
+ if (args.filePath) {
41
+ filePath = args.filePath;
42
+ const fileResult = (0, files_1.readFileFromWorkspace)(ctx.workspaceRoot, args.filePath);
43
+ code = fileResult.code;
44
+ language = args.language || fileResult.language;
45
+ }
46
+ else if (args.code) {
47
+ code = args.code;
48
+ language = args.language || 'javascript';
49
+ }
50
+ else {
51
+ throw new Error('Either filePath or code must be provided.');
52
+ }
53
+ // 2. Build endpoint context from the project map
54
+ let endpointContext = [];
55
+ if (filePath) {
56
+ try {
57
+ endpointContext = await (0, mapContext_1.getEndpointContextForFile)(filePath, ctx.workspaceRoot);
58
+ }
59
+ catch {
60
+ // best-effort — proceed without endpoint context
61
+ }
62
+ }
63
+ // 3. Run the agent loop
64
+ const target = {
65
+ filePath: filePath || 'inline-code',
66
+ language,
67
+ fileContent: code,
68
+ endpointContext,
69
+ };
70
+ const agentResult = await (0, agentScanLoop_1.runAgentScan)(ctx, target, {
71
+ onProgress: (steps, max, msg) => {
72
+ if (progress)
73
+ progress(steps, max, msg);
74
+ },
75
+ });
76
+ if (agentResult.status === 'spawn_failed') {
77
+ throw new Error(agentResult.error || 'Agent scan failed to start.');
78
+ }
79
+ // 4. Map agent findings → CandidateContext[]
80
+ const candidateContexts = mapFindingsToCandidates(agentResult.findings);
81
+ // 5. If no findings, return early
82
+ if (candidateContexts.length === 0) {
83
+ return {
84
+ status: agentResult.status,
85
+ summary: agentResult.summary || 'Agent completed with no findings.',
86
+ findings: [],
87
+ agentFindings: agentResult.findings,
88
+ stepsUsed: agentResult.stepsUsed,
89
+ costSpentUsd: agentResult.costSpentUsd,
90
+ transcript: agentResult.transcript,
91
+ };
92
+ }
93
+ // 6. POST /scan with scanDepth: 'agent' + candidateContexts
94
+ // This skips Scout and sends the agent's candidates directly to Juror
95
+ // + Phase 3 for verification.
96
+ const client = new client_1.ApiClient({ baseUrl: ctx.apiUrl, token: ctx.apiToken });
97
+ const scanResp = await client.postJson('/scan', {
98
+ code,
99
+ language,
100
+ ...(filePath ? { filePath } : {}),
101
+ scanDepth: 'agent',
102
+ candidateContexts,
103
+ ...(endpointContext.length > 0 ? { endpointContext } : {}),
104
+ });
105
+ // 7. Return merged result
106
+ return {
107
+ status: agentResult.status,
108
+ summary: agentResult.summary,
109
+ agentFindings: agentResult.findings,
110
+ verifiedFindings: scanResp.finalFindings || [],
111
+ allFindings: scanResp.findings || [],
112
+ scanId: scanResp.scanId,
113
+ scanType: scanResp.scanType,
114
+ degraded: scanResp.degraded,
115
+ scanCredits: scanResp.scanCredits,
116
+ plan: scanResp.plan,
117
+ stepsUsed: agentResult.stepsUsed,
118
+ costSpentUsd: agentResult.costSpentUsd,
119
+ transcript: agentResult.transcript,
120
+ };
121
+ }
122
+ //# sourceMappingURL=agentScan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agentScan.js","sourceRoot":"","sources":["../../src/tools/agentScan.ts"],"names":[],"mappings":"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"}
@@ -44,6 +44,7 @@ exports.toolScanBatch = toolScanBatch;
44
44
  */
45
45
  const fs = __importStar(require("fs"));
46
46
  const path = __importStar(require("path"));
47
+ const crypto_1 = require("crypto");
47
48
  const client_1 = require("../api/client");
48
49
  const files_1 = require("../utils/files");
49
50
  const ignore_1 = require("../utils/ignore");
@@ -51,6 +52,8 @@ const sinkFinder_1 = require("../project-map/sinkFinder");
51
52
  const taintTracker_1 = require("../project-map/taintTracker");
52
53
  const guardEvaluator_1 = require("../project-map/guardEvaluator");
53
54
  const parserLoader_1 = require("../project-map/parserLoader");
55
+ const mapBuilder_1 = require("../project-map/mapBuilder");
56
+ const cache_1 = require("../project-map/cache");
54
57
  const MAX_FILE_SIZE = 1024 * 1024; // 1 MB
55
58
  const DEFAULT_MAX_FILES = 200;
56
59
  const INTER_FILE_DELAY_MS = 3000; // 3s cooldown between scans to prevent API queue buildup
@@ -225,6 +228,28 @@ async function toolScanBatch(ctx, args) {
225
228
  };
226
229
  }
227
230
  const client = new client_1.ApiClient({ baseUrl: ctx.apiUrl, token: ctx.apiToken });
231
+ // Build and upload the project map so the API can extract cross-file
232
+ // context (endpointContext + relatedFiles) for each file in the batch.
233
+ // Best-effort: if map building or upload fails, scans proceed without it.
234
+ let workspaceId;
235
+ try {
236
+ progressFn?.(0, files.length, 'Building project map...');
237
+ let map = (0, cache_1.readCache)(ctx.workspaceRoot);
238
+ if (!map) {
239
+ const result = await (0, mapBuilder_1.buildProjectMap)({ workspaceRoot: ctx.workspaceRoot });
240
+ (0, cache_1.writeCache)(ctx.workspaceRoot, result.map);
241
+ map = result.map;
242
+ }
243
+ workspaceId = (0, crypto_1.createHash)('sha256')
244
+ .update(ctx.workspaceRoot + ':' + (map.builtAt || Date.now()))
245
+ .digest('hex')
246
+ .substring(0, 16);
247
+ await client.postJson('/map', { workspaceId, map });
248
+ progressFn?.(0, files.length, `Project map uploaded (${(map.endpoints || []).length} endpoints)`);
249
+ }
250
+ catch {
251
+ // Best-effort: map upload is optional
252
+ }
228
253
  const results = [];
229
254
  let totalFindings = 0;
230
255
  const bySeverity = { critical: 0, high: 0, medium: 0, low: 0 };
@@ -262,6 +287,7 @@ async function toolScanBatch(ctx, args) {
262
287
  filePath,
263
288
  scanDepth: 'auto',
264
289
  ...(deterministicFacts && { deterministicFacts }),
290
+ ...(workspaceId && { workspaceId }),
265
291
  });
266
292
  const findings = mapFindings(data);
267
293
  totalFindings += findings.length;
@@ -1 +1 @@
1
- {"version":3,"file":"scanBatch.js","sourceRoot":"","sources":["../../src/tools/scanBatch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scanBatch.js","sourceRoot":"","sources":["../../src/tools/scanBatch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Code search utility — wraps ripgrep (rg) for fast workspace-wide search.
3
+ * Falls back to recursive grep if rg is not available.
4
+ *
5
+ * Returns matching lines with file paths and line numbers, capped at maxHits.
6
+ */
7
+ export interface SearchHit {
8
+ path: string;
9
+ line: number;
10
+ text: string;
11
+ }
12
+ export interface SearchResult {
13
+ hits: SearchHit[];
14
+ total: number;
15
+ truncated: boolean;
16
+ }
17
+ export declare function searchCode(workspaceRoot: string, pattern: string, glob?: string): Promise<SearchResult>;
18
+ export declare function formatSearchResult(result: SearchResult): string;
@@ -0,0 +1,173 @@
1
+ "use strict";
2
+ /**
3
+ * Code search utility — wraps ripgrep (rg) for fast workspace-wide search.
4
+ * Falls back to recursive grep if rg is not available.
5
+ *
6
+ * Returns matching lines with file paths and line numbers, capped at maxHits.
7
+ */
8
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
9
+ if (k2 === undefined) k2 = k;
10
+ var desc = Object.getOwnPropertyDescriptor(m, k);
11
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
12
+ desc = { enumerable: true, get: function() { return m[k]; } };
13
+ }
14
+ Object.defineProperty(o, k2, desc);
15
+ }) : (function(o, m, k, k2) {
16
+ if (k2 === undefined) k2 = k;
17
+ o[k2] = m[k];
18
+ }));
19
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
20
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
21
+ }) : function(o, v) {
22
+ o["default"] = v;
23
+ });
24
+ var __importStar = (this && this.__importStar) || (function () {
25
+ var ownKeys = function(o) {
26
+ ownKeys = Object.getOwnPropertyNames || function (o) {
27
+ var ar = [];
28
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
29
+ return ar;
30
+ };
31
+ return ownKeys(o);
32
+ };
33
+ return function (mod) {
34
+ if (mod && mod.__esModule) return mod;
35
+ var result = {};
36
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
37
+ __setModuleDefault(result, mod);
38
+ return result;
39
+ };
40
+ })();
41
+ Object.defineProperty(exports, "__esModule", { value: true });
42
+ exports.searchCode = searchCode;
43
+ exports.formatSearchResult = formatSearchResult;
44
+ const child_process_1 = require("child_process");
45
+ const path = __importStar(require("path"));
46
+ const MAX_HITS = 50;
47
+ const MAX_LINE_LENGTH = 500;
48
+ function promisifyExecFile(file, args, opts) {
49
+ return new Promise((resolve, reject) => {
50
+ (0, child_process_1.execFile)(file, args, opts, (err, stdout, stderr) => {
51
+ if (err && err.code === 'ENOENT') {
52
+ reject(new Error(`Command not found: ${file}`));
53
+ return;
54
+ }
55
+ resolve({ stdout, stderr, code: err ? err.code : null });
56
+ });
57
+ });
58
+ }
59
+ function hasRipgrep() {
60
+ return new Promise((resolve) => {
61
+ (0, child_process_1.execFile)('rg', ['--version'], (err) => {
62
+ resolve(!err || err.code !== 'ENOENT');
63
+ });
64
+ });
65
+ }
66
+ function trimLine(text) {
67
+ const trimmed = text.trim();
68
+ return trimmed.length > MAX_LINE_LENGTH
69
+ ? trimmed.slice(0, MAX_LINE_LENGTH) + '…'
70
+ : trimmed;
71
+ }
72
+ async function searchWithRipgrep(workspaceRoot, pattern, glob) {
73
+ const args = [
74
+ '--json',
75
+ '--max-count', String(MAX_HITS),
76
+ '--no-heading',
77
+ '--line-number',
78
+ '--ignore-case',
79
+ ];
80
+ if (glob) {
81
+ args.push('--glob', glob);
82
+ }
83
+ args.push('--', pattern, workspaceRoot);
84
+ let result;
85
+ try {
86
+ result = await promisifyExecFile('rg', args, {
87
+ cwd: workspaceRoot,
88
+ maxBuffer: 10 * 1024 * 1024,
89
+ });
90
+ }
91
+ catch (e) {
92
+ if (e.message === 'Command not found: rg')
93
+ throw e;
94
+ result = { stdout: '', stderr: e.message || '', code: e.code || 1 };
95
+ }
96
+ const hits = [];
97
+ for (const line of result.stdout.split('\n')) {
98
+ if (!line.trim())
99
+ continue;
100
+ try {
101
+ const obj = JSON.parse(line);
102
+ if (obj.type === 'match' && obj.data) {
103
+ const relativePath = path.relative(workspaceRoot, obj.data.path.text).replace(/\\/g, '/');
104
+ hits.push({
105
+ path: relativePath,
106
+ line: obj.data.line_number,
107
+ text: trimLine(obj.data.lines.text),
108
+ });
109
+ }
110
+ }
111
+ catch {
112
+ // skip non-JSON lines
113
+ }
114
+ }
115
+ return hits;
116
+ }
117
+ async function searchWithGrep(workspaceRoot, pattern, glob) {
118
+ const args = ['-rn', '-i', '--max-count=50'];
119
+ if (glob) {
120
+ args.push('--include', glob.replace(/^\*\./, '*.'));
121
+ }
122
+ args.push('--', pattern, '.');
123
+ let result;
124
+ try {
125
+ result = await promisifyExecFile('grep', args, {
126
+ cwd: workspaceRoot,
127
+ maxBuffer: 10 * 1024 * 1024,
128
+ });
129
+ }
130
+ catch (e) {
131
+ if (e.message === 'Command not found: grep')
132
+ throw e;
133
+ result = { stdout: '', stderr: '', code: e.code || 1 };
134
+ }
135
+ const hits = [];
136
+ for (const line of result.stdout.split('\n').slice(0, MAX_HITS)) {
137
+ const match = line.match(/^([^:]+):(\d+):(.*)$/);
138
+ if (match) {
139
+ hits.push({
140
+ path: match[1].replace(/\\/g, '/'),
141
+ line: parseInt(match[2], 10),
142
+ text: trimLine(match[3]),
143
+ });
144
+ }
145
+ }
146
+ return hits;
147
+ }
148
+ async function searchCode(workspaceRoot, pattern, glob) {
149
+ let hits;
150
+ if (await hasRipgrep()) {
151
+ hits = await searchWithRipgrep(workspaceRoot, pattern, glob);
152
+ }
153
+ else {
154
+ hits = await searchWithGrep(workspaceRoot, pattern, glob);
155
+ }
156
+ const total = hits.length;
157
+ const truncated = total > MAX_HITS;
158
+ if (truncated)
159
+ hits = hits.slice(0, MAX_HITS);
160
+ return { hits, total, truncated };
161
+ }
162
+ function formatSearchResult(result) {
163
+ if (result.hits.length === 0) {
164
+ return 'No matches found.';
165
+ }
166
+ const lines = result.hits.map(h => `${h.path}:${h.line}: ${h.text}`);
167
+ let output = lines.join('\n');
168
+ if (result.truncated) {
169
+ output += `\n… (${result.total} total matches, showing first ${MAX_HITS})`;
170
+ }
171
+ return output;
172
+ }
173
+ //# sourceMappingURL=searchCode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"searchCode.js","sourceRoot":"","sources":["../../src/utils/searchCode.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@securecode-ai/mcp",
3
- "version": "0.3.7",
3
+ "version": "0.3.9",
4
4
  "description": "Standalone SecureCode MCP server — scan, map, fix, and attack tools for AI coding assistants. Works without the VS Code extension.",
5
5
  "main": "dist/index.js",
6
6
  "bin": {