sdl-mcp 0.11.2 → 0.11.4

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 (372) hide show
  1. package/README.md +22 -14
  2. package/config/sdlmcp.config.example.json +32 -5
  3. package/config/sdlmcp.config.json +3 -2
  4. package/config/sdlmcp.config.schema.json +61 -8
  5. package/dist/.tsbuildinfo +1 -1
  6. package/dist/agent/context-engine.d.ts.map +1 -1
  7. package/dist/agent/context-engine.js +71 -13
  8. package/dist/agent/context-engine.js.map +1 -1
  9. package/dist/agent/context-ranking.d.ts.map +1 -1
  10. package/dist/agent/context-ranking.js +17 -4
  11. package/dist/agent/context-ranking.js.map +1 -1
  12. package/dist/agent/context-seeding.d.ts +6 -4
  13. package/dist/agent/context-seeding.d.ts.map +1 -1
  14. package/dist/agent/context-seeding.js +306 -60
  15. package/dist/agent/context-seeding.js.map +1 -1
  16. package/dist/agent/executor.d.ts +18 -5
  17. package/dist/agent/executor.d.ts.map +1 -1
  18. package/dist/agent/executor.js +347 -42
  19. package/dist/agent/executor.js.map +1 -1
  20. package/dist/agent/identifier-extraction.d.ts.map +1 -1
  21. package/dist/agent/identifier-extraction.js +6 -1
  22. package/dist/agent/identifier-extraction.js.map +1 -1
  23. package/dist/agent/types.d.ts +11 -2
  24. package/dist/agent/types.d.ts.map +1 -1
  25. package/dist/cli/argParsing.d.ts.map +1 -1
  26. package/dist/cli/argParsing.js +12 -0
  27. package/dist/cli/argParsing.js.map +1 -1
  28. package/dist/cli/commands/doctor.js +47 -6
  29. package/dist/cli/commands/doctor.js.map +1 -1
  30. package/dist/cli/commands/index.d.ts.map +1 -1
  31. package/dist/cli/commands/index.js +33 -15
  32. package/dist/cli/commands/index.js.map +1 -1
  33. package/dist/cli/commands/init.d.ts.map +1 -1
  34. package/dist/cli/commands/init.js +484 -132
  35. package/dist/cli/commands/init.js.map +1 -1
  36. package/dist/cli/commands/serve.d.ts.map +1 -1
  37. package/dist/cli/commands/serve.js +40 -21
  38. package/dist/cli/commands/serve.js.map +1 -1
  39. package/dist/cli/commands/tool-actions.d.ts +1 -1
  40. package/dist/cli/commands/tool-actions.d.ts.map +1 -1
  41. package/dist/cli/commands/tool-actions.js +199 -1
  42. package/dist/cli/commands/tool-actions.js.map +1 -1
  43. package/dist/cli/commands/tool-dispatch.d.ts +3 -0
  44. package/dist/cli/commands/tool-dispatch.d.ts.map +1 -1
  45. package/dist/cli/commands/tool-dispatch.js +163 -24
  46. package/dist/cli/commands/tool-dispatch.js.map +1 -1
  47. package/dist/cli/commands/tool-output.js +3 -3
  48. package/dist/cli/commands/tool-output.js.map +1 -1
  49. package/dist/cli/index.js +5 -2
  50. package/dist/cli/index.js.map +1 -1
  51. package/dist/cli/transport/http.d.ts +18 -6
  52. package/dist/cli/transport/http.d.ts.map +1 -1
  53. package/dist/cli/transport/http.js +428 -193
  54. package/dist/cli/transport/http.js.map +1 -1
  55. package/dist/cli/types.d.ts +1 -0
  56. package/dist/cli/types.d.ts.map +1 -1
  57. package/dist/code-mode/action-catalog.d.ts +2 -2
  58. package/dist/code-mode/action-catalog.d.ts.map +1 -1
  59. package/dist/code-mode/action-catalog.js +215 -118
  60. package/dist/code-mode/action-catalog.js.map +1 -1
  61. package/dist/code-mode/descriptions.d.ts.map +1 -1
  62. package/dist/code-mode/descriptions.js +4 -1
  63. package/dist/code-mode/descriptions.js.map +1 -1
  64. package/dist/code-mode/index.d.ts +13 -0
  65. package/dist/code-mode/index.d.ts.map +1 -1
  66. package/dist/code-mode/index.js +214 -152
  67. package/dist/code-mode/index.js.map +1 -1
  68. package/dist/code-mode/manual-generator.d.ts.map +1 -1
  69. package/dist/code-mode/manual-generator.js +25 -31
  70. package/dist/code-mode/manual-generator.js.map +1 -1
  71. package/dist/code-mode/ref-resolver.d.ts +1 -0
  72. package/dist/code-mode/ref-resolver.d.ts.map +1 -1
  73. package/dist/code-mode/ref-resolver.js +31 -4
  74. package/dist/code-mode/ref-resolver.js.map +1 -1
  75. package/dist/code-mode/transforms.d.ts.map +1 -1
  76. package/dist/code-mode/transforms.js +7 -1
  77. package/dist/code-mode/transforms.js.map +1 -1
  78. package/dist/code-mode/types.d.ts +3 -0
  79. package/dist/code-mode/types.d.ts.map +1 -1
  80. package/dist/code-mode/types.js +2 -0
  81. package/dist/code-mode/types.js.map +1 -1
  82. package/dist/code-mode/workflow-executor.d.ts.map +1 -1
  83. package/dist/code-mode/workflow-executor.js +82 -9
  84. package/dist/code-mode/workflow-executor.js.map +1 -1
  85. package/dist/code-mode/workflow-parser.d.ts +1 -0
  86. package/dist/code-mode/workflow-parser.d.ts.map +1 -1
  87. package/dist/code-mode/workflow-parser.js +17 -5
  88. package/dist/code-mode/workflow-parser.js.map +1 -1
  89. package/dist/code-mode/workflow-truncation.d.ts.map +1 -1
  90. package/dist/code-mode/workflow-truncation.js +44 -4
  91. package/dist/code-mode/workflow-truncation.js.map +1 -1
  92. package/dist/config/admin-api.d.ts +67 -0
  93. package/dist/config/admin-api.d.ts.map +1 -0
  94. package/dist/config/admin-api.js +762 -0
  95. package/dist/config/admin-api.js.map +1 -0
  96. package/dist/config/admin-metadata.d.ts +46 -0
  97. package/dist/config/admin-metadata.d.ts.map +1 -0
  98. package/dist/config/admin-metadata.js +140 -0
  99. package/dist/config/admin-metadata.js.map +1 -0
  100. package/dist/config/configPath.d.ts.map +1 -1
  101. package/dist/config/configPath.js +4 -13
  102. package/dist/config/configPath.js.map +1 -1
  103. package/dist/config/constants.d.ts +11 -4
  104. package/dist/config/constants.d.ts.map +1 -1
  105. package/dist/config/constants.js +11 -4
  106. package/dist/config/constants.js.map +1 -1
  107. package/dist/config/semantic-embedding-model-plan.d.ts +13 -0
  108. package/dist/config/semantic-embedding-model-plan.d.ts.map +1 -0
  109. package/dist/config/semantic-embedding-model-plan.js +82 -0
  110. package/dist/config/semantic-embedding-model-plan.js.map +1 -0
  111. package/dist/config/types.d.ts +55 -5
  112. package/dist/config/types.d.ts.map +1 -1
  113. package/dist/config/types.js +35 -15
  114. package/dist/config/types.js.map +1 -1
  115. package/dist/db/ladybug-core.d.ts +16 -5
  116. package/dist/db/ladybug-core.d.ts.map +1 -1
  117. package/dist/db/ladybug-core.js +201 -30
  118. package/dist/db/ladybug-core.js.map +1 -1
  119. package/dist/db/ladybug-derived-state.d.ts +2 -1
  120. package/dist/db/ladybug-derived-state.d.ts.map +1 -1
  121. package/dist/db/ladybug-derived-state.js +6 -1
  122. package/dist/db/ladybug-derived-state.js.map +1 -1
  123. package/dist/db/ladybug-prefetch-outcomes.d.ts +48 -0
  124. package/dist/db/ladybug-prefetch-outcomes.d.ts.map +1 -0
  125. package/dist/db/ladybug-prefetch-outcomes.js +109 -0
  126. package/dist/db/ladybug-prefetch-outcomes.js.map +1 -0
  127. package/dist/db/ladybug-processes.d.ts +1 -0
  128. package/dist/db/ladybug-processes.d.ts.map +1 -1
  129. package/dist/db/ladybug-processes.js +17 -0
  130. package/dist/db/ladybug-processes.js.map +1 -1
  131. package/dist/db/ladybug-queries.d.ts +1 -0
  132. package/dist/db/ladybug-queries.d.ts.map +1 -1
  133. package/dist/db/ladybug-queries.js +2 -0
  134. package/dist/db/ladybug-queries.js.map +1 -1
  135. package/dist/db/ladybug-repos.d.ts.map +1 -1
  136. package/dist/db/ladybug-repos.js +5 -0
  137. package/dist/db/ladybug-repos.js.map +1 -1
  138. package/dist/db/ladybug-schema.d.ts.map +1 -1
  139. package/dist/db/ladybug-schema.js +47 -17
  140. package/dist/db/ladybug-schema.js.map +1 -1
  141. package/dist/db/ladybug.d.ts.map +1 -1
  142. package/dist/db/ladybug.js +24 -19
  143. package/dist/db/ladybug.js.map +1 -1
  144. package/dist/db/migrations/index.d.ts.map +1 -1
  145. package/dist/db/migrations/index.js +2 -0
  146. package/dist/db/migrations/index.js.map +1 -1
  147. package/dist/db/migrations/m014-add-packed-stats.js +3 -15
  148. package/dist/db/migrations/m014-add-packed-stats.js.map +1 -1
  149. package/dist/db/migrations/m015-backfill-packed-stats.js +3 -15
  150. package/dist/db/migrations/m015-backfill-packed-stats.js.map +1 -1
  151. package/dist/db/migrations/m019-add-prefetch-outcomes.d.ts +5 -0
  152. package/dist/db/migrations/m019-add-prefetch-outcomes.d.ts.map +1 -0
  153. package/dist/db/migrations/m019-add-prefetch-outcomes.js +74 -0
  154. package/dist/db/migrations/m019-add-prefetch-outcomes.js.map +1 -0
  155. package/dist/gateway/descriptions.js +2 -2
  156. package/dist/gateway/descriptions.js.map +1 -1
  157. package/dist/gateway/router.d.ts.map +1 -1
  158. package/dist/gateway/router.js +6 -1
  159. package/dist/gateway/router.js.map +1 -1
  160. package/dist/gateway/schemas.d.ts +104 -3
  161. package/dist/gateway/schemas.d.ts.map +1 -1
  162. package/dist/gateway/schemas.js +179 -44
  163. package/dist/gateway/schemas.js.map +1 -1
  164. package/dist/graph/index.d.ts +3 -1
  165. package/dist/graph/index.d.ts.map +1 -1
  166. package/dist/graph/index.js +2 -1
  167. package/dist/graph/index.js.map +1 -1
  168. package/dist/graph/overview.js +6 -6
  169. package/dist/graph/overview.js.map +1 -1
  170. package/dist/graph/prefetch-model.d.ts +1 -0
  171. package/dist/graph/prefetch-model.d.ts.map +1 -1
  172. package/dist/graph/prefetch-model.js.map +1 -1
  173. package/dist/graph/prefetch-outcomes.d.ts +93 -0
  174. package/dist/graph/prefetch-outcomes.d.ts.map +1 -0
  175. package/dist/graph/prefetch-outcomes.js +429 -0
  176. package/dist/graph/prefetch-outcomes.js.map +1 -0
  177. package/dist/graph/prefetch.d.ts +33 -6
  178. package/dist/graph/prefetch.d.ts.map +1 -1
  179. package/dist/graph/prefetch.js +440 -61
  180. package/dist/graph/prefetch.js.map +1 -1
  181. package/dist/graph/slice/edge-projector.d.ts.map +1 -1
  182. package/dist/graph/slice/edge-projector.js +17 -4
  183. package/dist/graph/slice/edge-projector.js.map +1 -1
  184. package/dist/indexer/derived-refresh-queue.d.ts +9 -1
  185. package/dist/indexer/derived-refresh-queue.d.ts.map +1 -1
  186. package/dist/indexer/derived-refresh-queue.js +253 -19
  187. package/dist/indexer/derived-refresh-queue.js.map +1 -1
  188. package/dist/indexer/finalize-derived-state.d.ts.map +1 -1
  189. package/dist/indexer/finalize-derived-state.js +43 -72
  190. package/dist/indexer/finalize-derived-state.js.map +1 -1
  191. package/dist/indexer/metrics-updater.d.ts.map +1 -1
  192. package/dist/indexer/metrics-updater.js +14 -35
  193. package/dist/indexer/metrics-updater.js.map +1 -1
  194. package/dist/live-index/checkpoint-service.d.ts.map +1 -1
  195. package/dist/live-index/checkpoint-service.js +21 -1
  196. package/dist/live-index/checkpoint-service.js.map +1 -1
  197. package/dist/live-index/types.d.ts +1 -0
  198. package/dist/live-index/types.d.ts.map +1 -1
  199. package/dist/main.js +25 -5
  200. package/dist/main.js.map +1 -1
  201. package/dist/mcp/context-response-projection.d.ts +13 -7
  202. package/dist/mcp/context-response-projection.d.ts.map +1 -1
  203. package/dist/mcp/context-response-projection.js +147 -11
  204. package/dist/mcp/context-response-projection.js.map +1 -1
  205. package/dist/mcp/dispatch-limiter.d.ts +17 -2
  206. package/dist/mcp/dispatch-limiter.d.ts.map +1 -1
  207. package/dist/mcp/dispatch-limiter.js +81 -3
  208. package/dist/mcp/dispatch-limiter.js.map +1 -1
  209. package/dist/mcp/server-instructions.d.ts +2 -0
  210. package/dist/mcp/server-instructions.d.ts.map +1 -0
  211. package/dist/mcp/server-instructions.js +14 -0
  212. package/dist/mcp/server-instructions.js.map +1 -0
  213. package/dist/mcp/telemetry.d.ts +19 -0
  214. package/dist/mcp/telemetry.d.ts.map +1 -1
  215. package/dist/mcp/telemetry.js +9 -0
  216. package/dist/mcp/telemetry.js.map +1 -1
  217. package/dist/mcp/timing-diagnostics.d.ts +20 -0
  218. package/dist/mcp/timing-diagnostics.d.ts.map +1 -0
  219. package/dist/mcp/timing-diagnostics.js +82 -0
  220. package/dist/mcp/timing-diagnostics.js.map +1 -0
  221. package/dist/mcp/tool-call-formatter.d.ts +2 -2
  222. package/dist/mcp/tool-call-formatter.d.ts.map +1 -1
  223. package/dist/mcp/tool-call-formatter.js +387 -16
  224. package/dist/mcp/tool-call-formatter.js.map +1 -1
  225. package/dist/mcp/tools/buffer.d.ts.map +1 -1
  226. package/dist/mcp/tools/buffer.js +2 -1
  227. package/dist/mcp/tools/buffer.js.map +1 -1
  228. package/dist/mcp/tools/code.d.ts +2 -2
  229. package/dist/mcp/tools/code.d.ts.map +1 -1
  230. package/dist/mcp/tools/code.js +18 -6
  231. package/dist/mcp/tools/code.js.map +1 -1
  232. package/dist/mcp/tools/context.d.ts +19 -0
  233. package/dist/mcp/tools/context.d.ts.map +1 -1
  234. package/dist/mcp/tools/context.js +224 -6
  235. package/dist/mcp/tools/context.js.map +1 -1
  236. package/dist/mcp/tools/delta.d.ts +2 -1
  237. package/dist/mcp/tools/delta.d.ts.map +1 -1
  238. package/dist/mcp/tools/delta.js +4 -3
  239. package/dist/mcp/tools/delta.js.map +1 -1
  240. package/dist/mcp/tools/file-gateway.d.ts +134 -10
  241. package/dist/mcp/tools/file-gateway.d.ts.map +1 -1
  242. package/dist/mcp/tools/file-gateway.js +241 -25
  243. package/dist/mcp/tools/file-gateway.js.map +1 -1
  244. package/dist/mcp/tools/file-read.d.ts.map +1 -1
  245. package/dist/mcp/tools/file-read.js +64 -17
  246. package/dist/mcp/tools/file-read.js.map +1 -1
  247. package/dist/mcp/tools/file-write.d.ts.map +1 -1
  248. package/dist/mcp/tools/file-write.js +52 -2
  249. package/dist/mcp/tools/file-write.js.map +1 -1
  250. package/dist/mcp/tools/prRisk.d.ts +28 -9
  251. package/dist/mcp/tools/prRisk.d.ts.map +1 -1
  252. package/dist/mcp/tools/prRisk.js +90 -21
  253. package/dist/mcp/tools/prRisk.js.map +1 -1
  254. package/dist/mcp/tools/repo.d.ts.map +1 -1
  255. package/dist/mcp/tools/repo.js +153 -32
  256. package/dist/mcp/tools/repo.js.map +1 -1
  257. package/dist/mcp/tools/runtime.d.ts.map +1 -1
  258. package/dist/mcp/tools/runtime.js +116 -20
  259. package/dist/mcp/tools/runtime.js.map +1 -1
  260. package/dist/mcp/tools/scip.d.ts.map +1 -1
  261. package/dist/mcp/tools/scip.js +11 -1
  262. package/dist/mcp/tools/scip.js.map +1 -1
  263. package/dist/mcp/tools/search-edit/index.d.ts.map +1 -1
  264. package/dist/mcp/tools/search-edit/index.js +9 -0
  265. package/dist/mcp/tools/search-edit/index.js.map +1 -1
  266. package/dist/mcp/tools/search-edit/plan-store.d.ts +37 -1
  267. package/dist/mcp/tools/search-edit/plan-store.d.ts.map +1 -1
  268. package/dist/mcp/tools/search-edit/plan-store.js +2 -1
  269. package/dist/mcp/tools/search-edit/plan-store.js.map +1 -1
  270. package/dist/mcp/tools/search-edit/planner.d.ts +20 -5
  271. package/dist/mcp/tools/search-edit/planner.d.ts.map +1 -1
  272. package/dist/mcp/tools/search-edit/planner.js +326 -1
  273. package/dist/mcp/tools/search-edit/planner.js.map +1 -1
  274. package/dist/mcp/tools/slice.d.ts.map +1 -1
  275. package/dist/mcp/tools/slice.js +3 -2
  276. package/dist/mcp/tools/slice.js.map +1 -1
  277. package/dist/mcp/tools/symbol-edit/ast.d.ts +28 -0
  278. package/dist/mcp/tools/symbol-edit/ast.d.ts.map +1 -0
  279. package/dist/mcp/tools/symbol-edit/ast.js +513 -0
  280. package/dist/mcp/tools/symbol-edit/ast.js.map +1 -0
  281. package/dist/mcp/tools/symbol-edit/index.d.ts +12 -0
  282. package/dist/mcp/tools/symbol-edit/index.d.ts.map +1 -0
  283. package/dist/mcp/tools/symbol-edit/index.js +633 -0
  284. package/dist/mcp/tools/symbol-edit/index.js.map +1 -0
  285. package/dist/mcp/tools/symbol.d.ts +3 -2
  286. package/dist/mcp/tools/symbol.d.ts.map +1 -1
  287. package/dist/mcp/tools/symbol.js +13 -11
  288. package/dist/mcp/tools/symbol.js.map +1 -1
  289. package/dist/mcp/tools/tool-descriptors.d.ts.map +1 -1
  290. package/dist/mcp/tools/tool-descriptors.js +8 -1
  291. package/dist/mcp/tools/tool-descriptors.js.map +1 -1
  292. package/dist/mcp/tools/usage.d.ts.map +1 -1
  293. package/dist/mcp/tools/usage.js +19 -6
  294. package/dist/mcp/tools/usage.js.map +1 -1
  295. package/dist/mcp/tools.d.ts +332 -18
  296. package/dist/mcp/tools.d.ts.map +1 -1
  297. package/dist/mcp/tools.js +210 -11
  298. package/dist/mcp/tools.js.map +1 -1
  299. package/dist/observability/aggregator.d.ts +20 -1
  300. package/dist/observability/aggregator.d.ts.map +1 -1
  301. package/dist/observability/aggregator.js +121 -12
  302. package/dist/observability/aggregator.js.map +1 -1
  303. package/dist/observability/event-tap.d.ts +11 -0
  304. package/dist/observability/event-tap.d.ts.map +1 -1
  305. package/dist/observability/event-tap.js.map +1 -1
  306. package/dist/observability/service.d.ts +7 -0
  307. package/dist/observability/service.d.ts.map +1 -1
  308. package/dist/observability/service.js +29 -1
  309. package/dist/observability/service.js.map +1 -1
  310. package/dist/observability/types.d.ts +38 -0
  311. package/dist/observability/types.d.ts.map +1 -1
  312. package/dist/observability/types.js.map +1 -1
  313. package/dist/retrieval/index-lifecycle.js +2 -2
  314. package/dist/retrieval/index-lifecycle.js.map +1 -1
  315. package/dist/retrieval/orchestrator.d.ts +1 -0
  316. package/dist/retrieval/orchestrator.d.ts.map +1 -1
  317. package/dist/retrieval/orchestrator.js +79 -8
  318. package/dist/retrieval/orchestrator.js.map +1 -1
  319. package/dist/retrieval/types.d.ts +4 -0
  320. package/dist/retrieval/types.d.ts.map +1 -1
  321. package/dist/runtime/deferred-work-state.d.ts +28 -0
  322. package/dist/runtime/deferred-work-state.d.ts.map +1 -0
  323. package/dist/runtime/deferred-work-state.js +70 -0
  324. package/dist/runtime/deferred-work-state.js.map +1 -0
  325. package/dist/runtime/executor.d.ts.map +1 -1
  326. package/dist/runtime/executor.js +15 -1
  327. package/dist/runtime/executor.js.map +1 -1
  328. package/dist/runtime/runtimes.d.ts +1 -0
  329. package/dist/runtime/runtimes.d.ts.map +1 -1
  330. package/dist/runtime/runtimes.js +7 -0
  331. package/dist/runtime/runtimes.js.map +1 -1
  332. package/dist/runtime/types.d.ts +4 -0
  333. package/dist/runtime/types.d.ts.map +1 -1
  334. package/dist/server.d.ts +20 -0
  335. package/dist/server.d.ts.map +1 -1
  336. package/dist/server.js +237 -69
  337. package/dist/server.js.map +1 -1
  338. package/dist/startup/derived-state-recovery.d.ts +23 -0
  339. package/dist/startup/derived-state-recovery.d.ts.map +1 -0
  340. package/dist/startup/derived-state-recovery.js +74 -0
  341. package/dist/startup/derived-state-recovery.js.map +1 -0
  342. package/dist/startup/prefetch-startup.d.ts +3 -0
  343. package/dist/startup/prefetch-startup.d.ts.map +1 -0
  344. package/dist/startup/prefetch-startup.js +21 -0
  345. package/dist/startup/prefetch-startup.js.map +1 -0
  346. package/dist/ui/admin-shell.css +58 -0
  347. package/dist/ui/config.css +130 -0
  348. package/dist/ui/config.d.ts +3 -0
  349. package/dist/ui/config.d.ts.map +1 -0
  350. package/dist/ui/config.html +96 -0
  351. package/dist/ui/config.js +1050 -0
  352. package/dist/ui/config.js.map +1 -0
  353. package/dist/ui/graph.css +108 -0
  354. package/dist/ui/graph.html +52 -0
  355. package/dist/ui/graph.js +213 -181
  356. package/dist/ui/observability.css +1336 -0
  357. package/dist/ui/observability.html +374 -0
  358. package/dist/ui/observability.js +869 -703
  359. package/dist/ui/observability.js.map +1 -1
  360. package/dist/util/concurrency.d.ts +16 -0
  361. package/dist/util/concurrency.d.ts.map +1 -1
  362. package/dist/util/concurrency.js +14 -1
  363. package/dist/util/concurrency.js.map +1 -1
  364. package/dist/util/shutdown.d.ts +2 -2
  365. package/dist/util/shutdown.d.ts.map +1 -1
  366. package/dist/util/shutdown.js +15 -2
  367. package/dist/util/shutdown.js.map +1 -1
  368. package/package.json +3 -3
  369. package/templates/AGENTS.md.template +7 -1
  370. package/templates/CLAUDE.md.template +7 -1
  371. package/templates/CODEX.md.template +7 -1
  372. package/templates/SDL.md +243 -227
package/README.md CHANGED
@@ -368,6 +368,8 @@ The sandboxed runtime execution tool (`sdl.runtime.execute`) has its own governa
368
368
 
369
369
  `sdl.context` is SDL-MCP's task-shaped context engine. Give it a task type (`debug`, `review`, `implement`, `explain`), a description, and a budget — it selects the right Iris Gate rungs, collects evidence, and returns context tuned to the job. In Code Mode, `sdl.context` provides the same retrieval surface without dropping into `sdl.workflow`.
370
370
 
371
+ Unscoped natural-language context calls use confidence-gated hybrid retrieval by default. Exact symbol mentions and explicit `focusPaths` / `focusSymbols` stay on the fast path; low-confidence lexical results can escalate to bounded FTS + vector retrieval. Set `options.semantic: true` to force hybrid retrieval, or `options.semantic: false` to keep lexical-only behavior for deterministic debugging.
372
+
371
373
  The feedback loop (`sdl.agent.feedback`) records which symbols were useful and which were missing, improving future slice quality.
372
374
 
373
375
  For portable exports such as tickets and PR descriptions, use the CLI `sdl-mcp summary` command. It generates token-bounded context briefings in markdown, JSON, or clipboard format for use outside MCP environments.
@@ -375,6 +377,7 @@ For portable exports such as tickets and PR descriptions, use the CLI `sdl-mcp s
375
377
  **Why it matters:**
376
378
 
377
379
  - Task-shaped context retrieval plans the **right Iris Gate path** within a token budget
380
+ - Confidence-gated hybrid retrieval improves discovery without slowing known-target lookups
378
381
  - Feedback loop records what was useful/missing, improving future slice quality
379
382
  - Portable context summaries export findings for use outside MCP environments
380
383
 
@@ -474,7 +477,7 @@ flowchart LR
474
477
 
475
478
  ### CLI Tool Access — No MCP Server Required
476
479
 
477
- Access 35 SDL-MCP action aliases directly from the command line with `sdl-mcp tool`. No MCP server, transport, or SDK is required.
480
+ Access SDL-MCP direct action aliases plus the low-risk `action.search` and `manual` metadata proxies from the command line with `sdl-mcp tool`. No MCP server, transport, or SDK is required.
478
481
 
479
482
  ```bash
480
483
  # Search for symbols
@@ -489,14 +492,18 @@ echo '{"repoId":"my-repo"}' | sdl-mcp tool symbol.search --query "auth"
489
492
  # Apply a single-file targeted write
490
493
  sdl-mcp tool file.write --repo-id my-repo --file-path config/app.json \
491
494
  --json-path server.port --json-value 8080
495
+
496
+ # Discover and inspect metadata without opening the graph DB
497
+ sdl-mcp tool action.search --query manual --summary-only
498
+ sdl-mcp tool manual --actions action.search --format json
492
499
  ```
493
500
 
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.
501
+ 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 for graph actions, four output formats (json, json-compact, pretty, table), typo suggestions, and per-action `--help`. Direct graph actions dispatch through the same gateway router and Zod schemas as the MCP server; `action.search` and `manual` run in process against the same metadata handlers used by MCP registration.
495
502
 
496
503
  **Why it matters:**
497
504
 
498
- - 35 direct action aliases accessible from **any terminal** no server, transport, or SDK required
499
- - Same code paths and Zod validation as the MCP server — identical behavior
505
+ - 36 direct graph/action aliases plus `action.search` and `manual` metadata proxies accessible from **any terminal** - no server, transport, or SDK required
506
+ - Direct graph actions keep gateway-router/Zod parity; metadata proxies share the same MCP registration handlers
500
507
  - Four output formats (json, json-compact, pretty, table) for scripting and CI pipelines
501
508
  - Auto-resolves repoId from cwd, supports stdin JSON piping and per-action `--help`
502
509
 
@@ -506,12 +513,12 @@ Features include typed argument coercion (string, number, boolean, string[], jso
506
513
 
507
514
  ### Tool Gateway — Compact Tool Registration
508
515
 
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.
516
+ The tool gateway projects the 35 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.
510
517
 
511
518
  ```mermaid
512
519
  %%{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}}}%%
513
520
  flowchart LR
514
- Before["Flat mode<br/>37 tools<br/>2 universal + 35 flat"] e1@--> After["Gateway mode<br/>6 tools<br/>2 universal + 4 gateway"]
521
+ Before["Flat mode<br/>38 tools<br/>2 universal + 36 flat"] e1@--> After["Gateway mode<br/>6 tools<br/>2 universal + 4 gateway"]
515
522
  After e2@--> Savings["Smaller tools/list payload<br/>lower agent startup overhead"]
516
523
 
517
524
  classDef source fill:#E7F8F2,stroke:#0F766E,stroke-width:2px,color:#102A43;
@@ -529,7 +536,7 @@ Each gateway tool accepts an `action` discriminator field (e.g., `{ action: "sym
529
536
  **Why it matters:**
530
537
 
531
538
  - Large reduction in `tools/list` overhead for gateway-first agents
532
- - 34 gateway-routable actions consolidated into 4 namespace-scoped tools for simpler agent selection
539
+ - 35 gateway-routable actions consolidated into 4 namespace-scoped tools for simpler agent selection
533
540
  - Fewer tool choices means faster and more accurate tool dispatch by the agent
534
541
  - Choose Code Mode for task-shaped retrieval first; opt out of exclusive Code Mode when you also need regular flat or gateway tools
535
542
 
@@ -539,7 +546,7 @@ Each gateway tool accepts an `action` discriminator field (e.g., `{ action: "sym
539
546
 
540
547
  ### Observability Dashboard
541
548
 
542
- Built-in read-only dashboard surfaces every metric needed to diagnose SDL-MCP behaviour without parsing stderr logs. Cyberpunk-corporate dark UI at `/ui/observability` on the HTTP transport, plus REST + SSE APIs (`/api/observability/snapshot`, `/timeseries`, `/beam-explain`, `/stream`) for programmatic access. Surfaces cache hit rates, hybrid-retrieval breakdowns (FTS / vector / PPR / RRF), beam-search decision traces, indexing pipeline metrics, write-pool and drain saturation, packed-wire savings, SCIP ingest health, deterministic bottleneck classification, and OS-level resource samples. See [Observability Dashboard Deep Dive](./docs/feature-deep-dives/observability-dashboard.md).
549
+ Built-in read-only dashboard surfaces every metric needed to diagnose SDL-MCP behaviour without parsing stderr logs. GlitterKill dark UI at `/ui/observability` on the HTTP transport or the loopback-only `sdl-mcp serve --stdio --dashboard-port <port>` sidecar, plus REST + SSE APIs (`/api/observability/snapshot`, `/timeseries`, `/beam-explain`, `/stream`) for programmatic access. Surfaces cache hit rates, predictive-context outcome learning, hybrid-retrieval breakdowns (FTS / vector / PPR / RRF), beam-search decision traces, indexing pipeline metrics, write-pool and drain saturation, packed-wire token efficiency, and runtime CPU/memory/event-loop probes. See [Observability Dashboard Deep Dive](./docs/feature-deep-dives/observability-dashboard.md).
543
550
 
544
551
  <br/>
545
552
 
@@ -551,9 +558,9 @@ Built-in read-only dashboard surfaces every metric needed to diagnose SDL-MCP be
551
558
 
552
559
  | Mode | Tool count | Composition |
553
560
  | :------------------ | :--------- | :--------------------------------------------------------------- |
554
- | Flat | `37` | `2` universal + `35` flat tools |
561
+ | Flat | `38` | `2` universal + `36` flat tools |
555
562
  | Gateway | `6` | `2` universal + `4` gateway tools |
556
- | Gateway + legacy | `41` | `2` universal + `4` gateway + `35` flat tools |
563
+ | Gateway + legacy | `42` | `2` universal + `4` gateway + `36` flat tools |
557
564
  | Code Mode exclusive | `5` | `sdl.action.search`, `sdl.context`, `sdl.file`, `sdl.manual`, `sdl.workflow` |
558
565
 
559
566
  The generated source of truth is [`docs/generated/tool-inventory.md`](./docs/generated/tool-inventory.md).
@@ -571,9 +578,10 @@ The generated source of truth is [`docs/generated/tool-inventory.md`](./docs/gen
571
578
  <tr><td><code>sdl.buffer.checkpoint</code></td><td>Force-write pending buffers to the durable database</td></tr>
572
579
  <tr><td><code>sdl.buffer.status</code></td><td>Live indexing diagnostics and queue depth</td></tr>
573
580
 
574
- <tr><td rowspan="2"><strong>Symbols</strong></td>
581
+ <tr><td rowspan="3"><strong>Symbols</strong></td>
575
582
  <td><code>sdl.symbol.search</code></td><td>Search symbols by name (with optional semantic reranking)</td></tr>
576
583
  <tr><td><code>sdl.symbol.getCard</code></td><td>Get one card or batch-fetch up to 100 cards with ETag-based conditional support</td></tr>
584
+ <tr><td><code>sdl.symbol.edit</code></td><td>Preview/apply one symbol-scoped edit with AST, range, file, and draft preconditions</td></tr>
577
585
 
578
586
  <tr><td rowspan="3"><strong>Slices</strong></td>
579
587
  <td><code>sdl.slice.build</code></td><td>Build a task-scoped dependency subgraph</td></tr>
@@ -643,7 +651,7 @@ The generated source of truth is [`docs/generated/tool-inventory.md`](./docs/gen
643
651
  | `sdl-mcp doctor` | Validate runtime, config, DB, grammars, repo access |
644
652
  | `sdl-mcp index` | Index repositories (with optional `--watch` mode) |
645
653
  | `sdl-mcp serve` | Start MCP server (`--stdio` or `--http`) |
646
- | `sdl-mcp tool` | Access 35 direct action aliases ([docs](./docs/feature-deep-dives/cli-tool-access.md)) |
654
+ | `sdl-mcp tool` | Access 36 direct action aliases ([docs](./docs/feature-deep-dives/cli-tool-access.md)) |
647
655
  | `sdl-mcp info` | Runtime diagnostics — version, Node.js, platform, database, config |
648
656
  | `sdl-mcp summary` | Generate copy/paste context summaries from the CLI |
649
657
  | `sdl-mcp health` | Compute composite health score with badge/JSON output |
@@ -765,8 +773,8 @@ flowchart TD
765
773
  | [Context Modes](./docs/feature-deep-dives/context-modes.md) | Precise vs broad retrieval, adaptive symbol ranking, benchmark trade-offs |
766
774
  | [Indexing & Languages](./docs/feature-deep-dives/indexing-languages.md) | Rust/TS engines, two-pass architecture, 12-language support |
767
775
  | [Runtime Execution](./docs/feature-deep-dives/runtime-execution.md) | Sandboxed subprocess execution with governance |
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 |
776
+ | [CLI Tool Access](./docs/feature-deep-dives/cli-tool-access.md) | Direct CLI access to 36 action aliases, output formats, stdin piping, scripting |
777
+ | [Tool Gateway](./docs/feature-deep-dives/tool-gateway.md) | 35 gateway-routable actions, 4 namespace tools, thin schemas, migration guide |
770
778
  | [Semantic Engine](./docs/feature-deep-dives/semantic-engine.md) | Pass-2 call resolution, embedding search, LLM summaries, confidence scoring |
771
779
  | [Semantic Embeddings Setup](./docs/feature-deep-dives/semantic-embeddings-setup.md) | Dependencies, model installation, provider configuration, tier-by-tier setup |
772
780
  | [Code Mode](./docs/feature-deep-dives/code-mode.md) | `sdl.context`, `sdl.workflow`, action discovery, manual reference, one-call workflows |
@@ -116,8 +116,13 @@
116
116
  "semantic": {
117
117
  "enabled": true,
118
118
  "provider": "local",
119
- "model": "jina-embeddings-v2-base-code",
120
- "additionalModels": ["nomic-embed-text-v1.5"],
119
+ "embeddingProfile": "specialized",
120
+ "symbolEmbeddingModels": [
121
+ "jina-embeddings-v2-base-code"
122
+ ],
123
+ "fileSummaryEmbeddingModels": [
124
+ "nomic-embed-text-v1.5"
125
+ ],
121
126
  "modelCacheDir": null,
122
127
  "generateSummaries": false,
123
128
  "summaryProvider": null,
@@ -132,7 +137,9 @@
132
137
  "fileSummaryEmbeddingMaxChars": 4096,
133
138
  "embeddingsSequential": false,
134
139
  "modelVariant": "default",
135
- "executionProviders": ["cpu"],
140
+ "executionProviders": [
141
+ "cpu"
142
+ ],
136
143
  "retrieval": {
137
144
  "mode": "hybrid",
138
145
  "extensionsOptional": true,
@@ -187,7 +194,17 @@
187
194
  "prefetch": {
188
195
  "enabled": true,
189
196
  "maxBudgetPercent": 20,
190
- "warmTopN": 0
197
+ "warmTopN": 0,
198
+ "policy": {
199
+ "enabled": true,
200
+ "mode": "safe",
201
+ "minSamples": 20,
202
+ "suppressionWasteRate": 0.8,
203
+ "boostHitRate": 0.35,
204
+ "retentionDays": 14,
205
+ "maxPriorityBoost": 25,
206
+ "maxBudgetTrimPercent": 50
207
+ }
191
208
  },
192
209
  "tracing": {
193
210
  "enabled": true,
@@ -223,7 +240,12 @@
223
240
  },
224
241
  "runtime": {
225
242
  "enabled": true,
226
- "allowedRuntimes": ["node", "typescript", "python", "shell"],
243
+ "allowedRuntimes": [
244
+ "node",
245
+ "typescript",
246
+ "python",
247
+ "shell"
248
+ ],
227
249
  "allowedExecutables": [],
228
250
  "maxDurationMs": 30000,
229
251
  "maxStdoutBytes": 1048576,
@@ -290,5 +312,10 @@
290
312
  },
291
313
  "memory": {
292
314
  "enabled": false
315
+ },
316
+ "$": {
317
+ "prefetch": {
318
+ "policy": "{\"enabled\":true,\"mode\":\"safe\",\"minSamples\":20,\"suppressionWasteRate\":0.8,\"boostHitRate\":0.35,\"retentionDays\":14,\"maxPriorityBoost\":25,\"maxBudgetTrimPercent\":50}"
319
+ }
293
320
  }
294
321
  }
@@ -145,8 +145,9 @@
145
145
  "provider": "mock",
146
146
  "executionProviders": ["cpu"],
147
147
  "modelVariant": "default",
148
- "model": "jina-embeddings-v2-base-code",
149
- "additionalModels": ["nomic-embed-text-v1.5"],
148
+ "embeddingProfile": "specialized",
149
+ "symbolEmbeddingModels": ["jina-embeddings-v2-base-code"],
150
+ "fileSummaryEmbeddingModels": ["nomic-embed-text-v1.5"],
150
151
  "generateSummaries": false
151
152
  },
152
153
  "prefetch": {
@@ -552,20 +552,36 @@
552
552
  "enum": ["api", "local", "mock"],
553
553
  "default": "local"
554
554
  },
555
+ "embeddingProfile": {
556
+ "type": "string",
557
+ "enum": ["specialized", "max-recall"],
558
+ "default": "specialized",
559
+ "description": "Semantic embedding model profile. 'specialized' embeds Symbols with Jina and FileSummary nodes with Nomic. 'max-recall' restores both supported models on both lanes."
560
+ },
561
+ "symbolEmbeddingModels": {
562
+ "type": "array",
563
+ "items": { "type": "string" },
564
+ "default": ["jina-embeddings-v2-base-code"],
565
+ "description": "Embedding models to populate for Symbol nodes. Overrides embeddingProfile for the Symbol lane when set."
566
+ },
567
+ "fileSummaryEmbeddingModels": {
568
+ "type": "array",
569
+ "items": { "type": "string" },
570
+ "default": ["nomic-embed-text-v1.5"],
571
+ "description": "Embedding models to populate for FileSummary nodes. Overrides embeddingProfile for the FileSummary lane when set."
572
+ },
555
573
  "model": {
556
574
  "type": "string",
557
- "enum": ["jina-embeddings-v2-base-code", "nomic-embed-text-v1.5"],
558
- "default": "jina-embeddings-v2-base-code"
575
+ "description": "Deprecated legacy primary embedding model. When no embeddingProfile or per-lane model arrays are configured, model plus additionalModels are treated as one shared model list for both Symbol and FileSummary embeddings."
559
576
  },
560
577
  "additionalModels": {
561
578
  "type": "array",
562
579
  "items": { "type": "string" },
563
- "default": ["nomic-embed-text-v1.5"],
564
- "description": "Extra embedding models to populate at index time so multiple vector lanes can contribute to hybrid fusion. Primary `model` is always populated; each name listed here gets a separate pass. Unknown model names are skipped."
580
+ "description": "Deprecated legacy shared extra embedding models. Use embeddingProfile, symbolEmbeddingModels, or fileSummaryEmbeddingModels instead."
565
581
  },
566
582
  "modelCacheDir": {
567
583
  "type": "string",
568
- "description": "Override directory for downloaded model files (nomic-embed-text-v1.5). Defaults to platform-specific cache."
584
+ "description": "Override directory for downloaded local embedding model files. Defaults to the platform-specific SDL-MCP model cache."
569
585
  },
570
586
  "generateSummaries": {
571
587
  "type": "boolean",
@@ -830,7 +846,9 @@
830
846
  "default": {
831
847
  "enabled": true,
832
848
  "provider": "local",
833
- "model": "jina-embeddings-v2-base-code",
849
+ "embeddingProfile": "specialized",
850
+ "symbolEmbeddingModels": ["jina-embeddings-v2-base-code"],
851
+ "fileSummaryEmbeddingModels": ["nomic-embed-text-v1.5"],
834
852
  "generateSummaries": false,
835
853
  "summaryModel": "claude-haiku-4-5-20251001",
836
854
  "summaryMaxConcurrency": 5,
@@ -996,12 +1014,47 @@
996
1014
  "minimum": 0,
997
1015
  "default": 0,
998
1016
  "description": "Number of top-fan-in symbols to prefetch on serve start. Default 0 disables startup warming; raise only when you have evidence the warm set is consumed within the 5-minute stale window."
1017
+ },
1018
+ "policy": {
1019
+ "type": "object",
1020
+ "description": "Outcome-trained predictive context policy. Safe mode can suppress, trim, or boost existing prefetch strategies but cannot invent new strategy types.",
1021
+ "additionalProperties": false,
1022
+ "properties": {
1023
+ "enabled": { "type": "boolean", "default": true },
1024
+ "mode": { "enum": ["observe", "safe"], "default": "safe" },
1025
+ "minSamples": { "type": "integer", "minimum": 1, "default": 20 },
1026
+ "suppressionWasteRate": { "type": "number", "minimum": 0, "maximum": 1, "default": 0.8 },
1027
+ "boostHitRate": { "type": "number", "minimum": 0, "maximum": 1, "default": 0.35 },
1028
+ "retentionDays": { "type": "integer", "minimum": 1, "default": 14 },
1029
+ "maxPriorityBoost": { "type": "integer", "minimum": 0, "maximum": 100, "default": 25 },
1030
+ "maxBudgetTrimPercent": { "type": "integer", "minimum": 0, "maximum": 100, "default": 50 }
1031
+ },
1032
+ "default": {
1033
+ "enabled": true,
1034
+ "mode": "safe",
1035
+ "minSamples": 20,
1036
+ "suppressionWasteRate": 0.8,
1037
+ "boostHitRate": 0.35,
1038
+ "retentionDays": 14,
1039
+ "maxPriorityBoost": 25,
1040
+ "maxBudgetTrimPercent": 50
1041
+ }
999
1042
  }
1000
1043
  },
1001
1044
  "default": {
1002
1045
  "enabled": true,
1003
1046
  "maxBudgetPercent": 20,
1004
- "warmTopN": 0
1047
+ "warmTopN": 0,
1048
+ "policy": {
1049
+ "enabled": true,
1050
+ "mode": "safe",
1051
+ "minSamples": 20,
1052
+ "suppressionWasteRate": 0.8,
1053
+ "boostHitRate": 0.35,
1054
+ "retentionDays": 14,
1055
+ "maxPriorityBoost": 25,
1056
+ "maxBudgetTrimPercent": 50
1057
+ }
1005
1058
  }
1006
1059
  },
1007
1060
  "observability": {
@@ -1193,7 +1246,7 @@
1193
1246
  },
1194
1247
  "toolQueueTimeoutMs": {
1195
1248
  "type": "integer",
1196
- "description": "Timeout for queued tool dispatch operations in milliseconds",
1249
+ "description": "How long a foreground MCP tool request can wait for a dispatch slot before its handler starts. Timed-out requests fail with a retryable unavailable error; running handlers are not canceled.",
1197
1250
  "minimum": 5000,
1198
1251
  "maximum": 120000,
1199
1252
  "default": 30000