v0.10.8
⚠️ Migration for existing users
Your CLAUDE.md / AGENTS.md / GEMINI.md / CODEX.md likely still contain the inlined SDL-MCP workflow from earlier versions. Remove those sections and replace them with a single pointer near the top of each file:
> Optimized tool-use workflow for agents: see [SDL.md](./SDL.md).SDL.md now owns the canonical decision ladder, budget patterns, and anti-patterns. Keeping the workflow in one file means future agent-behavior updates land via sdl-mcp upgrades (the server drops a fresh SDL.md on init / repo.register) instead of drifting across four hand-edited docs.
Highlights
New tools
sdl.search.edit— cross-file search/edit in two phases (preview+apply) with server-side plan handles, sha256/mtime preconditions, deterministic apply order, and mid-batch rollback. Closes the gap where agents previously composedsymbol.search→file.read→file.writeby hand.sdl.file— unified file I/O gateway (read/write/searchEditPreview/searchEditApply) so a single tool handles all file operations.search.edithybrid-retrieval narrowing — text-mode previews with aliteralquery (≥3 chars) seed candidate files via entity-level FTS + vector + RRF, falling back to directory enumeration. Planner surfacesretrievalEvidenceon the response.narrowFilesForQueryinsrc/retrieval/orchestrator.ts— exported entry point that resolves hybrid-search hits back to owning files.
Packaging
- Grammar-wrapper packages — 11 thin
sdl-mcp-tree-sitter-*wrappers bundle each upstream tree-sitter grammar with a permissivetree-sitter: >=0.21.0peer range. Consumer install output drops from ~10ERESOLVEwarnings to 0. - Each grammar dep in
package.jsonnow aliases the wrapper (e.g.tree-sitter-c: npm:sdl-mcp-tree-sitter-c@^1.0.1);grammarLoader.tsrequires resolve transparently. - New regenerator
scripts/scaffold-grammar-wrappers.mjs, drift guardtests/unit/grammar-wrapper-manifest.test.ts, and publish workflow.github/workflows/publish-grammar-wrappers.yml.
Reliability fixes
- CLI — one-shot
indexcommand exits cleanly instead of hanging on the prompt. - Live-index — all
patchSavedFilecallers now gated; added overlay sweep. - SCIP — no more crash during auto-ingest after
index.refresh. - DB — prevent vec column cache corruption on dual
initLadybugDbcalls (#16). - Embeddings — null-then-set when updating HNSW-indexed vec columns.
- Search-edit — correctness + robustness pass across planner, plan-store, batch-executor, index.
- tools/list —
sdl.search.editdiscriminated-union inputSchema now carries top-leveltype: "object"so strict MCP clients accept every registered tool.
Config
additionalModelsdefaults to[\"nomic-embed-text-v1.5\"].
Enforcement / workflow
init/repo.registerauto-place theSDL.mdplaybook into the registered repo so agents always have the latest token-lean workflow alongside their existing agent files.
Commits
See v0.10.7...v0.10.8 (23 commits).
Full changelog: CHANGELOG.md.