fix: issue-triage quick wins (extraction, MCP probes, gitignore, CJK, impact) (#654)
Batch of small, localized fixes from an open-issue triage: - .codegraph/.gitignore now ignores everything but itself, so the database, daemon.pid, sockets, and logs stop showing up in git status (#492, #484) - MCP server answers resources/list and prompts/list with empty lists instead of -32601, clearing scary log lines in opencode/Codex (#621) - index SAP HANA .xsjs/.xsjslib as JavaScript (#556) and TS .mts/.cts (#366) - visit anonymous AMD/CommonJS/IIFE wrapper bodies so their inner functions and calls are indexed instead of coming up empty (#528) - batch the changed-file lookup so a huge first sync no longer hits "too many SQL variables" (#540) - list files with `git ls-files -z` so non-ASCII/CJK paths survive core.quotepath and are no longer silently skipped (#541) - attach Go methods on generic receivers (*T[P]) to their type (#583, RC1) - impact no longer climbs the structural `contains` edge, so a leaf symbol stops dragging in its sibling methods (#536) - README: explicit `codegraph install` step, run in a new shell (#631) Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
2a22f9f55a
commit
ddb1a8f72d
@@ -154,4 +154,30 @@ describe('MCP initialize handshake (issue #172)', () => {
|
||||
expect(json.id).toBe(0);
|
||||
expect(json.result.serverInfo.name).toBe('codegraph');
|
||||
}, 20000);
|
||||
|
||||
it('answers resources/list and prompts/list with empty lists, not -32601 (issue #621)', async () => {
|
||||
child = spawnServer(tempDir);
|
||||
const events = tagStreams(child);
|
||||
sendInitialize(child, tempDir);
|
||||
await waitFor(events, (e) => e.stream === 'stdout', 5000); // initialize reply
|
||||
|
||||
child.stdin.write(JSON.stringify({ jsonrpc: '2.0', id: 1, method: 'resources/list', params: {} }) + '\n');
|
||||
child.stdin.write(JSON.stringify({ jsonrpc: '2.0', id: 2, method: 'prompts/list', params: {} }) + '\n');
|
||||
|
||||
const replyFor = async (id: number) => {
|
||||
const ev = await waitFor(events, (e) => {
|
||||
if (e.stream !== 'stdout') return false;
|
||||
try { return JSON.parse(e.text).id === id; } catch { return false; }
|
||||
}, 5000);
|
||||
return JSON.parse(ev.text);
|
||||
};
|
||||
|
||||
const resources = await replyFor(1);
|
||||
expect(resources.error).toBeUndefined();
|
||||
expect(resources.result.resources).toEqual([]);
|
||||
|
||||
const prompts = await replyFor(2);
|
||||
expect(prompts.error).toBeUndefined();
|
||||
expect(prompts.result.prompts).toEqual([]);
|
||||
}, 15000);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user