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:
Colby Mchenry
2026-06-02 17:49:15 -05:00
committed by GitHub
co-authored by Claude Opus 4.8
parent 2a22f9f55a
commit ddb1a8f72d
15 changed files with 197 additions and 45 deletions
+8
View File
@@ -230,6 +230,14 @@ export async function runLocalHandshakeProxy(deps: LocalHandshakeDeps): Promise<
routeToDaemon(line); // prime the daemon so it resolves the project (its reply is suppressed below)
} else if (msg.method === 'tools/list') {
writeClient({ jsonrpc: '2.0', id: msg.id, result: { tools: getStaticTools() } });
} else if (msg.method === 'resources/list') {
// No resources exposed — answer the probe locally so it never reaches
// the daemon as an unhandled method and logs `-32601`. (#621)
writeClient({ jsonrpc: '2.0', id: msg.id, result: { resources: [] } });
} else if (msg.method === 'resources/templates/list') {
writeClient({ jsonrpc: '2.0', id: msg.id, result: { resourceTemplates: [] } });
} else if (msg.method === 'prompts/list') {
writeClient({ jsonrpc: '2.0', id: msg.id, result: { prompts: [] } });
} else {
routeToDaemon(line);
}
+13
View File
@@ -132,6 +132,19 @@ export class MCPSession {
case 'ping':
if (isRequest) this.transport.sendResult((message as JsonRpcRequest).id, {});
break;
case 'resources/list':
// We expose no MCP resources, but some clients (opencode, Codex) probe
// for them on connect; reply with an empty list instead of a
// MethodNotFound error that surfaces as a scary `-32601` log line. (#621)
if (isRequest) this.transport.sendResult((message as JsonRpcRequest).id, { resources: [] });
break;
case 'resources/templates/list':
if (isRequest) this.transport.sendResult((message as JsonRpcRequest).id, { resourceTemplates: [] });
break;
case 'prompts/list':
// Likewise — no prompts exposed, but answer the probe cleanly. (#621)
if (isRequest) this.transport.sendResult((message as JsonRpcRequest).id, { prompts: [] });
break;
default:
if (isRequest) {
this.transport.sendError(