{"detail":{"error":"invalid_entity_type","type":"Symbol","valid_types":["APIDoc","Class","ConfigFile","Database","DesignDoc","Endpoint","Enum","Function","Interface","Method","Module","PRD","Package","README","Runbook","Service","UserDoc"], ...}}
Code-extracted entities are unreachable through the typed API.
Summary
Two gaps in the AST (
CodeMetadataExtractor) graph path, found during the v10.7.0 integration test on 2026-09-19 againste2e/sample-project/(five Python files, one test file):Entity types do not match the typed entity API. Every extracted node carries label
Symbol.GET /graph/entity/{type}/{id}and the MCP resourcegraph-entity://{type}/{id}rejectSymbol:Code-extracted entities are unreachable through the typed API.
Coverage is partial. The persisted store held 21 nodes and 22 relations for 13 chunks. Present:
Item,OutOfStock, module names, imports, and one test function. Missing:InventoryService,SqliteRepository,InMemoryRepository,reserve_stock,restock, and every method. Thefind-callersprompt (mode=graph, relationship_types=["calls"]) has nothing to find.The graph mode itself works after the fixes in the same PR as this issue (parent-side refresh, LlamaIndex triplet read). This issue is about what the extractor puts into the graph.
Proposed fix
Class,Function,Method,Module) instead ofSymbol, or acceptSymbolin the typed API as an alias.symbol_name/symbol_kindmetadata (present in chunk metadata already) and emitcontainsanddefined_infor classes and methods, pluscallswhere the AST gives call targets.e2e/sample-project/src/inventoryand assertsInventoryServiceandreserve_stockare nodes.