sdl-mcp 0.11.0 → 0.11.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (264) hide show
  1. package/README.md +19 -15
  2. package/config/sdlmcp.config.example.json +26 -0
  3. package/config/sdlmcp.config.schema.json +171 -1
  4. package/dist/.tsbuildinfo +1 -1
  5. package/dist/agent/context-engine.d.ts +2 -0
  6. package/dist/agent/context-engine.d.ts.map +1 -1
  7. package/dist/agent/context-engine.js +298 -21
  8. package/dist/agent/context-engine.js.map +1 -1
  9. package/dist/agent/types.d.ts +2 -0
  10. package/dist/agent/types.d.ts.map +1 -1
  11. package/dist/cli/commands/init.d.ts.map +1 -1
  12. package/dist/cli/commands/init.js +5 -1
  13. package/dist/cli/commands/init.js.map +1 -1
  14. package/dist/cli/commands/serve.d.ts.map +1 -1
  15. package/dist/cli/commands/serve.js +45 -25
  16. package/dist/cli/commands/serve.js.map +1 -1
  17. package/dist/cli/commands/tool-actions.d.ts +3 -1
  18. package/dist/cli/commands/tool-actions.d.ts.map +1 -1
  19. package/dist/cli/commands/tool-actions.js +301 -4
  20. package/dist/cli/commands/tool-actions.js.map +1 -1
  21. package/dist/cli/commands/tool-arg-parser.d.ts.map +1 -1
  22. package/dist/cli/commands/tool-arg-parser.js +4 -1
  23. package/dist/cli/commands/tool-arg-parser.js.map +1 -1
  24. package/dist/cli/index.js +3 -2
  25. package/dist/cli/index.js.map +1 -1
  26. package/dist/cli/transport/http.d.ts.map +1 -1
  27. package/dist/cli/transport/http.js +5 -4
  28. package/dist/cli/transport/http.js.map +1 -1
  29. package/dist/code-mode/action-catalog.d.ts.map +1 -1
  30. package/dist/code-mode/action-catalog.js +31 -2
  31. package/dist/code-mode/action-catalog.js.map +1 -1
  32. package/dist/code-mode/descriptions.d.ts.map +1 -1
  33. package/dist/code-mode/descriptions.js +3 -1
  34. package/dist/code-mode/descriptions.js.map +1 -1
  35. package/dist/code-mode/index.d.ts.map +1 -1
  36. package/dist/code-mode/index.js +33 -3
  37. package/dist/code-mode/index.js.map +1 -1
  38. package/dist/code-mode/manual-generator.d.ts.map +1 -1
  39. package/dist/code-mode/manual-generator.js +13 -4
  40. package/dist/code-mode/manual-generator.js.map +1 -1
  41. package/dist/config/constants.d.ts +32 -0
  42. package/dist/config/constants.d.ts.map +1 -1
  43. package/dist/config/constants.js +33 -0
  44. package/dist/config/constants.js.map +1 -1
  45. package/dist/config/types.d.ts +180 -0
  46. package/dist/config/types.d.ts.map +1 -1
  47. package/dist/config/types.js +84 -2
  48. package/dist/config/types.js.map +1 -1
  49. package/dist/db/ladybug-queries.d.ts +2 -0
  50. package/dist/db/ladybug-queries.d.ts.map +1 -1
  51. package/dist/db/ladybug-queries.js +3 -0
  52. package/dist/db/ladybug-queries.js.map +1 -1
  53. package/dist/db/ladybug-schema.d.ts +2 -1
  54. package/dist/db/ladybug-schema.d.ts.map +1 -1
  55. package/dist/db/ladybug-schema.js +70 -1
  56. package/dist/db/ladybug-schema.js.map +1 -1
  57. package/dist/db/ladybug-semantic.d.ts +75 -0
  58. package/dist/db/ladybug-semantic.d.ts.map +1 -0
  59. package/dist/db/ladybug-semantic.js +457 -0
  60. package/dist/db/ladybug-semantic.js.map +1 -0
  61. package/dist/db/ladybug.d.ts +11 -3
  62. package/dist/db/ladybug.d.ts.map +1 -1
  63. package/dist/db/ladybug.js +31 -40
  64. package/dist/db/ladybug.js.map +1 -1
  65. package/dist/db/migrations/index.d.ts.map +1 -1
  66. package/dist/db/migrations/index.js +2 -0
  67. package/dist/db/migrations/index.js.map +1 -1
  68. package/dist/db/migrations/m018-add-semantic-enrichment-tables.d.ts +5 -0
  69. package/dist/db/migrations/m018-add-semantic-enrichment-tables.d.ts.map +1 -0
  70. package/dist/db/migrations/m018-add-semantic-enrichment-tables.js +100 -0
  71. package/dist/db/migrations/m018-add-semantic-enrichment-tables.js.map +1 -0
  72. package/dist/db/wal-maintenance.d.ts +57 -0
  73. package/dist/db/wal-maintenance.d.ts.map +1 -0
  74. package/dist/db/wal-maintenance.js +170 -0
  75. package/dist/db/wal-maintenance.js.map +1 -0
  76. package/dist/db/write-session.d.ts.map +1 -1
  77. package/dist/db/write-session.js +6 -4
  78. package/dist/db/write-session.js.map +1 -1
  79. package/dist/gateway/descriptions.d.ts.map +1 -1
  80. package/dist/gateway/descriptions.js +5 -2
  81. package/dist/gateway/descriptions.js.map +1 -1
  82. package/dist/gateway/legacy.d.ts.map +1 -1
  83. package/dist/gateway/legacy.js +3 -1
  84. package/dist/gateway/legacy.js.map +1 -1
  85. package/dist/gateway/router.d.ts.map +1 -1
  86. package/dist/gateway/router.js +21 -2
  87. package/dist/gateway/router.js.map +1 -1
  88. package/dist/gateway/schemas.d.ts +85 -3
  89. package/dist/gateway/schemas.d.ts.map +1 -1
  90. package/dist/gateway/schemas.js +116 -1
  91. package/dist/gateway/schemas.js.map +1 -1
  92. package/dist/indexer/derived-refresh-queue.d.ts.map +1 -1
  93. package/dist/indexer/derived-refresh-queue.js +13 -10
  94. package/dist/indexer/derived-refresh-queue.js.map +1 -1
  95. package/dist/indexer/indexer.d.ts +2 -0
  96. package/dist/indexer/indexer.d.ts.map +1 -1
  97. package/dist/indexer/indexer.js +23 -3
  98. package/dist/indexer/indexer.js.map +1 -1
  99. package/dist/mcp/context-response-projection.d.ts +5 -0
  100. package/dist/mcp/context-response-projection.d.ts.map +1 -1
  101. package/dist/mcp/context-response-projection.js +18 -0
  102. package/dist/mcp/context-response-projection.js.map +1 -1
  103. package/dist/mcp/dispatch-limiter.d.ts +13 -0
  104. package/dist/mcp/dispatch-limiter.d.ts.map +1 -1
  105. package/dist/mcp/dispatch-limiter.js +40 -0
  106. package/dist/mcp/dispatch-limiter.js.map +1 -1
  107. package/dist/mcp/indexing-gate.d.ts +4 -3
  108. package/dist/mcp/indexing-gate.d.ts.map +1 -1
  109. package/dist/mcp/indexing-gate.js +4 -3
  110. package/dist/mcp/indexing-gate.js.map +1 -1
  111. package/dist/mcp/response-compression.d.ts +24 -0
  112. package/dist/mcp/response-compression.d.ts.map +1 -0
  113. package/dist/mcp/response-compression.js +71 -0
  114. package/dist/mcp/response-compression.js.map +1 -0
  115. package/dist/mcp/session-delta.d.ts +103 -0
  116. package/dist/mcp/session-delta.d.ts.map +1 -0
  117. package/dist/mcp/session-delta.js +398 -0
  118. package/dist/mcp/session-delta.js.map +1 -0
  119. package/dist/mcp/telemetry.d.ts +1 -0
  120. package/dist/mcp/telemetry.d.ts.map +1 -1
  121. package/dist/mcp/telemetry.js +105 -5
  122. package/dist/mcp/telemetry.js.map +1 -1
  123. package/dist/mcp/tools/code.d.ts +3 -2
  124. package/dist/mcp/tools/code.d.ts.map +1 -1
  125. package/dist/mcp/tools/code.js +76 -5
  126. package/dist/mcp/tools/code.js.map +1 -1
  127. package/dist/mcp/tools/context-wire-format.d.ts +1 -0
  128. package/dist/mcp/tools/context-wire-format.d.ts.map +1 -1
  129. package/dist/mcp/tools/context-wire-format.js +22 -13
  130. package/dist/mcp/tools/context-wire-format.js.map +1 -1
  131. package/dist/mcp/tools/context.d.ts +2 -1
  132. package/dist/mcp/tools/context.d.ts.map +1 -1
  133. package/dist/mcp/tools/context.js +29 -3
  134. package/dist/mcp/tools/context.js.map +1 -1
  135. package/dist/mcp/tools/file-gateway.d.ts +104 -4
  136. package/dist/mcp/tools/file-gateway.d.ts.map +1 -1
  137. package/dist/mcp/tools/file-gateway.js +137 -9
  138. package/dist/mcp/tools/file-gateway.js.map +1 -1
  139. package/dist/mcp/tools/file-read.d.ts +2 -1
  140. package/dist/mcp/tools/file-read.d.ts.map +1 -1
  141. package/dist/mcp/tools/file-read.js +63 -9
  142. package/dist/mcp/tools/file-read.js.map +1 -1
  143. package/dist/mcp/tools/repo.d.ts.map +1 -1
  144. package/dist/mcp/tools/repo.js +11 -0
  145. package/dist/mcp/tools/repo.js.map +1 -1
  146. package/dist/mcp/tools/response.d.ts +11 -0
  147. package/dist/mcp/tools/response.d.ts.map +1 -0
  148. package/dist/mcp/tools/response.js +53 -0
  149. package/dist/mcp/tools/response.js.map +1 -0
  150. package/dist/mcp/tools/search-edit/index.d.ts +2 -1
  151. package/dist/mcp/tools/search-edit/index.d.ts.map +1 -1
  152. package/dist/mcp/tools/search-edit/index.js +14 -4
  153. package/dist/mcp/tools/search-edit/index.js.map +1 -1
  154. package/dist/mcp/tools/search-edit/planner.d.ts +10 -4
  155. package/dist/mcp/tools/search-edit/planner.d.ts.map +1 -1
  156. package/dist/mcp/tools/search-edit/planner.js +102 -38
  157. package/dist/mcp/tools/search-edit/planner.js.map +1 -1
  158. package/dist/mcp/tools/semantic-enrichment.d.ts +4 -0
  159. package/dist/mcp/tools/semantic-enrichment.d.ts.map +1 -0
  160. package/dist/mcp/tools/semantic-enrichment.js +12 -0
  161. package/dist/mcp/tools/semantic-enrichment.js.map +1 -0
  162. package/dist/mcp/tools/slice-wire-format.d.ts.map +1 -1
  163. package/dist/mcp/tools/slice-wire-format.js +2 -0
  164. package/dist/mcp/tools/slice-wire-format.js.map +1 -1
  165. package/dist/mcp/tools/slice.d.ts.map +1 -1
  166. package/dist/mcp/tools/slice.js +13 -0
  167. package/dist/mcp/tools/slice.js.map +1 -1
  168. package/dist/mcp/tools/symbol-wire-format.d.ts.map +1 -1
  169. package/dist/mcp/tools/symbol-wire-format.js +2 -0
  170. package/dist/mcp/tools/symbol-wire-format.js.map +1 -1
  171. package/dist/mcp/tools/tool-descriptors.d.ts.map +1 -1
  172. package/dist/mcp/tools/tool-descriptors.js +23 -3
  173. package/dist/mcp/tools/tool-descriptors.js.map +1 -1
  174. package/dist/mcp/tools.d.ts +280 -6
  175. package/dist/mcp/tools.d.ts.map +1 -1
  176. package/dist/mcp/tools.js +181 -8
  177. package/dist/mcp/tools.js.map +1 -1
  178. package/dist/observability/aggregator.d.ts +21 -1
  179. package/dist/observability/aggregator.d.ts.map +1 -1
  180. package/dist/observability/aggregator.js +160 -9
  181. package/dist/observability/aggregator.js.map +1 -1
  182. package/dist/observability/event-tap.d.ts +19 -0
  183. package/dist/observability/event-tap.d.ts.map +1 -1
  184. package/dist/observability/event-tap.js.map +1 -1
  185. package/dist/observability/index.d.ts +3 -3
  186. package/dist/observability/index.d.ts.map +1 -1
  187. package/dist/observability/index.js +1 -1
  188. package/dist/observability/index.js.map +1 -1
  189. package/dist/observability/service.d.ts +2 -1
  190. package/dist/observability/service.d.ts.map +1 -1
  191. package/dist/observability/service.js +16 -0
  192. package/dist/observability/service.js.map +1 -1
  193. package/dist/observability/types.d.ts +47 -3
  194. package/dist/observability/types.d.ts.map +1 -1
  195. package/dist/observability/types.js +8 -0
  196. package/dist/observability/types.js.map +1 -1
  197. package/dist/runtime/response-artifacts.d.ts +104 -0
  198. package/dist/runtime/response-artifacts.d.ts.map +1 -0
  199. package/dist/runtime/response-artifacts.js +330 -0
  200. package/dist/runtime/response-artifacts.js.map +1 -0
  201. package/dist/scip/ingestion.d.ts.map +1 -1
  202. package/dist/scip/ingestion.js +26 -5
  203. package/dist/scip/ingestion.js.map +1 -1
  204. package/dist/scip/scip-io-runner.d.ts.map +1 -1
  205. package/dist/scip/scip-io-runner.js +13 -0
  206. package/dist/scip/scip-io-runner.js.map +1 -1
  207. package/dist/scip/types.d.ts +7 -0
  208. package/dist/scip/types.d.ts.map +1 -1
  209. package/dist/semantic/cache-key.d.ts +15 -0
  210. package/dist/semantic/cache-key.d.ts.map +1 -0
  211. package/dist/semantic/cache-key.js +20 -0
  212. package/dist/semantic/cache-key.js.map +1 -0
  213. package/dist/semantic/enrichment.d.ts +50 -0
  214. package/dist/semantic/enrichment.d.ts.map +1 -0
  215. package/dist/semantic/enrichment.js +307 -0
  216. package/dist/semantic/enrichment.js.map +1 -0
  217. package/dist/semantic/index-utils.d.ts +4 -0
  218. package/dist/semantic/index-utils.d.ts.map +1 -0
  219. package/dist/semantic/index-utils.js +67 -0
  220. package/dist/semantic/index-utils.js.map +1 -0
  221. package/dist/semantic/language-packs.d.ts +19 -0
  222. package/dist/semantic/language-packs.d.ts.map +1 -0
  223. package/dist/semantic/language-packs.js +65 -0
  224. package/dist/semantic/language-packs.js.map +1 -0
  225. package/dist/semantic/precision.d.ts +13 -0
  226. package/dist/semantic/precision.d.ts.map +1 -0
  227. package/dist/semantic/precision.js +43 -0
  228. package/dist/semantic/precision.js.map +1 -0
  229. package/dist/semantic/providers/lsp/candidates.d.ts +69 -0
  230. package/dist/semantic/providers/lsp/candidates.d.ts.map +1 -0
  231. package/dist/semantic/providers/lsp/candidates.js +204 -0
  232. package/dist/semantic/providers/lsp/candidates.js.map +1 -0
  233. package/dist/semantic/providers/lsp/client.d.ts +58 -0
  234. package/dist/semantic/providers/lsp/client.d.ts.map +1 -0
  235. package/dist/semantic/providers/lsp/client.js +283 -0
  236. package/dist/semantic/providers/lsp/client.js.map +1 -0
  237. package/dist/semantic/providers/lsp/runner.d.ts +55 -0
  238. package/dist/semantic/providers/lsp/runner.d.ts.map +1 -0
  239. package/dist/semantic/providers/lsp/runner.js +602 -0
  240. package/dist/semantic/providers/lsp/runner.js.map +1 -0
  241. package/dist/semantic/providers/scip/adapter.d.ts +14 -0
  242. package/dist/semantic/providers/scip/adapter.d.ts.map +1 -0
  243. package/dist/semantic/providers/scip/adapter.js +78 -0
  244. package/dist/semantic/providers/scip/adapter.js.map +1 -0
  245. package/dist/semantic/source-selection.d.ts +27 -0
  246. package/dist/semantic/source-selection.d.ts.map +1 -0
  247. package/dist/semantic/source-selection.js +68 -0
  248. package/dist/semantic/source-selection.js.map +1 -0
  249. package/dist/semantic/types.d.ts +152 -0
  250. package/dist/semantic/types.d.ts.map +1 -0
  251. package/dist/semantic/types.js +2 -0
  252. package/dist/semantic/types.js.map +1 -0
  253. package/dist/semantic/writer.d.ts +20 -0
  254. package/dist/semantic/writer.d.ts.map +1 -0
  255. package/dist/semantic/writer.js +238 -0
  256. package/dist/semantic/writer.js.map +1 -0
  257. package/dist/server.d.ts.map +1 -1
  258. package/dist/server.js +17 -9
  259. package/dist/server.js.map +1 -1
  260. package/dist/ui/observability.js +28 -4
  261. package/dist/ui/observability.js.map +1 -1
  262. package/package.json +5 -2
  263. package/scripts/postinstall-tree-sitter.mjs +194 -0
  264. package/scripts/postinstall.mjs +10 -2
package/README.md CHANGED
@@ -1,9 +1,9 @@
1
1
  <div align="center">
2
- <img src="https://github.com/GlitterKill/sdl-mcp/blob/main/docs/Symbol_Delta_Ledger_MCP.jpg" alt="Symbol Delta Ledger MCP">
2
+ <img src="https://github.com/GlitterKill/sdl-mcp/blob/main/docs/SDL-MCP_promo.webp" alt="Symbol Delta Ledger MCP">
3
3
 
4
4
  <br/>
5
5
 
6
- # SDL-MCP
6
+ # SYMBOL DELTA LEDGER
7
7
 
8
8
  ### **Cards-first code context for AI coding agents**
9
9
 
@@ -80,7 +80,7 @@ flowchart TD
80
80
 
81
81
  - **Node.js 24+** is required ([download](https://nodejs.org/)). SDL-MCP uses Node.js features not available in earlier versions. Run `node -v` to check.
82
82
 
83
- > **Peer dependency warnings during install?** The tree-sitter grammar packages may produce `ERESOLVE` warnings about peer dependencies. These are harmless — the install succeeds and everything works correctly. Add `--legacy-peer-deps` to suppress them: `npm install -g sdl-mcp --legacy-peer-deps`
83
+ > **Peer dependency warnings during install?** The tree-sitter grammar packages may produce `ERESOLVE` warnings about peer dependencies. These are harmless — the install succeeds and everything works correctly. Add `--legacy-peer-deps` to suppress them: `npm install -g sdl-mcp --legacy-peer-deps`. SDL-MCP's postinstall also verifies tree-sitter grammar bindings and rebuilds missing ones before pruning sources; installs that use `--ignore-scripts` should run `npm rebuild tree-sitter tree-sitter-kotlin` if a grammar is unavailable.
84
84
 
85
85
  <br/>
86
86
 
@@ -474,7 +474,7 @@ flowchart LR
474
474
 
475
475
  ### CLI Tool Access — No MCP Server Required
476
476
 
477
- Access 30 SDL-MCP action aliases directly from the command line with `sdl-mcp tool`. No MCP server, transport, or SDK is required.
477
+ Access 35 SDL-MCP action aliases directly from the command line with `sdl-mcp tool`. No MCP server, transport, or SDK is required.
478
478
 
479
479
  ```bash
480
480
  # Search for symbols
@@ -485,13 +485,17 @@ sdl-mcp tool slice.build --task-text "debug auth flow" --max-cards 50
485
485
 
486
486
  # Pipe JSON args, chain commands
487
487
  echo '{"repoId":"my-repo"}' | sdl-mcp tool symbol.search --query "auth"
488
+
489
+ # Apply a single-file targeted write
490
+ sdl-mcp tool file.write --repo-id my-repo --file-path config/app.json \
491
+ --json-path server.port --json-value 8080
488
492
  ```
489
493
 
490
- Features include typed argument coercion (string, number, boolean, string[], json), budget flag merging, stdin JSON piping with CLI-flags-win precedence, auto-resolved `repoId` from cwd, four output formats (json, json-compact, pretty, table), typo suggestions, and per-action `--help`. The CLI dispatches through the same gateway router and Zod schemas as the MCP server — identical code paths, identical validation.
494
+ Features include typed argument coercion (string, number, boolean, string[], json), budget flag merging, stdin JSON piping with CLI flag precedence, auto-resolved `repoId` from cwd, four output formats (json, json-compact, pretty, table), typo suggestions, and per-action `--help`. The CLI dispatches through the same gateway router and Zod schemas as the MCP server — identical code paths, identical validation.
491
495
 
492
496
  **Why it matters:**
493
497
 
494
- - 30 direct action aliases accessible from **any terminal** — no server, transport, or SDK required
498
+ - 35 direct action aliases accessible from **any terminal** — no server, transport, or SDK required
495
499
  - Same code paths and Zod validation as the MCP server — identical behavior
496
500
  - Four output formats (json, json-compact, pretty, table) for scripting and CI pipelines
497
501
  - Auto-resolves repoId from cwd, supports stdin JSON piping and per-action `--help`
@@ -502,12 +506,12 @@ Features include typed argument coercion (string, number, boolean, string[], jso
502
506
 
503
507
  ### Tool Gateway — Compact Tool Registration
504
508
 
505
- The tool gateway projects the 30 gateway-routable SDL actions into **4 namespace-scoped tools** (`sdl.query`, `sdl.code`, `sdl.repo`, `sdl.agent`), reducing `tools/list` overhead from the full flat schema surface to a compact gateway surface.
509
+ The tool gateway projects the 34 gateway-routable SDL actions into **4 namespace-scoped tools** (`sdl.query`, `sdl.code`, `sdl.repo`, `sdl.agent`), reducing `tools/list` overhead from the full flat schema surface to a compact gateway surface.
506
510
 
507
511
  ```mermaid
508
512
  %%{init: {"theme":"base","themeVariables":{"background":"#ffffff","primaryColor":"#E7F8F2","primaryBorderColor":"#0F766E","primaryTextColor":"#102A43","secondaryColor":"#E8F1FF","secondaryBorderColor":"#2563EB","secondaryTextColor":"#102A43","tertiaryColor":"#FFF4D6","tertiaryBorderColor":"#B45309","tertiaryTextColor":"#102A43","lineColor":"#0F766E","textColor":"#102A43","fontFamily":"Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, sans-serif"},"flowchart":{"curve":"basis","htmlLabels":true}}}%%
509
513
  flowchart LR
510
- Before["Flat mode<br/>33 tools<br/>2 universal + 31 flat"] e1@--> After["Gateway mode<br/>6 tools<br/>2 universal + 4 gateway"]
514
+ Before["Flat mode<br/>37 tools<br/>2 universal + 35 flat"] e1@--> After["Gateway mode<br/>6 tools<br/>2 universal + 4 gateway"]
511
515
  After e2@--> Savings["Smaller tools/list payload<br/>lower agent startup overhead"]
512
516
 
513
517
  classDef source fill:#E7F8F2,stroke:#0F766E,stroke-width:2px,color:#102A43;
@@ -525,7 +529,7 @@ Each gateway tool accepts an `action` discriminator field (e.g., `{ action: "sym
525
529
  **Why it matters:**
526
530
 
527
531
  - Large reduction in `tools/list` overhead for gateway-first agents
528
- - 30 gateway-routable actions consolidated into 4 namespace-scoped tools for simpler agent selection
532
+ - 34 gateway-routable actions consolidated into 4 namespace-scoped tools for simpler agent selection
529
533
  - Fewer tool choices means faster and more accurate tool dispatch by the agent
530
534
  - Choose Code Mode for task-shaped retrieval first; opt out of exclusive Code Mode when you also need regular flat or gateway tools
531
535
 
@@ -547,10 +551,10 @@ Built-in read-only dashboard surfaces every metric needed to diagnose SDL-MCP be
547
551
 
548
552
  | Mode | Tool count | Composition |
549
553
  | :------------------ | :--------- | :--------------------------------------------------------------- |
550
- | Flat | `33` | `2` universal + `31` flat tools |
554
+ | Flat | `37` | `2` universal + `35` flat tools |
551
555
  | Gateway | `6` | `2` universal + `4` gateway tools |
552
- | Gateway + legacy | `37` | `2` universal + `4` gateway + `31` flat tools |
553
- | Code Mode exclusive | `4` | `sdl.action.search`, `sdl.context`, `sdl.manual`, `sdl.workflow` |
556
+ | Gateway + legacy | `41` | `2` universal + `4` gateway + `35` flat tools |
557
+ | Code Mode exclusive | `5` | `sdl.action.search`, `sdl.context`, `sdl.file`, `sdl.manual`, `sdl.workflow` |
554
558
 
555
559
  The generated source of truth is [`docs/generated/tool-inventory.md`](./docs/generated/tool-inventory.md).
556
560
 
@@ -639,7 +643,7 @@ The generated source of truth is [`docs/generated/tool-inventory.md`](./docs/gen
639
643
  | `sdl-mcp doctor` | Validate runtime, config, DB, grammars, repo access |
640
644
  | `sdl-mcp index` | Index repositories (with optional `--watch` mode) |
641
645
  | `sdl-mcp serve` | Start MCP server (`--stdio` or `--http`) |
642
- | `sdl-mcp tool` | Access 30 direct action aliases ([docs](./docs/feature-deep-dives/cli-tool-access.md)) |
646
+ | `sdl-mcp tool` | Access 35 direct action aliases ([docs](./docs/feature-deep-dives/cli-tool-access.md)) |
643
647
  | `sdl-mcp info` | Runtime diagnostics — version, Node.js, platform, database, config |
644
648
  | `sdl-mcp summary` | Generate copy/paste context summaries from the CLI |
645
649
  | `sdl-mcp health` | Compute composite health score with badge/JSON output |
@@ -761,8 +765,8 @@ flowchart TD
761
765
  | [Context Modes](./docs/feature-deep-dives/context-modes.md) | Precise vs broad retrieval, adaptive symbol ranking, benchmark trade-offs |
762
766
  | [Indexing & Languages](./docs/feature-deep-dives/indexing-languages.md) | Rust/TS engines, two-pass architecture, 12-language support |
763
767
  | [Runtime Execution](./docs/feature-deep-dives/runtime-execution.md) | Sandboxed subprocess execution with governance |
764
- | [CLI Tool Access](./docs/feature-deep-dives/cli-tool-access.md) | Direct CLI access to 30 action aliases, output formats, stdin piping, scripting |
765
- | [Tool Gateway](./docs/feature-deep-dives/tool-gateway.md) | 30 gateway-routable actions, 4 namespace tools, thin schemas, migration guide |
768
+ | [CLI Tool Access](./docs/feature-deep-dives/cli-tool-access.md) | Direct CLI access to 35 action aliases, output formats, stdin piping, scripting |
769
+ | [Tool Gateway](./docs/feature-deep-dives/tool-gateway.md) | 34 gateway-routable actions, 4 namespace tools, thin schemas, migration guide |
766
770
  | [Semantic Engine](./docs/feature-deep-dives/semantic-engine.md) | Pass-2 call resolution, embedding search, LLM summaries, confidence scoring |
767
771
  | [Semantic Embeddings Setup](./docs/feature-deep-dives/semantic-embeddings-setup.md) | Dependencies, model installation, provider configuration, tier-by-tier setup |
768
772
  | [Code Mode](./docs/feature-deep-dives/code-mode.md) | `sdl.context`, `sdl.workflow`, action discovery, manual reference, one-call workflows |
@@ -40,6 +40,7 @@
40
40
  "sh"
41
41
  ],
42
42
  "maxFileBytes": 2000000,
43
+ "postIndexSessionTimeoutMs": 900000,
43
44
  "includeNodeModulesTypes": true,
44
45
  "packageJsonPath": null,
45
46
  "tsconfigPath": null,
@@ -162,6 +163,27 @@
162
163
  "candidateLimit": 100
163
164
  }
164
165
  },
166
+ "semanticEnrichment": {
167
+ "enabled": false,
168
+ "autoRunOnIndexRefresh": false,
169
+ "installPolicy": "never",
170
+ "cacheDir": null,
171
+ "concurrency": 1,
172
+ "timeoutMs": 300000,
173
+ "languages": [],
174
+ "providers": {
175
+ "scip": {
176
+ "enabled": true,
177
+ "indexes": []
178
+ },
179
+ "lsp": {
180
+ "enabled": true,
181
+ "confidence": 0.8,
182
+ "candidateLimit": 200,
183
+ "servers": {}
184
+ }
185
+ }
186
+ },
165
187
  "prefetch": {
166
188
  "enabled": true,
167
189
  "maxBudgetPercent": 20,
@@ -207,6 +229,10 @@
207
229
  "maxStdoutBytes": 1048576,
208
230
  "maxStderrBytes": 262144,
209
231
  "maxArtifactBytes": 10485760,
232
+ "maxResponseArtifactsPerRepo": 128,
233
+ "maxResponseArtifactBytesPerRepo": 1342177280,
234
+ "maxResponseArtifactBytesTotal": 2684354560,
235
+ "maxResponseArtifactsTotal": 512,
210
236
  "artifactTtlHours": 24,
211
237
  "maxConcurrentJobs": 2,
212
238
  "envAllowlist": [],
@@ -91,6 +91,13 @@
91
91
  "minimum": 1,
92
92
  "default": 2000000
93
93
  },
94
+ "postIndexSessionTimeoutMs": {
95
+ "type": "integer",
96
+ "description": "Hard timeout for post-index finalization writes in milliseconds. Covers embeddings, summaries, deferred index builds, memory sync, and audit flushing after pass-1/pass-2 complete.",
97
+ "minimum": 1000,
98
+ "maximum": 86400000,
99
+ "default": 900000
100
+ },
94
101
  "includeNodeModulesTypes": {
95
102
  "type": "boolean",
96
103
  "description": "Include node_modules/@types declarations in TypeScript call resolution (excluding @types/node)",
@@ -831,6 +838,145 @@
831
838
  "embeddingConcurrency": 1
832
839
  }
833
840
  },
841
+ "semanticEnrichment": {
842
+ "type": "object",
843
+ "description": "Provider-backed graph precision enrichment. Separate from semantic embeddings/retrieval.",
844
+ "properties": {
845
+ "enabled": { "type": "boolean", "default": false },
846
+ "autoRunOnIndexRefresh": {
847
+ "type": "boolean",
848
+ "default": false,
849
+ "description": "When true, run eligible enrichment providers after index.refresh. SCIP keeps its existing mid-index ingest placement and is not moved to the post-index hook."
850
+ },
851
+ "installPolicy": {
852
+ "type": "string",
853
+ "enum": ["never", "verified"],
854
+ "default": "never",
855
+ "description": "Controls provider download behavior. 'verified' permits only checksum-verified downloads; package-manager install recipes are never executed automatically."
856
+ },
857
+ "cacheDir": {
858
+ "type": ["string", "null"],
859
+ "default": null,
860
+ "description": "Reserved cache root for future durable provider caches. V2 writes provider results to the graph and does not persist LSP response caches here."
861
+ },
862
+ "concurrency": {
863
+ "type": "integer",
864
+ "minimum": 1,
865
+ "maximum": 8,
866
+ "default": 1,
867
+ "description": "Reserved cap for future cross-provider scheduling. V2 runs selected providers serially, with provider-specific internal limits where needed."
868
+ },
869
+ "timeoutMs": {
870
+ "type": "integer",
871
+ "minimum": 1000,
872
+ "maximum": 1800000,
873
+ "default": 300000
874
+ },
875
+ "languages": {
876
+ "type": "array",
877
+ "items": { "type": "string" },
878
+ "default": [],
879
+ "description": "Language IDs to enrich. Empty means all current tree-sitter-backed languages."
880
+ },
881
+ "providers": {
882
+ "type": "object",
883
+ "description": "Provider-specific overrides. Source selection is fixed priority: SCIP > LSP.",
884
+ "properties": {
885
+ "scip": {
886
+ "type": "object",
887
+ "properties": {
888
+ "enabled": { "type": "boolean", "default": true },
889
+ "providerId": { "type": "string" },
890
+ "providerVersion": { "type": "string" },
891
+ "indexes": {
892
+ "type": "array",
893
+ "items": {
894
+ "type": "object",
895
+ "required": ["path"],
896
+ "properties": {
897
+ "path": { "type": "string" },
898
+ "label": { "type": "string" }
899
+ }
900
+ },
901
+ "default": []
902
+ }
903
+ }
904
+ },
905
+ "lsp": {
906
+ "type": "object",
907
+ "properties": {
908
+ "enabled": { "type": "boolean", "default": true },
909
+ "providerId": { "type": "string" },
910
+ "providerVersion": { "type": "string" },
911
+ "confidence": {
912
+ "type": "number",
913
+ "minimum": 0.5,
914
+ "maximum": 1,
915
+ "default": 0.8
916
+ },
917
+ "candidateLimit": {
918
+ "type": "integer",
919
+ "minimum": 0,
920
+ "maximum": 5000,
921
+ "default": 200
922
+ },
923
+ "servers": {
924
+ "type": "object",
925
+ "additionalProperties": {
926
+ "type": "object",
927
+ "required": ["serverId", "command"],
928
+ "properties": {
929
+ "enabled": { "type": "boolean", "default": true },
930
+ "serverId": { "type": "string" },
931
+ "command": { "type": "string" },
932
+ "args": {
933
+ "type": "array",
934
+ "items": { "type": "string" },
935
+ "default": []
936
+ },
937
+ "languages": {
938
+ "type": "array",
939
+ "items": { "type": "string" },
940
+ "default": []
941
+ },
942
+ "documentLanguageIds": {
943
+ "type": "array",
944
+ "items": { "type": "string" },
945
+ "default": []
946
+ },
947
+ "filePatterns": {
948
+ "type": "array",
949
+ "items": { "type": "string" },
950
+ "default": []
951
+ },
952
+ "capabilities": {
953
+ "type": "array",
954
+ "items": { "type": "string" },
955
+ "default": []
956
+ },
957
+ "readiness": { "type": "string" },
958
+ "initializationOptions": { "type": "object" }
959
+ }
960
+ },
961
+ "default": {}
962
+ }
963
+ }
964
+ }
965
+ },
966
+ "default": {}
967
+ }
968
+ },
969
+ "default": {
970
+ "enabled": false,
971
+ "autoRunOnIndexRefresh": false,
972
+ "installPolicy": "never",
973
+ "cacheDir": null,
974
+ "concurrency": 1,
975
+ "timeoutMs": 300000,
976
+ "languages": [],
977
+ "providers": {}
978
+ }
979
+ },
834
980
  "prefetch": {
835
981
  "type": "object",
836
982
  "description": "Predictive prefetch configuration",
@@ -1107,6 +1253,30 @@
1107
1253
  "minimum": 1024,
1108
1254
  "default": 10485760
1109
1255
  },
1256
+ "maxResponseArtifactsPerRepo": {
1257
+ "type": "integer",
1258
+ "description": "Maximum response artifacts retained per repository",
1259
+ "minimum": 1,
1260
+ "default": 128
1261
+ },
1262
+ "maxResponseArtifactBytesPerRepo": {
1263
+ "type": "integer",
1264
+ "description": "Maximum response-artifact bytes retained per repository",
1265
+ "minimum": 1024,
1266
+ "default": 1342177280
1267
+ },
1268
+ "maxResponseArtifactBytesTotal": {
1269
+ "type": "integer",
1270
+ "description": "Maximum response-artifact bytes retained across the artifact directory",
1271
+ "minimum": 1024,
1272
+ "default": 2684354560
1273
+ },
1274
+ "maxResponseArtifactsTotal": {
1275
+ "type": "integer",
1276
+ "description": "Maximum response artifacts retained across the artifact directory",
1277
+ "minimum": 1,
1278
+ "default": 512
1279
+ },
1110
1280
  "artifactTtlHours": {
1111
1281
  "type": "integer",
1112
1282
  "description": "Time-to-live for stored artifacts in hours",
@@ -1188,7 +1358,7 @@
1188
1358
  },
1189
1359
  "rateLimit": {
1190
1360
  "type": "object",
1191
- "description": "Per-client token bucket for protected HTTP routes before bearer-token comparison",
1361
+ "description": "Per-client token bucket for failed HTTP auth attempts",
1192
1362
  "properties": {
1193
1363
  "bucketSize": {
1194
1364
  "type": "integer",