What's New
Line numbers on every record
All API records now include line_start and line_end (1-indexed). Multi-line declarations span the full signature. This lets AI agents do targeted reads instead of reading full files:
File: Converter.java:504-506 → Read("Converter.java", offset=504, limit=10)
File: album.controller.ts:46 → Read("album.controller.ts", offset=46, limit=15)
Multi-line support across all parsers
- C#:
_collect_paramsreturns(str, end_line)for constructors and methods - Go: captures
end_ifrom_collect_signature()for methods, functions, and interface methods - Java: constructors, methods, and interface methods use
end_ifrom_collect_signature() - Python: multi-line typed class fields track
skip_lines - TypeScript: accessors and interface methods capture
end_ifrom_collect_signature()
Updated CLAUDE.md snippet
- Concise 13-line snippet with targeted read examples
- Explicitly instructs subagents to use codesurface tools first
Edge case fix
_collect_paramsnow tracksendon every loop iteration, so if the 50-line lookahead exhausts without finding),line_endstill reflects the last consumed line
Validated on
- Flask (872 records), Gin (574), Immich (7,957), Guava (8,377) — 25,591 total, 0 mismatches