Skip to content

SeMaps 0.4.1

Choose a tag to compare

@github-actions github-actions released this 01 Oct 13:42
· 24 commits to main since this release
a7e7455

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 a warning: when that run lacks edge kinds the .semaps entry asks for (for example calls switched on after the last run), when the latest run failed, or when the extractor never ran. JSON answers carry the same in facts[]. Before, the graph silently answered from stale facts, and an agent could conclude "nobody calls this".
  • graph_status (MCP tool and GET /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.
  • extract with wait: true runs 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.mod and go.sum.

Changed

  • extract without wait now returns at once with the run ids instead of waiting. sync still waits.
  • Nothing runs by itself: neither host start nor a change of .semaps starts an extraction. The facts: line and warning: say when the graph is behind; extract brings 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.