graph-indexer 3.0.1 → 3.1.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/CHANGELOG.md +404 -0
- package/README.md +61 -8
- package/bin/graph-indexer.mjs +46 -5
- package/integrations/claude-code/.claude-plugin/plugin.json +1 -1
- package/integrations/claude-code/agents/code-structure.md +0 -3
- package/integrations/claude-code/skills/setup/SKILL.md +26 -0
- package/integrations/claude-code-local/.claude-plugin/plugin.json +9 -0
- package/integrations/{claude-code → claude-code-local}/.mcp.json +1 -1
- package/integrations/claude-code-local/README.md +10 -0
- package/integrations/claude-code-local/agents/code-structure.md +22 -0
- package/integrations/{claude-code → claude-code-local}/hooks/gi-hook.mjs +3 -1
- package/package.json +1 -1
- package/src/cli/helper.mjs +15 -1
- package/src/cli/hook.mjs +123 -41
- package/src/cli/init.mjs +16 -1
- package/src/cli/resident.mjs +1 -1
- package/src/index/indexer.mjs +77 -41
- package/src/index/modules.mjs +76 -2
- package/src/index/parse-worker.mjs +12 -0
- package/src/index/parsepool.mjs +73 -0
- package/src/index/resolver.mjs +362 -23
- package/src/mcp/server.mjs +16 -12
- package/src/mcp/tools.mjs +417 -25
- package/src/parse/arity.mjs +39 -2
- package/src/parse/extract.mjs +269 -45
- package/src/parse/lang/ecma.mjs +2 -0
- package/src/parse/lang/go.mjs +2 -0
- package/src/parse/lang/jvm.mjs +33 -0
- package/src/parse/lang/markdown.mjs +92 -0
- package/src/parse/lang/python.mjs +43 -0
- package/src/parse/lang/rust.mjs +215 -15
- package/src/parse/lang/sfc.mjs +125 -0
- package/src/parse/languages.mjs +9 -2
- package/src/query/check.mjs +49 -13
- package/src/query/facts.mjs +3 -2
- package/src/query/injection-spring.mjs +405 -0
- package/src/query/injection.mjs +173 -0
- package/src/query/intel.mjs +76 -14
- package/src/query/issue.mjs +156 -0
- package/src/query/orm.mjs +286 -0
- package/src/query/read.mjs +6 -1
- package/src/query/report.mjs +53 -0
- package/src/query/routes.mjs +142 -0
- package/src/query/showcase.mjs +59 -0
- package/src/search/search.mjs +85 -17
- package/src/search/semantic.mjs +201 -0
- package/src/search/vectors.mjs +122 -0
- package/src/store/db.mjs +22 -4
- package/vendor/grammars/README.md +47 -0
- package/vendor/grammars/kotlin.wasm.gz +0 -0
- package/vendor/grammars/manifest.json +4 -4
- /package/integrations/{claude-code → claude-code-local}/hooks/hooks.json +0 -0
package/src/mcp/server.mjs
CHANGED
|
@@ -64,13 +64,17 @@ export class McpServer {
|
|
|
64
64
|
this.#error(id, -32022, `Unsupported protocol version: ${reqVersion}`, { supported: SUPPORTED_VERSIONS, requested: reqVersion });
|
|
65
65
|
return;
|
|
66
66
|
}
|
|
67
|
+
// 2026-07-28 results say whether they are complete (or need more input from the client);
|
|
68
|
+
// a client of that version ignores a result without it
|
|
69
|
+
const stateless = this.#requestVersion(params) === '2026-07-28' || method === 'server/discover';
|
|
70
|
+
const done = (res) => this.#result(id, stateless ? { resultType: 'complete', ...res } : res);
|
|
67
71
|
try {
|
|
68
72
|
switch (method) {
|
|
69
73
|
case 'initialize': {
|
|
70
74
|
const requested = params?.protocolVersion;
|
|
71
75
|
const version = SUPPORTED_VERSIONS.includes(requested) && requested !== '2026-07-28' ? requested : LATEST_HANDSHAKE;
|
|
72
76
|
this.negotiated = version;
|
|
73
|
-
|
|
77
|
+
done({
|
|
74
78
|
protocolVersion: version,
|
|
75
79
|
capabilities: { tools: { listChanged: false } },
|
|
76
80
|
serverInfo: { ...this.info, title: 'graph-indexer — code graph & search' },
|
|
@@ -79,7 +83,7 @@ export class McpServer {
|
|
|
79
83
|
return;
|
|
80
84
|
}
|
|
81
85
|
case 'server/discover':
|
|
82
|
-
|
|
86
|
+
done({
|
|
83
87
|
supportedVersions: SUPPORTED_VERSIONS,
|
|
84
88
|
capabilities: { tools: { listChanged: false } },
|
|
85
89
|
instructions: SERVER_INSTRUCTIONS,
|
|
@@ -89,12 +93,12 @@ export class McpServer {
|
|
|
89
93
|
});
|
|
90
94
|
return;
|
|
91
95
|
case 'ping':
|
|
92
|
-
|
|
96
|
+
done({});
|
|
93
97
|
return;
|
|
94
98
|
case 'tools/list': {
|
|
95
99
|
const res = { tools: TOOLS.map(({ name, title, description, inputSchema, annotations, _meta }) => ({ name, title, description, inputSchema, annotations, ...(_meta ? { _meta } : {}) })) };
|
|
96
100
|
if (this.#requestVersion(params) === '2026-07-28') Object.assign(res, { ttlMs: 3_600_000, cacheScope: 'private' });
|
|
97
|
-
|
|
101
|
+
done(res);
|
|
98
102
|
return;
|
|
99
103
|
}
|
|
100
104
|
case 'tools/call': {
|
|
@@ -104,7 +108,7 @@ export class McpServer {
|
|
|
104
108
|
const args = params?.arguments ?? {};
|
|
105
109
|
const missing = (tool.inputSchema.required ?? []).filter(k => args[k] === undefined || args[k] === null || args[k] === '');
|
|
106
110
|
if (missing.length) {
|
|
107
|
-
|
|
111
|
+
done({ content: [{ type: 'text', text: `Missing required argument(s): ${missing.join(', ')}.` }], isError: true });
|
|
108
112
|
return;
|
|
109
113
|
}
|
|
110
114
|
this.inflight++;
|
|
@@ -112,18 +116,18 @@ export class McpServer {
|
|
|
112
116
|
const note = await this.#awaitReady();
|
|
113
117
|
await this.intel.ensureFresh();
|
|
114
118
|
const text = await callTool(this.intel, name, args);
|
|
115
|
-
|
|
119
|
+
done({ content: [{ type: 'text', text: note ? `${note}\n${text}` : text }] });
|
|
116
120
|
} catch (err) {
|
|
117
121
|
this.log(`tool ${name} failed: ${err.stack || err.message}`);
|
|
118
|
-
|
|
122
|
+
done({ content: [{ type: 'text', text: `graph-indexer error in ${name}: ${err.message}` }], isError: true });
|
|
119
123
|
} finally { this.inflight--; }
|
|
120
124
|
return;
|
|
121
125
|
}
|
|
122
|
-
case 'resources/list':
|
|
123
|
-
case 'resources/templates/list':
|
|
124
|
-
case 'prompts/list':
|
|
125
|
-
case 'logging/setLevel':
|
|
126
|
-
case 'completion/complete':
|
|
126
|
+
case 'resources/list': done({ resources: [] }); return;
|
|
127
|
+
case 'resources/templates/list': done({ resourceTemplates: [] }); return;
|
|
128
|
+
case 'prompts/list': done({ prompts: [] }); return;
|
|
129
|
+
case 'logging/setLevel': done({}); return;
|
|
130
|
+
case 'completion/complete': done({ completion: { values: [], hasMore: false } }); return;
|
|
127
131
|
default:
|
|
128
132
|
this.#error(id, -32601, `Method not found: ${method}`);
|
|
129
133
|
}
|