Repository navigation
SeMaps 0.4.1
A small release about trusting the code graph: it no longer loses lines, and it says how fresh it is.
Fixed
- Every site line is kept. A method that constructs or calls the same target twice showed only the first line (
@51); now the graph shows all of them (@51,69). The extractor already reported them; the host dropped all but one while building the graph.
New
- Graph answers say how fresh their facts are. Every answer starts with
facts: run <extractor> <time>, <age> old, and adds awarning:when that run lacks edge kinds the.semapsentry asks for (for examplecallsswitched on after the last run), when the latest run failed, or when the extractor never ran. JSON answers carry the same infacts[]. Before, the graph silently answered from stale facts, and an agent could conclude "nobody calls this". graph_status(MCP tool andGET /api/graph/{project}/status): per extractor, the latest run and its state and age, the run the graph is built from, the edge kinds asked for vs. present, and whether a watcher is active or a watch run is pending. Facts only, no guessing.extractwithwait: trueruns the extractors and returns when they finish, with each run's state, time, symbol and edge counts — "kick and wait" in one call.- The Go watcher reacts only to
*.go,go.modandgo.sum.
Changed
extractwithoutwaitnow returns at once with the run ids instead of waiting.syncstill waits.- Nothing runs by itself: neither host start nor a change of
.semapsstarts an extraction. Thefacts:line andwarning:say when the graph is behind;extractbrings it up to date.
Measurement
Four questions about a 623-file C# project, two identical Claude Sonnet agents — one with grep and file reads only, one with the SeMaps code graph:
| Text search | Code graph | |
|---|---|---|
| agent tokens | 96.5k | 69.4k (−28%) |
| tool calls | 14 | 2 |
| time | 51 s | 32 s |
Both answered completely; the graph agent got its callers from facts, the text agent partly by inference. One run on one project, not a study; the token counts include each agent's fixed prompt.
The full list of changes (in Russian) is in CHANGELOG.md.
Platforms
Proven on Windows. The Linux and macOS (arm64) builds pass the tests in CI on Linux but have not been tried in real work with the editor. There is no installer there: unpack the archive and put semaps with its extractors/ folder on your PATH; on macOS remove the quarantine first (xattr -d com.apple.quarantine semaps), since the binary is not signed.