@colbymchenry/codegraph-darwin-x64 0.9.4 → 0.9.6
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/lib/dist/bin/codegraph.js +12 -0
- package/lib/dist/bin/codegraph.js.map +1 -1
- package/lib/dist/db/queries.d.ts +1 -0
- package/lib/dist/db/queries.d.ts.map +1 -1
- package/lib/dist/db/queries.js +31 -3
- package/lib/dist/db/queries.js.map +1 -1
- package/lib/dist/extraction/grammars.d.ts +1 -1
- package/lib/dist/extraction/grammars.d.ts.map +1 -1
- package/lib/dist/extraction/grammars.js +29 -1
- package/lib/dist/extraction/grammars.js.map +1 -1
- package/lib/dist/extraction/index.d.ts +15 -2
- package/lib/dist/extraction/index.d.ts.map +1 -1
- package/lib/dist/extraction/index.js +170 -78
- package/lib/dist/extraction/index.js.map +1 -1
- package/lib/dist/extraction/languages/c-cpp.d.ts.map +1 -1
- package/lib/dist/extraction/languages/c-cpp.js +45 -0
- package/lib/dist/extraction/languages/c-cpp.js.map +1 -1
- package/lib/dist/extraction/languages/csharp.d.ts.map +1 -1
- package/lib/dist/extraction/languages/csharp.js +2 -1
- package/lib/dist/extraction/languages/csharp.js.map +1 -1
- package/lib/dist/extraction/languages/go.d.ts.map +1 -1
- package/lib/dist/extraction/languages/go.js +12 -0
- package/lib/dist/extraction/languages/go.js.map +1 -1
- package/lib/dist/extraction/languages/index.d.ts.map +1 -1
- package/lib/dist/extraction/languages/index.js +2 -0
- package/lib/dist/extraction/languages/index.js.map +1 -1
- package/lib/dist/extraction/languages/objc.d.ts +3 -0
- package/lib/dist/extraction/languages/objc.d.ts.map +1 -0
- package/lib/dist/extraction/languages/objc.js +133 -0
- package/lib/dist/extraction/languages/objc.js.map +1 -0
- package/lib/dist/extraction/mybatis-extractor.d.ts +48 -0
- package/lib/dist/extraction/mybatis-extractor.d.ts.map +1 -0
- package/lib/dist/extraction/mybatis-extractor.js +198 -0
- package/lib/dist/extraction/mybatis-extractor.js.map +1 -0
- package/lib/dist/extraction/tree-sitter-types.d.ts +4 -0
- package/lib/dist/extraction/tree-sitter-types.d.ts.map +1 -1
- package/lib/dist/extraction/tree-sitter.d.ts +33 -0
- package/lib/dist/extraction/tree-sitter.d.ts.map +1 -1
- package/lib/dist/extraction/tree-sitter.js +351 -14
- package/lib/dist/extraction/tree-sitter.js.map +1 -1
- package/lib/dist/index.d.ts +21 -2
- package/lib/dist/index.d.ts.map +1 -1
- package/lib/dist/index.js +53 -1
- package/lib/dist/index.js.map +1 -1
- package/lib/dist/installer/index.d.ts +1 -1
- package/lib/dist/installer/index.js +3 -3
- package/lib/dist/installer/index.js.map +1 -1
- package/lib/dist/installer/instructions-template.d.ts +2 -2
- package/lib/dist/installer/instructions-template.d.ts.map +1 -1
- package/lib/dist/installer/instructions-template.js +1 -1
- package/lib/dist/installer/targets/antigravity.d.ts +57 -0
- package/lib/dist/installer/targets/antigravity.d.ts.map +1 -0
- package/lib/dist/installer/targets/antigravity.js +307 -0
- package/lib/dist/installer/targets/antigravity.js.map +1 -0
- package/lib/dist/installer/targets/gemini.d.ts +26 -0
- package/lib/dist/installer/targets/gemini.d.ts.map +1 -0
- package/lib/dist/installer/targets/gemini.js +165 -0
- package/lib/dist/installer/targets/gemini.js.map +1 -0
- package/lib/dist/installer/targets/hermes.d.ts.map +1 -1
- package/lib/dist/installer/targets/hermes.js +57 -3
- package/lib/dist/installer/targets/hermes.js.map +1 -1
- package/lib/dist/installer/targets/kiro.d.ts +27 -0
- package/lib/dist/installer/targets/kiro.d.ts.map +1 -0
- package/lib/dist/installer/targets/kiro.js +196 -0
- package/lib/dist/installer/targets/kiro.js.map +1 -0
- package/lib/dist/installer/targets/registry.d.ts.map +1 -1
- package/lib/dist/installer/targets/registry.js +6 -0
- package/lib/dist/installer/targets/registry.js.map +1 -1
- package/lib/dist/installer/targets/types.d.ts +1 -1
- package/lib/dist/installer/targets/types.d.ts.map +1 -1
- package/lib/dist/mcp/daemon-paths.d.ts +46 -0
- package/lib/dist/mcp/daemon-paths.d.ts.map +1 -0
- package/lib/dist/mcp/daemon-paths.js +125 -0
- package/lib/dist/mcp/daemon-paths.js.map +1 -0
- package/lib/dist/mcp/daemon.d.ts +161 -0
- package/lib/dist/mcp/daemon.d.ts.map +1 -0
- package/lib/dist/mcp/daemon.js +403 -0
- package/lib/dist/mcp/daemon.js.map +1 -0
- package/lib/dist/mcp/engine.d.ts +100 -0
- package/lib/dist/mcp/engine.d.ts.map +1 -0
- package/lib/dist/mcp/engine.js +291 -0
- package/lib/dist/mcp/engine.js.map +1 -0
- package/lib/dist/mcp/index.d.ts +64 -53
- package/lib/dist/mcp/index.d.ts.map +1 -1
- package/lib/dist/mcp/index.js +307 -387
- package/lib/dist/mcp/index.js.map +1 -1
- package/lib/dist/mcp/proxy.d.ts +46 -0
- package/lib/dist/mcp/proxy.d.ts.map +1 -0
- package/lib/dist/mcp/proxy.js +276 -0
- package/lib/dist/mcp/proxy.js.map +1 -0
- package/lib/dist/mcp/server-instructions.d.ts +1 -1
- package/lib/dist/mcp/server-instructions.d.ts.map +1 -1
- package/lib/dist/mcp/server-instructions.js +1 -1
- package/lib/dist/mcp/session.d.ts +67 -0
- package/lib/dist/mcp/session.d.ts.map +1 -0
- package/lib/dist/mcp/session.js +276 -0
- package/lib/dist/mcp/session.js.map +1 -0
- package/lib/dist/mcp/tools.d.ts +49 -0
- package/lib/dist/mcp/tools.d.ts.map +1 -1
- package/lib/dist/mcp/tools.js +253 -17
- package/lib/dist/mcp/tools.js.map +1 -1
- package/lib/dist/mcp/transport.d.ts +111 -29
- package/lib/dist/mcp/transport.d.ts.map +1 -1
- package/lib/dist/mcp/transport.js +181 -71
- package/lib/dist/mcp/transport.js.map +1 -1
- package/lib/dist/mcp/version.d.ts +19 -0
- package/lib/dist/mcp/version.d.ts.map +1 -0
- package/lib/dist/mcp/version.js +71 -0
- package/lib/dist/mcp/version.js.map +1 -0
- package/lib/dist/resolution/callback-synthesizer.d.ts +3 -2
- package/lib/dist/resolution/callback-synthesizer.d.ts.map +1 -1
- package/lib/dist/resolution/callback-synthesizer.js +351 -3
- package/lib/dist/resolution/callback-synthesizer.js.map +1 -1
- package/lib/dist/resolution/frameworks/expo-modules.d.ts +3 -0
- package/lib/dist/resolution/frameworks/expo-modules.d.ts.map +1 -0
- package/lib/dist/resolution/frameworks/expo-modules.js +143 -0
- package/lib/dist/resolution/frameworks/expo-modules.js.map +1 -0
- package/lib/dist/resolution/frameworks/fabric.d.ts +3 -0
- package/lib/dist/resolution/frameworks/fabric.d.ts.map +1 -0
- package/lib/dist/resolution/frameworks/fabric.js +354 -0
- package/lib/dist/resolution/frameworks/fabric.js.map +1 -0
- package/lib/dist/resolution/frameworks/index.d.ts +4 -0
- package/lib/dist/resolution/frameworks/index.d.ts.map +1 -1
- package/lib/dist/resolution/frameworks/index.js +21 -1
- package/lib/dist/resolution/frameworks/index.js.map +1 -1
- package/lib/dist/resolution/frameworks/java.d.ts.map +1 -1
- package/lib/dist/resolution/frameworks/java.js +270 -1
- package/lib/dist/resolution/frameworks/java.js.map +1 -1
- package/lib/dist/resolution/frameworks/nestjs.d.ts.map +1 -1
- package/lib/dist/resolution/frameworks/nestjs.js +324 -0
- package/lib/dist/resolution/frameworks/nestjs.js.map +1 -1
- package/lib/dist/resolution/frameworks/react-native.d.ts +3 -0
- package/lib/dist/resolution/frameworks/react-native.d.ts.map +1 -0
- package/lib/dist/resolution/frameworks/react-native.js +360 -0
- package/lib/dist/resolution/frameworks/react-native.js.map +1 -0
- package/lib/dist/resolution/frameworks/swift-objc.d.ts +37 -0
- package/lib/dist/resolution/frameworks/swift-objc.d.ts.map +1 -0
- package/lib/dist/resolution/frameworks/swift-objc.js +252 -0
- package/lib/dist/resolution/frameworks/swift-objc.js.map +1 -0
- package/lib/dist/resolution/go-module.d.ts +26 -0
- package/lib/dist/resolution/go-module.d.ts.map +1 -0
- package/lib/dist/resolution/go-module.js +78 -0
- package/lib/dist/resolution/go-module.js.map +1 -0
- package/lib/dist/resolution/import-resolver.d.ts +18 -0
- package/lib/dist/resolution/import-resolver.d.ts.map +1 -1
- package/lib/dist/resolution/import-resolver.js +538 -4
- package/lib/dist/resolution/import-resolver.js.map +1 -1
- package/lib/dist/resolution/index.d.ts +10 -0
- package/lib/dist/resolution/index.d.ts.map +1 -1
- package/lib/dist/resolution/index.js +102 -0
- package/lib/dist/resolution/index.js.map +1 -1
- package/lib/dist/resolution/name-matcher.d.ts.map +1 -1
- package/lib/dist/resolution/name-matcher.js +212 -0
- package/lib/dist/resolution/name-matcher.js.map +1 -1
- package/lib/dist/resolution/swift-objc-bridge.d.ts +134 -0
- package/lib/dist/resolution/swift-objc-bridge.d.ts.map +1 -0
- package/lib/dist/resolution/swift-objc-bridge.js +256 -0
- package/lib/dist/resolution/swift-objc-bridge.js.map +1 -0
- package/lib/dist/resolution/types.d.ts +29 -0
- package/lib/dist/resolution/types.d.ts.map +1 -1
- package/lib/dist/sync/index.d.ts +3 -1
- package/lib/dist/sync/index.d.ts.map +1 -1
- package/lib/dist/sync/index.js +8 -1
- package/lib/dist/sync/index.js.map +1 -1
- package/lib/dist/sync/watcher.d.ts +119 -7
- package/lib/dist/sync/watcher.d.ts.map +1 -1
- package/lib/dist/sync/watcher.js +243 -37
- package/lib/dist/sync/watcher.js.map +1 -1
- package/lib/dist/sync/worktree.d.ts +54 -0
- package/lib/dist/sync/worktree.d.ts.map +1 -0
- package/lib/dist/sync/worktree.js +136 -0
- package/lib/dist/sync/worktree.js.map +1 -0
- package/lib/dist/types.d.ts +1 -1
- package/lib/dist/types.d.ts.map +1 -1
- package/lib/dist/types.js +3 -0
- package/lib/dist/types.js.map +1 -1
- package/lib/node_modules/.package-lock.json +29 -1
- package/lib/node_modules/chokidar/LICENSE +21 -0
- package/lib/node_modules/chokidar/README.md +305 -0
- package/lib/node_modules/chokidar/esm/handler.d.ts +90 -0
- package/lib/node_modules/chokidar/esm/handler.js +629 -0
- package/lib/node_modules/chokidar/esm/index.d.ts +215 -0
- package/lib/node_modules/chokidar/esm/index.js +798 -0
- package/lib/node_modules/chokidar/esm/package.json +1 -0
- package/lib/node_modules/chokidar/handler.d.ts +90 -0
- package/lib/node_modules/chokidar/handler.js +635 -0
- package/lib/node_modules/chokidar/index.d.ts +215 -0
- package/lib/node_modules/chokidar/index.js +804 -0
- package/lib/node_modules/chokidar/package.json +69 -0
- package/lib/node_modules/readdirp/LICENSE +21 -0
- package/lib/node_modules/readdirp/README.md +120 -0
- package/lib/node_modules/readdirp/esm/index.d.ts +108 -0
- package/lib/node_modules/readdirp/esm/index.js +257 -0
- package/lib/node_modules/readdirp/esm/package.json +1 -0
- package/lib/node_modules/readdirp/index.d.ts +108 -0
- package/lib/node_modules/readdirp/index.js +263 -0
- package/lib/node_modules/readdirp/package.json +70 -0
- package/lib/package.json +2 -1
- package/package.json +1 -1
|
@@ -0,0 +1,276 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* MCP per-connection session — speaks the JSON-RPC protocol (initialize,
|
|
4
|
+
* tools/list, tools/call) over a single {@link JsonRpcTransport}. It owns
|
|
5
|
+
* per-client state only (which protocol version the client asked for, whether
|
|
6
|
+
* it advertised `roots`, the one-shot roots/list latch); the heavyweight
|
|
7
|
+
* resources (CodeGraph, watcher, ToolHandler) live in the shared
|
|
8
|
+
* {@link MCPEngine} so daemon mode can collapse N inotify sets / DB handles
|
|
9
|
+
* to one.
|
|
10
|
+
*
|
|
11
|
+
* The state-machine itself mirrors what `MCPServer` used to do inline before
|
|
12
|
+
* issue #411 split it out — the same regression tests in
|
|
13
|
+
* `__tests__/mcp-initialize.test.ts` still drive this code path.
|
|
14
|
+
*/
|
|
15
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
16
|
+
if (k2 === undefined) k2 = k;
|
|
17
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
18
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
19
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
20
|
+
}
|
|
21
|
+
Object.defineProperty(o, k2, desc);
|
|
22
|
+
}) : (function(o, m, k, k2) {
|
|
23
|
+
if (k2 === undefined) k2 = k;
|
|
24
|
+
o[k2] = m[k];
|
|
25
|
+
}));
|
|
26
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
27
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
28
|
+
}) : function(o, v) {
|
|
29
|
+
o["default"] = v;
|
|
30
|
+
});
|
|
31
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
32
|
+
var ownKeys = function(o) {
|
|
33
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
34
|
+
var ar = [];
|
|
35
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
36
|
+
return ar;
|
|
37
|
+
};
|
|
38
|
+
return ownKeys(o);
|
|
39
|
+
};
|
|
40
|
+
return function (mod) {
|
|
41
|
+
if (mod && mod.__esModule) return mod;
|
|
42
|
+
var result = {};
|
|
43
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
44
|
+
__setModuleDefault(result, mod);
|
|
45
|
+
return result;
|
|
46
|
+
};
|
|
47
|
+
})();
|
|
48
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
49
|
+
exports.MCPSession = void 0;
|
|
50
|
+
const path = __importStar(require("path"));
|
|
51
|
+
const transport_1 = require("./transport");
|
|
52
|
+
const tools_1 = require("./tools");
|
|
53
|
+
const server_instructions_1 = require("./server-instructions");
|
|
54
|
+
const version_1 = require("./version");
|
|
55
|
+
/**
|
|
56
|
+
* MCP Server Info — kept on the session because some clients log it. The
|
|
57
|
+
* version tracks the real package version (was a hard-coded '0.1.0').
|
|
58
|
+
*/
|
|
59
|
+
const SERVER_INFO = {
|
|
60
|
+
name: 'codegraph',
|
|
61
|
+
version: version_1.CodeGraphPackageVersion,
|
|
62
|
+
};
|
|
63
|
+
/** MCP Protocol Version (latest the server claims). */
|
|
64
|
+
const PROTOCOL_VERSION = '2024-11-05';
|
|
65
|
+
/**
|
|
66
|
+
* How long to wait for the client's `roots/list` response before giving up
|
|
67
|
+
* and falling back to the process cwd.
|
|
68
|
+
*/
|
|
69
|
+
const ROOTS_LIST_TIMEOUT_MS = 5000;
|
|
70
|
+
/**
|
|
71
|
+
* Convert a file:// URI to a filesystem path. Handles URL encoding and
|
|
72
|
+
* Windows drive letter paths.
|
|
73
|
+
*/
|
|
74
|
+
function fileUriToPath(uri) {
|
|
75
|
+
try {
|
|
76
|
+
const url = new URL(uri);
|
|
77
|
+
let filePath = decodeURIComponent(url.pathname);
|
|
78
|
+
if (process.platform === 'win32' && /^\/[a-zA-Z]:/.test(filePath)) {
|
|
79
|
+
filePath = filePath.slice(1);
|
|
80
|
+
}
|
|
81
|
+
return path.resolve(filePath);
|
|
82
|
+
}
|
|
83
|
+
catch {
|
|
84
|
+
return uri.replace(/^file:\/\/\/?/, '');
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
/** First usable filesystem path from a `roots/list` result, or null. */
|
|
88
|
+
function firstRootPath(result) {
|
|
89
|
+
if (!result || typeof result !== 'object')
|
|
90
|
+
return null;
|
|
91
|
+
const roots = result.roots;
|
|
92
|
+
if (!Array.isArray(roots) || roots.length === 0)
|
|
93
|
+
return null;
|
|
94
|
+
const first = roots[0];
|
|
95
|
+
if (typeof first?.uri !== 'string')
|
|
96
|
+
return null;
|
|
97
|
+
return fileUriToPath(first.uri);
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* One MCP client's view of the server. Created fresh per stdio launch
|
|
101
|
+
* (direct mode) or per socket connection (daemon mode).
|
|
102
|
+
*/
|
|
103
|
+
class MCPSession {
|
|
104
|
+
transport;
|
|
105
|
+
engine;
|
|
106
|
+
clientSupportsRoots = false;
|
|
107
|
+
rootsAttempted = false;
|
|
108
|
+
resolvePromise = null;
|
|
109
|
+
explicitProjectPath;
|
|
110
|
+
constructor(transport, engine, opts = {}) {
|
|
111
|
+
this.transport = transport;
|
|
112
|
+
this.engine = engine;
|
|
113
|
+
this.explicitProjectPath = opts.explicitProjectPath ?? null;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Start handling messages from the transport. Returns immediately — the
|
|
117
|
+
* session lives for as long as the transport is open.
|
|
118
|
+
*/
|
|
119
|
+
start() {
|
|
120
|
+
this.transport.start(this.handleMessage.bind(this));
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Tear down the session. Does NOT touch the engine (the engine may serve
|
|
124
|
+
* other sessions) or call `process.exit` (the daemon decides when to exit).
|
|
125
|
+
*/
|
|
126
|
+
stop() {
|
|
127
|
+
this.transport.stop();
|
|
128
|
+
}
|
|
129
|
+
/** Underlying transport — exposed for daemon-side close hooks. */
|
|
130
|
+
getTransport() {
|
|
131
|
+
return this.transport;
|
|
132
|
+
}
|
|
133
|
+
async handleMessage(message) {
|
|
134
|
+
const isRequest = 'id' in message;
|
|
135
|
+
switch (message.method) {
|
|
136
|
+
case 'initialize':
|
|
137
|
+
if (isRequest)
|
|
138
|
+
await this.handleInitialize(message);
|
|
139
|
+
break;
|
|
140
|
+
case 'initialized':
|
|
141
|
+
// Notification that client has finished initialization — no action needed.
|
|
142
|
+
break;
|
|
143
|
+
case 'tools/list':
|
|
144
|
+
if (isRequest)
|
|
145
|
+
await this.handleToolsList(message);
|
|
146
|
+
break;
|
|
147
|
+
case 'tools/call':
|
|
148
|
+
if (isRequest)
|
|
149
|
+
await this.handleToolsCall(message);
|
|
150
|
+
break;
|
|
151
|
+
case 'ping':
|
|
152
|
+
if (isRequest)
|
|
153
|
+
this.transport.sendResult(message.id, {});
|
|
154
|
+
break;
|
|
155
|
+
default:
|
|
156
|
+
if (isRequest) {
|
|
157
|
+
this.transport.sendError(message.id, transport_1.ErrorCodes.MethodNotFound, `Method not found: ${message.method}`);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
async handleInitialize(request) {
|
|
162
|
+
const params = request.params;
|
|
163
|
+
this.clientSupportsRoots = !!params?.capabilities?.roots;
|
|
164
|
+
// Explicit project signal, strongest first: client-provided rootUri /
|
|
165
|
+
// workspaceFolders (LSP-style), else the --path the server was launched
|
|
166
|
+
// with. cwd is NOT used here — we defer it so a roots/list answer can
|
|
167
|
+
// win over it. See issue #196.
|
|
168
|
+
let explicitPath = null;
|
|
169
|
+
if (params?.rootUri) {
|
|
170
|
+
explicitPath = fileUriToPath(params.rootUri);
|
|
171
|
+
}
|
|
172
|
+
else if (params?.workspaceFolders?.[0]?.uri) {
|
|
173
|
+
explicitPath = fileUriToPath(params.workspaceFolders[0].uri);
|
|
174
|
+
}
|
|
175
|
+
else if (this.explicitProjectPath) {
|
|
176
|
+
explicitPath = this.explicitProjectPath;
|
|
177
|
+
}
|
|
178
|
+
// Respond to the handshake BEFORE doing any heavy init — see issue #172.
|
|
179
|
+
this.transport.sendResult(request.id, {
|
|
180
|
+
protocolVersion: PROTOCOL_VERSION,
|
|
181
|
+
capabilities: { tools: {} },
|
|
182
|
+
serverInfo: SERVER_INFO,
|
|
183
|
+
instructions: server_instructions_1.SERVER_INSTRUCTIONS,
|
|
184
|
+
});
|
|
185
|
+
if (explicitPath) {
|
|
186
|
+
// Kick off engine init in the background. If another session in the
|
|
187
|
+
// same daemon already opened the project, `ensureInitialized` is a
|
|
188
|
+
// ~free no-op — N concurrent clients pay exactly one open.
|
|
189
|
+
this.resolvePromise = this.engine.ensureInitialized(explicitPath);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
async handleToolsList(request) {
|
|
193
|
+
await this.retryInitIfNeeded();
|
|
194
|
+
this.transport.sendResult(request.id, {
|
|
195
|
+
tools: this.engine.getToolHandler().getTools(),
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
async handleToolsCall(request) {
|
|
199
|
+
const params = request.params;
|
|
200
|
+
if (!params || !params.name) {
|
|
201
|
+
this.transport.sendError(request.id, transport_1.ErrorCodes.InvalidParams, 'Missing tool name');
|
|
202
|
+
return;
|
|
203
|
+
}
|
|
204
|
+
const toolName = params.name;
|
|
205
|
+
const toolArgs = params.arguments || {};
|
|
206
|
+
const tool = tools_1.tools.find((t) => t.name === toolName);
|
|
207
|
+
if (!tool) {
|
|
208
|
+
this.transport.sendError(request.id, transport_1.ErrorCodes.InvalidParams, `Unknown tool: ${toolName}`);
|
|
209
|
+
return;
|
|
210
|
+
}
|
|
211
|
+
await this.retryInitIfNeeded();
|
|
212
|
+
const result = await this.engine.getToolHandler().execute(toolName, toolArgs);
|
|
213
|
+
this.transport.sendResult(request.id, result);
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Lazy default-project resolution. Three layers:
|
|
217
|
+
* 1. await the in-flight init kicked off from `handleInitialize` (if any);
|
|
218
|
+
* 2. if still uninitialized and we never asked the client for its roots,
|
|
219
|
+
* do so now (one-shot); fall back to cwd if the client lacks roots;
|
|
220
|
+
* 3. last-resort: re-walk from the best candidate — picks up projects
|
|
221
|
+
* that were `codegraph init`'d *after* the server started.
|
|
222
|
+
*/
|
|
223
|
+
async retryInitIfNeeded() {
|
|
224
|
+
if (this.resolvePromise) {
|
|
225
|
+
try {
|
|
226
|
+
await this.resolvePromise;
|
|
227
|
+
}
|
|
228
|
+
catch { /* fall through to retry */ }
|
|
229
|
+
this.resolvePromise = null;
|
|
230
|
+
}
|
|
231
|
+
if (this.engine.hasDefaultCodeGraph())
|
|
232
|
+
return;
|
|
233
|
+
const hint = this.explicitProjectPath ?? this.engine.getProjectPath();
|
|
234
|
+
if (!hint && !this.rootsAttempted) {
|
|
235
|
+
this.rootsAttempted = true;
|
|
236
|
+
this.resolvePromise = this.clientSupportsRoots
|
|
237
|
+
? this.initFromRoots()
|
|
238
|
+
: this.engine.ensureInitialized(process.cwd());
|
|
239
|
+
try {
|
|
240
|
+
await this.resolvePromise;
|
|
241
|
+
}
|
|
242
|
+
catch { /* fall through */ }
|
|
243
|
+
this.resolvePromise = null;
|
|
244
|
+
if (this.engine.hasDefaultCodeGraph())
|
|
245
|
+
return;
|
|
246
|
+
}
|
|
247
|
+
// Last resort: walk from the best candidate (sync open). Picks up
|
|
248
|
+
// projects that appeared after the server started.
|
|
249
|
+
const candidate = hint ?? process.cwd();
|
|
250
|
+
this.engine.retryInitializeSync(candidate);
|
|
251
|
+
}
|
|
252
|
+
/**
|
|
253
|
+
* Ask the client for its workspace root via `roots/list` and open the
|
|
254
|
+
* first one. Falls back to `process.cwd()` on timeout or empty answer.
|
|
255
|
+
*/
|
|
256
|
+
async initFromRoots() {
|
|
257
|
+
let target = process.cwd();
|
|
258
|
+
try {
|
|
259
|
+
const result = await this.transport.request('roots/list', undefined, ROOTS_LIST_TIMEOUT_MS);
|
|
260
|
+
const rootPath = firstRootPath(result);
|
|
261
|
+
if (rootPath) {
|
|
262
|
+
target = rootPath;
|
|
263
|
+
}
|
|
264
|
+
else {
|
|
265
|
+
process.stderr.write('[CodeGraph MCP] Client returned no workspace roots; falling back to process cwd.\n');
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
catch (err) {
|
|
269
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
270
|
+
process.stderr.write(`[CodeGraph MCP] roots/list request failed (${msg}); falling back to process cwd.\n`);
|
|
271
|
+
}
|
|
272
|
+
await this.engine.ensureInitialized(target);
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
exports.MCPSession = MCPSession;
|
|
276
|
+
//# sourceMappingURL=session.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/mcp/session.ts"],"names":[],"mappings":"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"}
|
package/lib/dist/mcp/tools.d.ts
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
* Defines the tools exposed by the CodeGraph MCP server.
|
|
5
5
|
*/
|
|
6
6
|
import CodeGraph from '../index';
|
|
7
|
+
import type { PendingFile } from '../sync';
|
|
7
8
|
/**
|
|
8
9
|
* Calculate the recommended number of codegraph_explore calls based on project size.
|
|
9
10
|
* Larger codebases need more exploration calls to cover their surface area,
|
|
@@ -51,6 +52,19 @@ export interface ExploreOutputBudget {
|
|
|
51
52
|
includeBudgetNote: boolean;
|
|
52
53
|
}
|
|
53
54
|
export declare function getExploreOutputBudget(fileCount: number): ExploreOutputBudget;
|
|
55
|
+
/**
|
|
56
|
+
* Per-file staleness banner emitted at the top of a tool response when the
|
|
57
|
+
* file watcher has pending events for files referenced by the response.
|
|
58
|
+
* The agent uses this to fall back to Read for those specific files
|
|
59
|
+
* without waiting for the debounced sync (issue #403).
|
|
60
|
+
*/
|
|
61
|
+
export declare function formatStaleBanner(stale: PendingFile[]): string;
|
|
62
|
+
/**
|
|
63
|
+
* Compact footer listing pending files that are NOT referenced in this
|
|
64
|
+
* response. Gives the agent a complete project-wide freshness picture
|
|
65
|
+
* without bloating the main banner.
|
|
66
|
+
*/
|
|
67
|
+
export declare function formatStaleFooter(stale: PendingFile[]): string;
|
|
54
68
|
/**
|
|
55
69
|
* MCP Tool definition
|
|
56
70
|
*/
|
|
@@ -98,6 +112,7 @@ export declare class ToolHandler {
|
|
|
98
112
|
private cg;
|
|
99
113
|
private projectCache;
|
|
100
114
|
private defaultProjectHint;
|
|
115
|
+
private worktreeMismatchCache;
|
|
101
116
|
constructor(cg: CodeGraph | null);
|
|
102
117
|
/**
|
|
103
118
|
* Update the default CodeGraph instance (e.g. after lazy initialization)
|
|
@@ -158,6 +173,40 @@ export declare class ToolHandler {
|
|
|
158
173
|
* valid (or undefined), or a ToolResult with the error.
|
|
159
174
|
*/
|
|
160
175
|
private validateOptionalPath;
|
|
176
|
+
/**
|
|
177
|
+
* Cached git worktree/index mismatch for a tool call's effective project.
|
|
178
|
+
*
|
|
179
|
+
* The "effective project" is what the request targets: an explicit
|
|
180
|
+
* `projectPath` arg, else the directory the server resolved its default
|
|
181
|
+
* project from (`defaultProjectHint`), else cwd. Memoized per start path —
|
|
182
|
+
* see `worktreeMismatchCache`. Best-effort: if the project can't be resolved
|
|
183
|
+
* (e.g. nothing initialized yet), it reports "no mismatch" so a tool is never
|
|
184
|
+
* broken by this check.
|
|
185
|
+
*/
|
|
186
|
+
private worktreeMismatchFor;
|
|
187
|
+
/**
|
|
188
|
+
* Prefix a successful read-tool result with a compact worktree-mismatch
|
|
189
|
+
* notice when the resolved index belongs to a different git working tree than
|
|
190
|
+
* the caller's (issue #155). Without this, an agent in a nested worktree
|
|
191
|
+
* silently trusts main-branch results. No-op on error results and when there
|
|
192
|
+
* is no mismatch. `codegraph_status` is excluded — it embeds its own verbose
|
|
193
|
+
* warning — so it stays out of this path.
|
|
194
|
+
*/
|
|
195
|
+
private withWorktreeNotice;
|
|
196
|
+
/**
|
|
197
|
+
* Annotate a successful read-tool result with per-file staleness — the
|
|
198
|
+
* non-blocking answer to issue #403. The file watcher tracks every event
|
|
199
|
+
* it sees per path; here we intersect "files referenced in this response"
|
|
200
|
+
* against that pending set and prepend a compact banner so the agent can
|
|
201
|
+
* fall back to Read for those *specific* files without waiting for the
|
|
202
|
+
* debounced sync to fire. Other pending files in the project (not
|
|
203
|
+
* referenced by this response) get a small footer so the agent has a
|
|
204
|
+
* complete picture without bloating the banner.
|
|
205
|
+
*
|
|
206
|
+
* Cost when nothing is pending — the common case — is one boolean check.
|
|
207
|
+
* No I/O, no parsing of markdown beyond a per-pending-file substring scan.
|
|
208
|
+
*/
|
|
209
|
+
private withStalenessNotice;
|
|
161
210
|
/**
|
|
162
211
|
* Execute a tool by name
|
|
163
212
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/mcp/tools.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,SAAuC,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/mcp/tools.ts"],"names":[],"mappings":"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"}
|