projscan 1.4.0 → 1.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +24 -7
- package/dist/cli/commands/applyFix.d.ts +7 -0
- package/dist/cli/commands/applyFix.js +113 -0
- package/dist/cli/commands/applyFix.js.map +1 -0
- package/dist/cli/commands/coverage.js +13 -0
- package/dist/cli/commands/coverage.js.map +1 -1
- package/dist/cli/commands/doctor.js +18 -2
- package/dist/cli/commands/doctor.js.map +1 -1
- package/dist/cli/commands/explain.js +1 -0
- package/dist/cli/commands/explain.js.map +1 -1
- package/dist/cli/commands/impact.js +25 -1
- package/dist/cli/commands/impact.js.map +1 -1
- package/dist/cli/commands/init.d.ts +6 -0
- package/dist/cli/commands/init.js +70 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/installHook.d.ts +9 -0
- package/dist/cli/commands/installHook.js +90 -0
- package/dist/cli/commands/installHook.js.map +1 -0
- package/dist/cli/commands/memory.d.ts +11 -0
- package/dist/cli/commands/memory.js +175 -0
- package/dist/cli/commands/memory.js.map +1 -0
- package/dist/cli/commands/taint.d.ts +6 -0
- package/dist/cli/commands/taint.js +74 -0
- package/dist/cli/commands/taint.js.map +1 -0
- package/dist/cli/commands/workspace.d.ts +11 -0
- package/dist/cli/commands/workspace.js +115 -0
- package/dist/cli/commands/workspace.js.map +1 -0
- package/dist/cli/index.js +12 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/core/applyFix.d.ts +52 -0
- package/dist/core/applyFix.js +220 -0
- package/dist/core/applyFix.js.map +1 -0
- package/dist/core/ast.d.ts +9 -0
- package/dist/core/ast.js +35 -4
- package/dist/core/ast.js.map +1 -1
- package/dist/core/codeGraph.js +190 -241
- package/dist/core/codeGraph.js.map +1 -1
- package/dist/core/fileInspector.js +40 -44
- package/dist/core/fileInspector.js.map +1 -1
- package/dist/core/fixSuggest.d.ts +6 -0
- package/dist/core/fixSuggest.js +195 -0
- package/dist/core/fixSuggest.js.map +1 -1
- package/dist/core/hotspotAnalyzer.js +65 -19
- package/dist/core/hotspotAnalyzer.js.map +1 -1
- package/dist/core/impact.d.ts +8 -0
- package/dist/core/impact.js +41 -3
- package/dist/core/impact.js.map +1 -1
- package/dist/core/indexCache.js +4 -1
- package/dist/core/indexCache.js.map +1 -1
- package/dist/core/issueEngine.js +24 -0
- package/dist/core/issueEngine.js.map +1 -1
- package/dist/core/languages/csharpImports.js +6 -4
- package/dist/core/languages/csharpImports.js.map +1 -1
- package/dist/core/memory.d.ts +154 -0
- package/dist/core/memory.js +277 -0
- package/dist/core/memory.js.map +1 -0
- package/dist/core/review.d.ts +25 -1
- package/dist/core/review.js +133 -2
- package/dist/core/review.js.map +1 -1
- package/dist/core/taint.d.ts +91 -0
- package/dist/core/taint.js +185 -0
- package/dist/core/taint.js.map +1 -0
- package/dist/core/workspace.d.ts +62 -0
- package/dist/core/workspace.js +127 -0
- package/dist/core/workspace.js.map +1 -0
- package/dist/mcp/prompts.js +274 -0
- package/dist/mcp/prompts.js.map +1 -1
- package/dist/mcp/server.js +162 -146
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/tokenBudget.d.ts +22 -0
- package/dist/mcp/tokenBudget.js +26 -0
- package/dist/mcp/tokenBudget.js.map +1 -1
- package/dist/mcp/tools/applyFix.d.ts +16 -0
- package/dist/mcp/tools/applyFix.js +91 -0
- package/dist/mcp/tools/applyFix.js.map +1 -0
- package/dist/mcp/tools/doctor.js +65 -2
- package/dist/mcp/tools/doctor.js.map +1 -1
- package/dist/mcp/tools/explain.js +4 -3
- package/dist/mcp/tools/explain.js.map +1 -1
- package/dist/mcp/tools/explainIssue.js +3 -2
- package/dist/mcp/tools/explainIssue.js.map +1 -1
- package/dist/mcp/tools/file.js +3 -2
- package/dist/mcp/tools/file.js.map +1 -1
- package/dist/mcp/tools/graph.js +16 -11
- package/dist/mcp/tools/graph.js.map +1 -1
- package/dist/mcp/tools/impact.js +36 -3
- package/dist/mcp/tools/impact.js.map +1 -1
- package/dist/mcp/tools/memory.d.ts +19 -0
- package/dist/mcp/tools/memory.js +134 -0
- package/dist/mcp/tools/memory.js.map +1 -0
- package/dist/mcp/tools/review.js +25 -4
- package/dist/mcp/tools/review.js.map +1 -1
- package/dist/mcp/tools/taint.d.ts +15 -0
- package/dist/mcp/tools/taint.js +67 -0
- package/dist/mcp/tools/taint.js.map +1 -0
- package/dist/mcp/tools/upgrade.js +3 -2
- package/dist/mcp/tools/upgrade.js.map +1 -1
- package/dist/mcp/tools/workspaceGraph.d.ts +18 -0
- package/dist/mcp/tools/workspaceGraph.js +188 -0
- package/dist/mcp/tools/workspaceGraph.js.map +1 -0
- package/dist/mcp/tools.js +8 -0
- package/dist/mcp/tools.js.map +1 -1
- package/dist/reporters/consoleReporter.d.ts +12 -1
- package/dist/reporters/consoleReporter.js +289 -179
- package/dist/reporters/consoleReporter.js.map +1 -1
- package/dist/reporters/markdownReporter.js +185 -128
- package/dist/reporters/markdownReporter.js.map +1 -1
- package/dist/tool-manifest.json +129 -6
- package/dist/types.d.ts +67 -0
- package/dist/utils/config.js +93 -53
- package/dist/utils/config.js.map +1 -1
- package/package.json +9 -2
package/dist/mcp/server.js
CHANGED
|
@@ -5,7 +5,7 @@ import { fileURLToPath } from 'node:url';
|
|
|
5
5
|
import { getToolDefinitions, getToolHandler } from './tools.js';
|
|
6
6
|
import { getPromptDefinitions, getPrompt } from './prompts.js';
|
|
7
7
|
import { getResourceDefinitions, readResource } from './resources.js';
|
|
8
|
-
import { applyBudget } from './tokenBudget.js';
|
|
8
|
+
import { applyBudget, attachCostSidecar, estimateTokens } from './tokenBudget.js';
|
|
9
9
|
import { withProgress } from './progress.js';
|
|
10
10
|
import { toContentBlocks } from './chunker.js';
|
|
11
11
|
import { startWatcher } from '../core/watcher.js';
|
|
@@ -57,39 +57,11 @@ export function createMcpServer(rootPath, options = {}) {
|
|
|
57
57
|
}
|
|
58
58
|
async function dispatch(request) {
|
|
59
59
|
const id = request.id ?? null;
|
|
60
|
-
// Notifications (no id) - no response expected.
|
|
61
60
|
const isNotification = request.id === undefined || request.id === null;
|
|
62
61
|
try {
|
|
63
62
|
switch (request.method) {
|
|
64
|
-
case 'initialize':
|
|
65
|
-
|
|
66
|
-
initialized = true;
|
|
67
|
-
// Negotiate: echo the client's version if we support it; otherwise
|
|
68
|
-
// respond with our newest version.
|
|
69
|
-
const requested = params.protocolVersion;
|
|
70
|
-
const negotiated = requested && SUPPORTED_PROTOCOL_VERSIONS.includes(requested)
|
|
71
|
-
? requested
|
|
72
|
-
: PROTOCOL_VERSION;
|
|
73
|
-
if (watchEnabled && !watchStartPromise) {
|
|
74
|
-
watchStartPromise = startFileWatcher();
|
|
75
|
-
}
|
|
76
|
-
return ok(id, {
|
|
77
|
-
protocolVersion: negotiated,
|
|
78
|
-
serverInfo: {
|
|
79
|
-
name: 'projscan',
|
|
80
|
-
version: serverVersion,
|
|
81
|
-
},
|
|
82
|
-
capabilities: {
|
|
83
|
-
tools: { listChanged: false },
|
|
84
|
-
prompts: { listChanged: false },
|
|
85
|
-
resources: { listChanged: false, subscribe: false },
|
|
86
|
-
logging: {},
|
|
87
|
-
...(watchEnabled
|
|
88
|
-
? { experimental: { fileChanged: { method: 'notifications/file_changed' } } }
|
|
89
|
-
: {}),
|
|
90
|
-
},
|
|
91
|
-
});
|
|
92
|
-
}
|
|
63
|
+
case 'initialize':
|
|
64
|
+
return handleInitialize(id, request.params);
|
|
93
65
|
case 'notifications/initialized':
|
|
94
66
|
case 'initialized':
|
|
95
67
|
return null;
|
|
@@ -97,124 +69,18 @@ export function createMcpServer(rootPath, options = {}) {
|
|
|
97
69
|
return ok(id, {});
|
|
98
70
|
case 'shutdown':
|
|
99
71
|
return ok(id, null);
|
|
100
|
-
case 'tools/list':
|
|
72
|
+
case 'tools/list':
|
|
101
73
|
return ok(id, { tools: getToolDefinitions() });
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
const name = params.name;
|
|
106
|
-
if (!name) {
|
|
107
|
-
return fail(id, JSONRPC_ERROR.InvalidParams, 'Missing tool name');
|
|
108
|
-
}
|
|
109
|
-
const handler = getToolHandler(name);
|
|
110
|
-
if (!handler) {
|
|
111
|
-
return fail(id, JSONRPC_ERROR.MethodNotFound, `Unknown tool: ${name}`);
|
|
112
|
-
}
|
|
113
|
-
try {
|
|
114
|
-
const args = params.arguments ?? {};
|
|
115
|
-
// Progress emitter: if the client supplied a progressToken AND
|
|
116
|
-
// the transport gave us a notify channel, forward progress events.
|
|
117
|
-
const progressToken = params._meta?.progressToken;
|
|
118
|
-
const emit = progressToken !== undefined && options.notify
|
|
119
|
-
? (progress, total, message) => {
|
|
120
|
-
const payload = JSON.stringify({
|
|
121
|
-
jsonrpc: '2.0',
|
|
122
|
-
method: 'notifications/progress',
|
|
123
|
-
params: {
|
|
124
|
-
progressToken,
|
|
125
|
-
progress,
|
|
126
|
-
...(total !== undefined ? { total } : {}),
|
|
127
|
-
...(message !== undefined ? { message } : {}),
|
|
128
|
-
},
|
|
129
|
-
});
|
|
130
|
-
options.notify(payload);
|
|
131
|
-
}
|
|
132
|
-
: undefined;
|
|
133
|
-
const result = await withProgress(emit, () => handler(args, rootPath));
|
|
134
|
-
// 1.4 — auto-record session touches from any file paths the
|
|
135
|
-
// tool returned, plus an event for the call itself. The
|
|
136
|
-
// session tool itself is excluded so reading the session
|
|
137
|
-
// doesn't pollute it.
|
|
138
|
-
if (name !== 'projscan_session') {
|
|
139
|
-
try {
|
|
140
|
-
const sess = await ensureSession();
|
|
141
|
-
recordEvent(sess, `tool-call:${name}`);
|
|
142
|
-
sessionDirty = true;
|
|
143
|
-
const paths = extractTouchedPaths(result);
|
|
144
|
-
for (const p of paths) {
|
|
145
|
-
recordTouch(sess, p, 'tool-result');
|
|
146
|
-
}
|
|
147
|
-
await persistSessionIfDirty();
|
|
148
|
-
}
|
|
149
|
-
catch {
|
|
150
|
-
// Session is best-effort — never break a tool call.
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
const rawMaxTokens = args.max_tokens;
|
|
154
|
-
const maxTokens = typeof rawMaxTokens === 'number' && Number.isFinite(rawMaxTokens) && rawMaxTokens > 0
|
|
155
|
-
? rawMaxTokens
|
|
156
|
-
: undefined;
|
|
157
|
-
const budgeted = applyBudget(result, maxTokens !== undefined ? { maxTokens } : {});
|
|
158
|
-
const payload = budgeted.truncated
|
|
159
|
-
? attachBudgetSidecar(budgeted.value, {
|
|
160
|
-
truncated: true,
|
|
161
|
-
estimatedTokens: budgeted.estimatedTokens,
|
|
162
|
-
maxTokens,
|
|
163
|
-
})
|
|
164
|
-
: budgeted.value;
|
|
165
|
-
// Opt-in response chunking: agents that want streaming set
|
|
166
|
-
// `stream: true`. Default stays single-block for backcompat.
|
|
167
|
-
const wantsStreaming = args.stream === true;
|
|
168
|
-
const content = wantsStreaming
|
|
169
|
-
? toContentBlocks(payload)
|
|
170
|
-
: [{ type: 'text', text: safeStringify(payload) }];
|
|
171
|
-
return ok(id, {
|
|
172
|
-
content,
|
|
173
|
-
isError: false,
|
|
174
|
-
});
|
|
175
|
-
}
|
|
176
|
-
catch (err) {
|
|
177
|
-
const message = err instanceof Error ? err.message : String(err);
|
|
178
|
-
return ok(id, {
|
|
179
|
-
content: [{ type: 'text', text: `Error: ${message}` }],
|
|
180
|
-
isError: true,
|
|
181
|
-
});
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
case 'prompts/list': {
|
|
74
|
+
case 'tools/call':
|
|
75
|
+
return await handleToolsCall(id, request.params);
|
|
76
|
+
case 'prompts/list':
|
|
185
77
|
return ok(id, { prompts: getPromptDefinitions() });
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
if (!params.name) {
|
|
190
|
-
return fail(id, JSONRPC_ERROR.InvalidParams, 'Missing prompt name');
|
|
191
|
-
}
|
|
192
|
-
try {
|
|
193
|
-
const result = await getPrompt(params.name, params.arguments ?? {}, rootPath);
|
|
194
|
-
return ok(id, result);
|
|
195
|
-
}
|
|
196
|
-
catch (err) {
|
|
197
|
-
const message = err instanceof Error ? err.message : String(err);
|
|
198
|
-
return fail(id, JSONRPC_ERROR.InvalidParams, message);
|
|
199
|
-
}
|
|
200
|
-
}
|
|
201
|
-
case 'resources/list': {
|
|
78
|
+
case 'prompts/get':
|
|
79
|
+
return await handlePromptsGet(id, request.params);
|
|
80
|
+
case 'resources/list':
|
|
202
81
|
return ok(id, { resources: getResourceDefinitions() });
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
const params = (request.params ?? {});
|
|
206
|
-
if (!params.uri) {
|
|
207
|
-
return fail(id, JSONRPC_ERROR.InvalidParams, 'Missing resource uri');
|
|
208
|
-
}
|
|
209
|
-
try {
|
|
210
|
-
const content = await readResource(params.uri, rootPath);
|
|
211
|
-
return ok(id, { contents: [content] });
|
|
212
|
-
}
|
|
213
|
-
catch (err) {
|
|
214
|
-
const message = err instanceof Error ? err.message : String(err);
|
|
215
|
-
return fail(id, JSONRPC_ERROR.InvalidParams, message);
|
|
216
|
-
}
|
|
217
|
-
}
|
|
82
|
+
case 'resources/read':
|
|
83
|
+
return await handleResourcesRead(id, request.params);
|
|
218
84
|
default:
|
|
219
85
|
if (isNotification)
|
|
220
86
|
return null;
|
|
@@ -231,6 +97,156 @@ export function createMcpServer(rootPath, options = {}) {
|
|
|
231
97
|
void initialized;
|
|
232
98
|
}
|
|
233
99
|
}
|
|
100
|
+
function handleInitialize(id, rawParams) {
|
|
101
|
+
const params = (rawParams ?? {});
|
|
102
|
+
initialized = true;
|
|
103
|
+
const requested = params.protocolVersion;
|
|
104
|
+
const negotiated = requested && SUPPORTED_PROTOCOL_VERSIONS.includes(requested) ? requested : PROTOCOL_VERSION;
|
|
105
|
+
if (watchEnabled && !watchStartPromise) {
|
|
106
|
+
watchStartPromise = startFileWatcher();
|
|
107
|
+
}
|
|
108
|
+
return ok(id, {
|
|
109
|
+
protocolVersion: negotiated,
|
|
110
|
+
serverInfo: { name: 'projscan', version: serverVersion },
|
|
111
|
+
capabilities: {
|
|
112
|
+
tools: { listChanged: false },
|
|
113
|
+
prompts: { listChanged: false },
|
|
114
|
+
resources: { listChanged: false, subscribe: false },
|
|
115
|
+
logging: {},
|
|
116
|
+
...(watchEnabled
|
|
117
|
+
? { experimental: { fileChanged: { method: 'notifications/file_changed' } } }
|
|
118
|
+
: {}),
|
|
119
|
+
},
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
async function handleToolsCall(id, rawParams) {
|
|
123
|
+
const params = (rawParams ?? {});
|
|
124
|
+
const name = params.name;
|
|
125
|
+
if (!name)
|
|
126
|
+
return fail(id, JSONRPC_ERROR.InvalidParams, 'Missing tool name');
|
|
127
|
+
const handler = getToolHandler(name);
|
|
128
|
+
if (!handler)
|
|
129
|
+
return fail(id, JSONRPC_ERROR.MethodNotFound, `Unknown tool: ${name}`);
|
|
130
|
+
try {
|
|
131
|
+
const args = params.arguments ?? {};
|
|
132
|
+
const emit = buildProgressEmitter(params._meta?.progressToken);
|
|
133
|
+
const result = await withProgress(emit, () => handler(args, rootPath));
|
|
134
|
+
await recordSessionTouches(name, result);
|
|
135
|
+
const payload = applyBudgetAndCost(result, args);
|
|
136
|
+
const content = formatToolContent(payload, args.stream === true);
|
|
137
|
+
return ok(id, { content, isError: false });
|
|
138
|
+
}
|
|
139
|
+
catch (err) {
|
|
140
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
141
|
+
return ok(id, {
|
|
142
|
+
content: [{ type: 'text', text: `Error: ${message}` }],
|
|
143
|
+
isError: true,
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
async function handlePromptsGet(id, rawParams) {
|
|
148
|
+
const params = (rawParams ?? {});
|
|
149
|
+
if (!params.name)
|
|
150
|
+
return fail(id, JSONRPC_ERROR.InvalidParams, 'Missing prompt name');
|
|
151
|
+
try {
|
|
152
|
+
const result = await getPrompt(params.name, params.arguments ?? {}, rootPath);
|
|
153
|
+
return ok(id, result);
|
|
154
|
+
}
|
|
155
|
+
catch (err) {
|
|
156
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
157
|
+
return fail(id, JSONRPC_ERROR.InvalidParams, message);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
async function handleResourcesRead(id, rawParams) {
|
|
161
|
+
const params = (rawParams ?? {});
|
|
162
|
+
if (!params.uri)
|
|
163
|
+
return fail(id, JSONRPC_ERROR.InvalidParams, 'Missing resource uri');
|
|
164
|
+
try {
|
|
165
|
+
const content = await readResource(params.uri, rootPath);
|
|
166
|
+
return ok(id, { contents: [content] });
|
|
167
|
+
}
|
|
168
|
+
catch (err) {
|
|
169
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
170
|
+
return fail(id, JSONRPC_ERROR.InvalidParams, message);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Build a progress emitter that forwards progress events to the
|
|
175
|
+
* client over the notify channel — IFF the client supplied a
|
|
176
|
+
* progressToken AND the transport gave us a notify channel.
|
|
177
|
+
*/
|
|
178
|
+
function buildProgressEmitter(progressToken) {
|
|
179
|
+
if (progressToken === undefined || !options.notify)
|
|
180
|
+
return undefined;
|
|
181
|
+
const notify = options.notify;
|
|
182
|
+
return (progress, total, message) => {
|
|
183
|
+
const payload = JSON.stringify({
|
|
184
|
+
jsonrpc: '2.0',
|
|
185
|
+
method: 'notifications/progress',
|
|
186
|
+
params: {
|
|
187
|
+
progressToken,
|
|
188
|
+
progress,
|
|
189
|
+
...(total !== undefined ? { total } : {}),
|
|
190
|
+
...(message !== undefined ? { message } : {}),
|
|
191
|
+
},
|
|
192
|
+
});
|
|
193
|
+
notify(payload);
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* 1.4 — record session touches from any file paths the tool surfaced,
|
|
198
|
+
* plus an event for the call itself. Skipped when the call IS for
|
|
199
|
+
* `projscan_session` (don't pollute the read with the read).
|
|
200
|
+
* Best-effort: failures here never break the tool call.
|
|
201
|
+
*/
|
|
202
|
+
async function recordSessionTouches(name, result) {
|
|
203
|
+
if (name === 'projscan_session')
|
|
204
|
+
return;
|
|
205
|
+
try {
|
|
206
|
+
const sess = await ensureSession();
|
|
207
|
+
recordEvent(sess, `tool-call:${name}`);
|
|
208
|
+
sessionDirty = true;
|
|
209
|
+
const paths = extractTouchedPaths(result);
|
|
210
|
+
for (const p of paths)
|
|
211
|
+
recordTouch(sess, p, 'tool-result');
|
|
212
|
+
await persistSessionIfDirty();
|
|
213
|
+
}
|
|
214
|
+
catch {
|
|
215
|
+
// Session is best-effort.
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Apply the agent's `max_tokens` budget (post-hoc truncation) then
|
|
220
|
+
* attach the `_cost` sidecar (1.5+) reflecting the final payload.
|
|
221
|
+
* Budget and cost coexist when both fire; both are non-destructive.
|
|
222
|
+
*/
|
|
223
|
+
function applyBudgetAndCost(result, args) {
|
|
224
|
+
const rawMaxTokens = args.max_tokens;
|
|
225
|
+
const maxTokens = typeof rawMaxTokens === 'number' && Number.isFinite(rawMaxTokens) && rawMaxTokens > 0
|
|
226
|
+
? rawMaxTokens
|
|
227
|
+
: undefined;
|
|
228
|
+
const budgeted = applyBudget(result, maxTokens !== undefined ? { maxTokens } : {});
|
|
229
|
+
const withBudget = budgeted.truncated
|
|
230
|
+
? attachBudgetSidecar(budgeted.value, {
|
|
231
|
+
truncated: true,
|
|
232
|
+
estimatedTokens: budgeted.estimatedTokens,
|
|
233
|
+
maxTokens,
|
|
234
|
+
})
|
|
235
|
+
: budgeted.value;
|
|
236
|
+
const finalEstimatedTokens = estimateTokens(JSON.stringify(withBudget) ?? '');
|
|
237
|
+
return attachCostSidecar(withBudget, finalEstimatedTokens);
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* Format the post-budget payload into MCP content blocks. With
|
|
241
|
+
* `stream: true` the payload is split into multiple blocks (header
|
|
242
|
+
* + N record blocks); the default is a single text block for
|
|
243
|
+
* backwards compatibility.
|
|
244
|
+
*/
|
|
245
|
+
function formatToolContent(payload, wantsStreaming) {
|
|
246
|
+
return wantsStreaming
|
|
247
|
+
? toContentBlocks(payload)
|
|
248
|
+
: [{ type: 'text', text: safeStringify(payload) }];
|
|
249
|
+
}
|
|
234
250
|
async function handleMessage(line) {
|
|
235
251
|
const trimmed = line.trim();
|
|
236
252
|
if (!trimmed)
|
package/dist/mcp/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,3 +23,25 @@ export interface BudgetResult<T> {
|
|
|
23
23
|
* fields and trim them until we fit (or give up and mark truncated).
|
|
24
24
|
*/
|
|
25
25
|
export declare function applyBudget<T>(value: T, options?: BudgetOptions): BudgetResult<T>;
|
|
26
|
+
/**
|
|
27
|
+
* 1.5+ — `_cost` sidecar shape attached to every MCP tool result.
|
|
28
|
+
* `estimatedTokens` is the chars-divided-by-4 approximation of the
|
|
29
|
+
* serialized output's token count. `tier` is set by tools that
|
|
30
|
+
* implement adaptive shaping (e.g., projscan_review) to tell the
|
|
31
|
+
* caller which shape they got.
|
|
32
|
+
*/
|
|
33
|
+
export interface CostSidecar {
|
|
34
|
+
estimatedTokens: number;
|
|
35
|
+
tier?: string;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Attach a `_cost` sidecar to the result. Mirrors the shape of
|
|
39
|
+
* `attachBudgetSidecar` in server.ts so arrays and primitives are
|
|
40
|
+
* wrapped rather than spread (object spread over an array yields a
|
|
41
|
+
* garbled `{ "0": ..., "1": ..., _cost }` object).
|
|
42
|
+
*
|
|
43
|
+
* If the result already has a `tier` field at top level (set by
|
|
44
|
+
* adaptive tools like projscan_review), it's lifted into the sidecar
|
|
45
|
+
* so the agent sees the chosen shape in one place.
|
|
46
|
+
*/
|
|
47
|
+
export declare function attachCostSidecar(value: unknown, estimatedTokens: number): unknown;
|
package/dist/mcp/tokenBudget.js
CHANGED
|
@@ -54,6 +54,32 @@ function safeStringify(value) {
|
|
|
54
54
|
return String(value);
|
|
55
55
|
}
|
|
56
56
|
}
|
|
57
|
+
/**
|
|
58
|
+
* Attach a `_cost` sidecar to the result. Mirrors the shape of
|
|
59
|
+
* `attachBudgetSidecar` in server.ts so arrays and primitives are
|
|
60
|
+
* wrapped rather than spread (object spread over an array yields a
|
|
61
|
+
* garbled `{ "0": ..., "1": ..., _cost }` object).
|
|
62
|
+
*
|
|
63
|
+
* If the result already has a `tier` field at top level (set by
|
|
64
|
+
* adaptive tools like projscan_review), it's lifted into the sidecar
|
|
65
|
+
* so the agent sees the chosen shape in one place.
|
|
66
|
+
*/
|
|
67
|
+
export function attachCostSidecar(value, estimatedTokens) {
|
|
68
|
+
const cost = { estimatedTokens };
|
|
69
|
+
if (value !== null &&
|
|
70
|
+
typeof value === 'object' &&
|
|
71
|
+
!Array.isArray(value) &&
|
|
72
|
+
typeof value.tier === 'string') {
|
|
73
|
+
cost.tier = value.tier;
|
|
74
|
+
}
|
|
75
|
+
if (Array.isArray(value)) {
|
|
76
|
+
return { value, _cost: cost };
|
|
77
|
+
}
|
|
78
|
+
if (value === null || typeof value !== 'object') {
|
|
79
|
+
return { value, _cost: cost };
|
|
80
|
+
}
|
|
81
|
+
return { ...value, _cost: cost };
|
|
82
|
+
}
|
|
57
83
|
/**
|
|
58
84
|
* Find top-level array field names - our convention is that MCP results
|
|
59
85
|
* expose a primary array (hotspots, entries, findings, files) worth
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tokenBudget.js","sourceRoot":"","sources":["../../src/mcp/tokenBudget.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tokenBudget.js","sourceRoot":"","sources":["../../src/mcp/tokenBudget.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { McpTool } from './_shared.js';
|
|
2
|
+
/**
|
|
3
|
+
* `projscan_apply_fix` (1.6+) — closes the suggest-and-apply loop for
|
|
4
|
+
* the small set of issue ids whose templates declare apply support.
|
|
5
|
+
*
|
|
6
|
+
* Default is dry-run: returns the would-change list without writing.
|
|
7
|
+
* Pass `confirm: true` to actually mutate disk. Every applied change
|
|
8
|
+
* gets a rollback record under `.projscan-cache/rollbacks/<id>.json`
|
|
9
|
+
* that can be reversed with `action: "rollback", rollback_id: ...`.
|
|
10
|
+
*
|
|
11
|
+
* Mechanical templates only — no codemods, no semantic rename, no
|
|
12
|
+
* inference. If a template doesn't declare apply support, this tool
|
|
13
|
+
* returns `applicable: false` and points at `projscan_fix_suggest`
|
|
14
|
+
* instead.
|
|
15
|
+
*/
|
|
16
|
+
export declare const applyFixTool: McpTool;
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { scanRepository } from '../../core/repositoryScanner.js';
|
|
2
|
+
import { collectIssues } from '../../core/issueEngine.js';
|
|
3
|
+
import { findIssue, buildApplyPlanForIssue } from '../../core/fixSuggest.js';
|
|
4
|
+
import { executePlan, rollback } from '../../core/applyFix.js';
|
|
5
|
+
/**
|
|
6
|
+
* `projscan_apply_fix` (1.6+) — closes the suggest-and-apply loop for
|
|
7
|
+
* the small set of issue ids whose templates declare apply support.
|
|
8
|
+
*
|
|
9
|
+
* Default is dry-run: returns the would-change list without writing.
|
|
10
|
+
* Pass `confirm: true` to actually mutate disk. Every applied change
|
|
11
|
+
* gets a rollback record under `.projscan-cache/rollbacks/<id>.json`
|
|
12
|
+
* that can be reversed with `action: "rollback", rollback_id: ...`.
|
|
13
|
+
*
|
|
14
|
+
* Mechanical templates only — no codemods, no semantic rename, no
|
|
15
|
+
* inference. If a template doesn't declare apply support, this tool
|
|
16
|
+
* returns `applicable: false` and points at `projscan_fix_suggest`
|
|
17
|
+
* instead.
|
|
18
|
+
*/
|
|
19
|
+
export const applyFixTool = {
|
|
20
|
+
name: 'projscan_apply_fix',
|
|
21
|
+
description: "Apply a mechanical fix for an open issue (1.6+). Default is dry-run; pass confirm:true to write. Every applied change records a rollback id usable via action:'rollback'. Mechanical templates only — semantic rewrites and codemods stay agent-driven.",
|
|
22
|
+
inputSchema: {
|
|
23
|
+
type: 'object',
|
|
24
|
+
properties: {
|
|
25
|
+
action: {
|
|
26
|
+
type: 'string',
|
|
27
|
+
enum: ['apply', 'rollback'],
|
|
28
|
+
description: 'Default "apply". Pass "rollback" with `rollback_id` to reverse a previous apply.',
|
|
29
|
+
},
|
|
30
|
+
issue_id: {
|
|
31
|
+
type: 'string',
|
|
32
|
+
description: '"apply" only — the issue id to fix (from projscan_doctor / projscan_analyze). Required for action:"apply".',
|
|
33
|
+
},
|
|
34
|
+
confirm: {
|
|
35
|
+
type: 'boolean',
|
|
36
|
+
description: '"apply" only — when true, write to disk. When false (default), return the would-change list without writing (dry-run).',
|
|
37
|
+
},
|
|
38
|
+
rollback_id: {
|
|
39
|
+
type: 'string',
|
|
40
|
+
description: '"rollback" only — the id from a prior apply\'s ApplyResult.',
|
|
41
|
+
},
|
|
42
|
+
},
|
|
43
|
+
},
|
|
44
|
+
handler: async (args, rootPath) => {
|
|
45
|
+
const action = typeof args.action === 'string' ? args.action : 'apply';
|
|
46
|
+
if (action === 'rollback') {
|
|
47
|
+
const rollbackId = typeof args.rollback_id === 'string' ? args.rollback_id : '';
|
|
48
|
+
if (!rollbackId) {
|
|
49
|
+
throw new Error('rollback action requires `rollback_id` (from a previous apply\'s ApplyResult).');
|
|
50
|
+
}
|
|
51
|
+
return await rollback(rootPath, rollbackId);
|
|
52
|
+
}
|
|
53
|
+
if (action !== 'apply') {
|
|
54
|
+
throw new Error(`Unknown action "${action}". Valid: apply, rollback.`);
|
|
55
|
+
}
|
|
56
|
+
const issueId = typeof args.issue_id === 'string' ? args.issue_id : '';
|
|
57
|
+
if (!issueId) {
|
|
58
|
+
throw new Error('apply action requires `issue_id`. Get one from projscan_doctor or projscan_analyze (each issue has an `id` field).');
|
|
59
|
+
}
|
|
60
|
+
const confirm = args.confirm === true;
|
|
61
|
+
// Resolve the issue from a fresh doctor run so we always operate
|
|
62
|
+
// against the current project state.
|
|
63
|
+
const scan = await scanRepository(rootPath);
|
|
64
|
+
const issues = await collectIssues(rootPath, scan.files);
|
|
65
|
+
const issue = findIssue(issues, issueId);
|
|
66
|
+
if (!issue) {
|
|
67
|
+
return {
|
|
68
|
+
ok: false,
|
|
69
|
+
applicable: false,
|
|
70
|
+
reason: `No open issue with id "${issueId}" in the current doctor run. The issue may have been resolved or the id may be stale.`,
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
const plan = await buildApplyPlanForIssue(issue, rootPath);
|
|
74
|
+
if (!plan) {
|
|
75
|
+
return {
|
|
76
|
+
ok: false,
|
|
77
|
+
applicable: false,
|
|
78
|
+
reason: `Issue "${issueId}" matched a template but that template does not declare apply support. Use projscan_fix_suggest for the structured guidance instead.`,
|
|
79
|
+
suggestion: 'projscan_fix_suggest',
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
const result = await executePlan(rootPath, plan, { dryRun: !confirm });
|
|
83
|
+
return {
|
|
84
|
+
...result,
|
|
85
|
+
applicable: true,
|
|
86
|
+
issueId,
|
|
87
|
+
summary: plan.summary,
|
|
88
|
+
};
|
|
89
|
+
},
|
|
90
|
+
};
|
|
91
|
+
//# sourceMappingURL=applyFix.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"applyFix.js","sourceRoot":"","sources":["../../../src/mcp/tools/applyFix.ts"],"names":[],"mappings":"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"}
|