sdl-mcp 0.10.0 → 0.10.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 (365) hide show
  1. package/README.md +123 -173
  2. package/config/sdlmcp.config.example.json +5 -13
  3. package/config/sdlmcp.config.schema.json +28 -77
  4. package/dist/.tsbuildinfo +1 -1
  5. package/dist/agent/context-engine.d.ts +22 -0
  6. package/dist/agent/context-engine.d.ts.map +1 -0
  7. package/dist/agent/{orchestrator.js → context-engine.js} +229 -19
  8. package/dist/agent/context-engine.js.map +1 -0
  9. package/dist/agent/executor.d.ts +21 -0
  10. package/dist/agent/executor.d.ts.map +1 -1
  11. package/dist/agent/executor.js +222 -59
  12. package/dist/agent/executor.js.map +1 -1
  13. package/dist/agent/index.d.ts +1 -1
  14. package/dist/agent/index.d.ts.map +1 -1
  15. package/dist/agent/index.js +1 -1
  16. package/dist/agent/index.js.map +1 -1
  17. package/dist/agent/planner.d.ts +1 -1
  18. package/dist/agent/planner.d.ts.map +1 -1
  19. package/dist/agent/planner.js +69 -3
  20. package/dist/agent/planner.js.map +1 -1
  21. package/dist/agent/types.d.ts +13 -1
  22. package/dist/agent/types.d.ts.map +1 -1
  23. package/dist/cli/commands/doctor.js +1 -1
  24. package/dist/cli/commands/doctor.js.map +1 -1
  25. package/dist/cli/commands/init.d.ts.map +1 -1
  26. package/dist/cli/commands/init.js +161 -29
  27. package/dist/cli/commands/init.js.map +1 -1
  28. package/dist/cli/commands/serve.d.ts.map +1 -1
  29. package/dist/cli/commands/serve.js +35 -1
  30. package/dist/cli/commands/serve.js.map +1 -1
  31. package/dist/cli/commands/tool-actions.d.ts.map +1 -1
  32. package/dist/cli/commands/tool-actions.js +62 -8
  33. package/dist/cli/commands/tool-actions.js.map +1 -1
  34. package/dist/cli/transport/http.d.ts.map +1 -1
  35. package/dist/cli/transport/http.js +39 -6
  36. package/dist/cli/transport/http.js.map +1 -1
  37. package/dist/code/gate.d.ts.map +1 -1
  38. package/dist/code/gate.js +17 -9
  39. package/dist/code/gate.js.map +1 -1
  40. package/dist/code/hotpath.d.ts +1 -1
  41. package/dist/code/hotpath.d.ts.map +1 -1
  42. package/dist/code/hotpath.js +16 -2
  43. package/dist/code/hotpath.js.map +1 -1
  44. package/dist/code/skeleton.d.ts +1 -1
  45. package/dist/code/skeleton.d.ts.map +1 -1
  46. package/dist/code/skeleton.js +53 -6
  47. package/dist/code/skeleton.js.map +1 -1
  48. package/dist/code/windows.d.ts +2 -1
  49. package/dist/code/windows.d.ts.map +1 -1
  50. package/dist/code/windows.js +18 -5
  51. package/dist/code/windows.js.map +1 -1
  52. package/dist/code-mode/action-catalog.d.ts +7 -4
  53. package/dist/code-mode/action-catalog.d.ts.map +1 -1
  54. package/dist/code-mode/action-catalog.js +167 -22
  55. package/dist/code-mode/action-catalog.js.map +1 -1
  56. package/dist/code-mode/descriptions.d.ts +2 -1
  57. package/dist/code-mode/descriptions.d.ts.map +1 -1
  58. package/dist/code-mode/descriptions.js +17 -11
  59. package/dist/code-mode/descriptions.js.map +1 -1
  60. package/dist/code-mode/etag-cache.d.ts +5 -5
  61. package/dist/code-mode/etag-cache.d.ts.map +1 -1
  62. package/dist/code-mode/etag-cache.js +17 -16
  63. package/dist/code-mode/etag-cache.js.map +1 -1
  64. package/dist/code-mode/index.d.ts +4 -3
  65. package/dist/code-mode/index.d.ts.map +1 -1
  66. package/dist/code-mode/index.js +118 -67
  67. package/dist/code-mode/index.js.map +1 -1
  68. package/dist/code-mode/ladder-validator.d.ts +2 -2
  69. package/dist/code-mode/ladder-validator.d.ts.map +1 -1
  70. package/dist/code-mode/ladder-validator.js.map +1 -1
  71. package/dist/code-mode/manual-generator.d.ts.map +1 -1
  72. package/dist/code-mode/manual-generator.js +64 -27
  73. package/dist/code-mode/manual-generator.js.map +1 -1
  74. package/dist/code-mode/ref-resolver.d.ts.map +1 -1
  75. package/dist/code-mode/ref-resolver.js +75 -24
  76. package/dist/code-mode/ref-resolver.js.map +1 -1
  77. package/dist/code-mode/transforms.d.ts +1 -1
  78. package/dist/code-mode/transforms.d.ts.map +1 -1
  79. package/dist/code-mode/transforms.js +59 -14
  80. package/dist/code-mode/transforms.js.map +1 -1
  81. package/dist/code-mode/types.d.ts +31 -19
  82. package/dist/code-mode/types.d.ts.map +1 -1
  83. package/dist/code-mode/types.js +16 -10
  84. package/dist/code-mode/types.js.map +1 -1
  85. package/dist/code-mode/{chain-budget.d.ts → workflow-budget.d.ts} +4 -4
  86. package/dist/code-mode/workflow-budget.d.ts.map +1 -0
  87. package/dist/code-mode/{chain-budget.js → workflow-budget.js} +19 -18
  88. package/dist/code-mode/workflow-budget.js.map +1 -0
  89. package/dist/code-mode/workflow-executor.d.ts +11 -0
  90. package/dist/code-mode/workflow-executor.d.ts.map +1 -0
  91. package/dist/code-mode/{chain-executor.js → workflow-executor.js} +169 -81
  92. package/dist/code-mode/workflow-executor.js.map +1 -0
  93. package/dist/code-mode/workflow-parser.d.ts +31 -0
  94. package/dist/code-mode/workflow-parser.d.ts.map +1 -0
  95. package/dist/code-mode/{chain-parser.js → workflow-parser.js} +24 -17
  96. package/dist/code-mode/workflow-parser.js.map +1 -0
  97. package/dist/code-mode/workflow-truncation.d.ts +32 -0
  98. package/dist/code-mode/workflow-truncation.d.ts.map +1 -0
  99. package/dist/code-mode/workflow-truncation.js +121 -0
  100. package/dist/code-mode/workflow-truncation.js.map +1 -0
  101. package/dist/config/constants.d.ts +1 -1
  102. package/dist/config/constants.js +1 -1
  103. package/dist/config/types.d.ts +6 -6
  104. package/dist/config/types.js +12 -12
  105. package/dist/config/types.js.map +1 -1
  106. package/dist/db/graph-db-path.d.ts.map +1 -1
  107. package/dist/db/graph-db-path.js +4 -0
  108. package/dist/db/graph-db-path.js.map +1 -1
  109. package/dist/db/ladybug-memory.d.ts.map +1 -1
  110. package/dist/db/ladybug-memory.js +13 -3
  111. package/dist/db/ladybug-memory.js.map +1 -1
  112. package/dist/db/ladybug-repos.d.ts +5 -0
  113. package/dist/db/ladybug-repos.d.ts.map +1 -1
  114. package/dist/db/ladybug-repos.js +27 -0
  115. package/dist/db/ladybug-repos.js.map +1 -1
  116. package/dist/db/ladybug-symbols.d.ts +4 -2
  117. package/dist/db/ladybug-symbols.d.ts.map +1 -1
  118. package/dist/db/ladybug-symbols.js +70 -19
  119. package/dist/db/ladybug-symbols.js.map +1 -1
  120. package/dist/db/ladybug-versions.js +1 -1
  121. package/dist/db/schema.d.ts +17 -1
  122. package/dist/db/schema.d.ts.map +1 -1
  123. package/dist/delta/blastRadius.d.ts +1 -1
  124. package/dist/delta/blastRadius.d.ts.map +1 -1
  125. package/dist/delta/diff.d.ts +1 -1
  126. package/dist/delta/diff.d.ts.map +1 -1
  127. package/dist/delta/diff.js +14 -6
  128. package/dist/delta/diff.js.map +1 -1
  129. package/dist/delta/versioning.d.ts +1 -1
  130. package/dist/delta/versioning.d.ts.map +1 -1
  131. package/dist/domain/types.d.ts +12 -2
  132. package/dist/domain/types.d.ts.map +1 -1
  133. package/dist/domain/types.js.map +1 -1
  134. package/dist/gateway/descriptions.js +1 -1
  135. package/dist/gateway/descriptions.js.map +1 -1
  136. package/dist/gateway/index.d.ts.map +1 -1
  137. package/dist/gateway/index.js +2 -0
  138. package/dist/gateway/index.js.map +1 -1
  139. package/dist/gateway/legacy.js +3 -3
  140. package/dist/gateway/legacy.js.map +1 -1
  141. package/dist/gateway/router.d.ts.map +1 -1
  142. package/dist/gateway/router.js +10 -5
  143. package/dist/gateway/router.js.map +1 -1
  144. package/dist/gateway/schemas.d.ts +19 -4
  145. package/dist/gateway/schemas.d.ts.map +1 -1
  146. package/dist/gateway/schemas.js +19 -6
  147. package/dist/gateway/schemas.js.map +1 -1
  148. package/dist/graph/buildGraph.d.ts +2 -1
  149. package/dist/graph/buildGraph.d.ts.map +1 -1
  150. package/dist/graph/buildGraph.js.map +1 -1
  151. package/dist/graph/cache.d.ts +1 -1
  152. package/dist/graph/cache.d.ts.map +1 -1
  153. package/dist/graph/graphSnapshotCache.d.ts +1 -1
  154. package/dist/graph/graphSnapshotCache.d.ts.map +1 -1
  155. package/dist/graph/overview.js +32 -6
  156. package/dist/graph/overview.js.map +1 -1
  157. package/dist/graph/slice/beam-search-engine.d.ts +1 -1
  158. package/dist/graph/slice/beam-search-engine.d.ts.map +1 -1
  159. package/dist/graph/slice/beam-search-engine.js.map +1 -1
  160. package/dist/graph/slice/result.d.ts +1 -1
  161. package/dist/graph/slice/result.d.ts.map +1 -1
  162. package/dist/graph/slice/slice-serializer.d.ts +1 -1
  163. package/dist/graph/slice/slice-serializer.d.ts.map +1 -1
  164. package/dist/graph/slice/start-node-resolver.d.ts +1 -1
  165. package/dist/graph/slice/start-node-resolver.d.ts.map +1 -1
  166. package/dist/graph/slice/start-node-resolver.js +56 -0
  167. package/dist/graph/slice/start-node-resolver.js.map +1 -1
  168. package/dist/graph/slice.d.ts +1 -1
  169. package/dist/graph/slice.d.ts.map +1 -1
  170. package/dist/graph/slice.js +23 -0
  171. package/dist/graph/slice.js.map +1 -1
  172. package/dist/graph/sliceCache.d.ts +1 -1
  173. package/dist/graph/sliceCache.d.ts.map +1 -1
  174. package/dist/indexer/adapter/LanguageAdapter.d.ts +1 -1
  175. package/dist/indexer/adapter/LanguageAdapter.d.ts.map +1 -1
  176. package/dist/indexer/cluster-orchestrator.d.ts.map +1 -1
  177. package/dist/indexer/cluster-orchestrator.js +93 -6
  178. package/dist/indexer/cluster-orchestrator.js.map +1 -1
  179. package/dist/indexer/edge-builder/symbol-index.d.ts +1 -1
  180. package/dist/indexer/edge-builder/symbol-index.d.ts.map +1 -1
  181. package/dist/indexer/edge-builder/symbol-mapping.d.ts +1 -1
  182. package/dist/indexer/edge-builder/symbol-mapping.d.ts.map +1 -1
  183. package/dist/indexer/edge-builder/telemetry.d.ts +1 -1
  184. package/dist/indexer/edge-builder/telemetry.d.ts.map +1 -1
  185. package/dist/indexer/edge-builder/types.d.ts +1 -1
  186. package/dist/indexer/edge-builder/types.d.ts.map +1 -1
  187. package/dist/indexer/edge-confidence.d.ts +1 -1
  188. package/dist/indexer/edge-confidence.d.ts.map +1 -1
  189. package/dist/indexer/embeddings.d.ts +0 -10
  190. package/dist/indexer/embeddings.d.ts.map +1 -1
  191. package/dist/indexer/embeddings.js +1 -123
  192. package/dist/indexer/embeddings.js.map +1 -1
  193. package/dist/indexer/indexer-init.d.ts +1 -1
  194. package/dist/indexer/indexer-init.d.ts.map +1 -1
  195. package/dist/indexer/indexer-version.d.ts.map +1 -1
  196. package/dist/indexer/indexer-version.js +27 -9
  197. package/dist/indexer/indexer-version.js.map +1 -1
  198. package/dist/indexer/indexer.d.ts.map +1 -1
  199. package/dist/indexer/indexer.js +34 -5
  200. package/dist/indexer/indexer.js.map +1 -1
  201. package/dist/indexer/metrics-updater.d.ts.map +1 -1
  202. package/dist/indexer/metrics-updater.js +16 -35
  203. package/dist/indexer/metrics-updater.js.map +1 -1
  204. package/dist/indexer/parser/build-rows.js +2 -2
  205. package/dist/indexer/parser/build-rows.js.map +1 -1
  206. package/dist/indexer/pass2/resolvers/rust-pass2-resolver.d.ts +1 -1
  207. package/dist/indexer/pass2/resolvers/rust-pass2-resolver.d.ts.map +1 -1
  208. package/dist/indexer/summaries.d.ts +33 -2
  209. package/dist/indexer/summaries.d.ts.map +1 -1
  210. package/dist/indexer/summaries.js +473 -106
  211. package/dist/indexer/summaries.js.map +1 -1
  212. package/dist/indexer/ts/tsParser.d.ts +6 -1
  213. package/dist/indexer/ts/tsParser.d.ts.map +1 -1
  214. package/dist/indexer/ts/tsParser.js +8 -0
  215. package/dist/indexer/ts/tsParser.js.map +1 -1
  216. package/dist/live-index/coordinator.d.ts.map +1 -1
  217. package/dist/live-index/coordinator.js +12 -8
  218. package/dist/live-index/coordinator.js.map +1 -1
  219. package/dist/live-index/debounce.d.ts.map +1 -1
  220. package/dist/live-index/debounce.js +5 -0
  221. package/dist/live-index/debounce.js.map +1 -1
  222. package/dist/live-index/overlay-merge.d.ts.map +1 -1
  223. package/dist/live-index/overlay-merge.js +5 -0
  224. package/dist/live-index/overlay-merge.js.map +1 -1
  225. package/dist/live-index/overlay-reader.d.ts +1 -1
  226. package/dist/live-index/overlay-reader.d.ts.map +1 -1
  227. package/dist/live-index/overlay-reader.js +8 -2
  228. package/dist/live-index/overlay-reader.js.map +1 -1
  229. package/dist/live-index/reconcile-worker.d.ts.map +1 -1
  230. package/dist/live-index/reconcile-worker.js +0 -4
  231. package/dist/live-index/reconcile-worker.js.map +1 -1
  232. package/dist/main.js +21 -3
  233. package/dist/main.js.map +1 -1
  234. package/dist/mcp/hooks/memory-hint.js +5 -5
  235. package/dist/mcp/hooks/memory-hint.js.map +1 -1
  236. package/dist/mcp/telemetry.d.ts +1 -1
  237. package/dist/mcp/telemetry.d.ts.map +1 -1
  238. package/dist/mcp/token-accumulator.js +2 -2
  239. package/dist/mcp/token-accumulator.js.map +1 -1
  240. package/dist/mcp/token-usage.d.ts +0 -5
  241. package/dist/mcp/token-usage.d.ts.map +1 -1
  242. package/dist/mcp/token-usage.js +6 -1
  243. package/dist/mcp/token-usage.js.map +1 -1
  244. package/dist/mcp/tool-call-formatter.d.ts +1 -1
  245. package/dist/mcp/tool-call-formatter.d.ts.map +1 -1
  246. package/dist/mcp/tool-call-formatter.js +114 -104
  247. package/dist/mcp/tool-call-formatter.js.map +1 -1
  248. package/dist/mcp/tool-presentation.d.ts.map +1 -1
  249. package/dist/mcp/tool-presentation.js +1 -2
  250. package/dist/mcp/tool-presentation.js.map +1 -1
  251. package/dist/mcp/tools/code.d.ts.map +1 -1
  252. package/dist/mcp/tools/code.js +131 -35
  253. package/dist/mcp/tools/code.js.map +1 -1
  254. package/dist/mcp/tools/context.d.ts +3 -0
  255. package/dist/mcp/tools/context.d.ts.map +1 -0
  256. package/dist/mcp/tools/context.js +34 -0
  257. package/dist/mcp/tools/context.js.map +1 -0
  258. package/dist/mcp/tools/delta.d.ts.map +1 -1
  259. package/dist/mcp/tools/delta.js +110 -22
  260. package/dist/mcp/tools/delta.js.map +1 -1
  261. package/dist/mcp/tools/file-read.d.ts +3 -0
  262. package/dist/mcp/tools/file-read.d.ts.map +1 -0
  263. package/dist/mcp/tools/file-read.js +268 -0
  264. package/dist/mcp/tools/file-read.js.map +1 -0
  265. package/dist/mcp/tools/index.d.ts.map +1 -1
  266. package/dist/mcp/tools/index.js +5 -60
  267. package/dist/mcp/tools/index.js.map +1 -1
  268. package/dist/mcp/tools/memory.d.ts.map +1 -1
  269. package/dist/mcp/tools/memory.js +67 -65
  270. package/dist/mcp/tools/memory.js.map +1 -1
  271. package/dist/mcp/tools/prRisk.d.ts +92 -17
  272. package/dist/mcp/tools/prRisk.d.ts.map +1 -1
  273. package/dist/mcp/tools/prRisk.js +148 -19
  274. package/dist/mcp/tools/prRisk.js.map +1 -1
  275. package/dist/mcp/tools/repo.d.ts.map +1 -1
  276. package/dist/mcp/tools/repo.js +102 -28
  277. package/dist/mcp/tools/repo.js.map +1 -1
  278. package/dist/mcp/tools/runtime.d.ts.map +1 -1
  279. package/dist/mcp/tools/runtime.js +57 -6
  280. package/dist/mcp/tools/runtime.js.map +1 -1
  281. package/dist/mcp/tools/slice-wire-format.d.ts +58 -2
  282. package/dist/mcp/tools/slice-wire-format.d.ts.map +1 -1
  283. package/dist/mcp/tools/slice-wire-format.js +118 -0
  284. package/dist/mcp/tools/slice-wire-format.js.map +1 -1
  285. package/dist/mcp/tools/slice.d.ts.map +1 -1
  286. package/dist/mcp/tools/slice.js +24 -10
  287. package/dist/mcp/tools/slice.js.map +1 -1
  288. package/dist/mcp/tools/symbol.d.ts +30 -0
  289. package/dist/mcp/tools/symbol.d.ts.map +1 -1
  290. package/dist/mcp/tools/symbol.js +257 -80
  291. package/dist/mcp/tools/symbol.js.map +1 -1
  292. package/dist/mcp/tools/tool-descriptors.d.ts +42 -0
  293. package/dist/mcp/tools/tool-descriptors.d.ts.map +1 -0
  294. package/dist/mcp/tools/tool-descriptors.js +249 -0
  295. package/dist/mcp/tools/tool-descriptors.js.map +1 -0
  296. package/dist/mcp/tools/usage.js +2 -2
  297. package/dist/mcp/tools/usage.js.map +1 -1
  298. package/dist/mcp/tools.d.ts +189 -14
  299. package/dist/mcp/tools.d.ts.map +1 -1
  300. package/dist/mcp/tools.js +90 -18
  301. package/dist/mcp/tools.js.map +1 -1
  302. package/dist/retrieval/fallback.d.ts +1 -1
  303. package/dist/retrieval/fallback.d.ts.map +1 -1
  304. package/dist/retrieval/fallback.js +3 -7
  305. package/dist/retrieval/fallback.js.map +1 -1
  306. package/dist/retrieval/task-query-ranking.d.ts +9 -0
  307. package/dist/retrieval/task-query-ranking.d.ts.map +1 -0
  308. package/dist/retrieval/task-query-ranking.js +89 -0
  309. package/dist/retrieval/task-query-ranking.js.map +1 -0
  310. package/dist/runtime/artifacts.d.ts.map +1 -1
  311. package/dist/runtime/artifacts.js +20 -0
  312. package/dist/runtime/artifacts.js.map +1 -1
  313. package/dist/runtime/runtimes.d.ts.map +1 -1
  314. package/dist/runtime/runtimes.js +4 -0
  315. package/dist/runtime/runtimes.js.map +1 -1
  316. package/dist/server.d.ts.map +1 -1
  317. package/dist/server.js +51 -59
  318. package/dist/server.js.map +1 -1
  319. package/dist/services/card-builder.d.ts.map +1 -1
  320. package/dist/services/card-builder.js +23 -10
  321. package/dist/services/card-builder.js.map +1 -1
  322. package/dist/services/summary.d.ts.map +1 -1
  323. package/dist/services/summary.js +203 -18
  324. package/dist/services/summary.js.map +1 -1
  325. package/dist/sync/types.d.ts +1 -1
  326. package/dist/sync/types.d.ts.map +1 -1
  327. package/dist/ts/mapping.d.ts +1 -1
  328. package/dist/ts/mapping.d.ts.map +1 -1
  329. package/dist/util/resolve-symbol-ref.d.ts.map +1 -1
  330. package/dist/util/resolve-symbol-ref.js +66 -4
  331. package/dist/util/resolve-symbol-ref.js.map +1 -1
  332. package/package.json +5 -3
  333. package/templates/AGENTS.md.template +39 -10
  334. package/templates/CLAUDE.md.template +32 -7
  335. package/templates/CODEX.md.template +33 -5
  336. package/templates/GEMINI.md.template +33 -5
  337. package/templates/OPENCODE.md.template +32 -4
  338. package/config/sdlmcp.config.json.sample +0 -73
  339. package/dist/agent/orchestrator.d.ts +0 -15
  340. package/dist/agent/orchestrator.d.ts.map +0 -1
  341. package/dist/agent/orchestrator.js.map +0 -1
  342. package/dist/code-mode/chain-budget.d.ts.map +0 -1
  343. package/dist/code-mode/chain-budget.js.map +0 -1
  344. package/dist/code-mode/chain-executor.d.ts +0 -11
  345. package/dist/code-mode/chain-executor.d.ts.map +0 -1
  346. package/dist/code-mode/chain-executor.js.map +0 -1
  347. package/dist/code-mode/chain-parser.d.ts +0 -28
  348. package/dist/code-mode/chain-parser.d.ts.map +0 -1
  349. package/dist/code-mode/chain-parser.js.map +0 -1
  350. package/dist/experiments/event-log-replay.d.ts +0 -118
  351. package/dist/experiments/event-log-replay.d.ts.map +0 -1
  352. package/dist/experiments/event-log-replay.js +0 -161
  353. package/dist/experiments/event-log-replay.js.map +0 -1
  354. package/dist/indexer/ann-index.d.ts +0 -111
  355. package/dist/indexer/ann-index.d.ts.map +0 -1
  356. package/dist/indexer/ann-index.js +0 -502
  357. package/dist/indexer/ann-index.js.map +0 -1
  358. package/dist/indexer/summary-transfer.d.ts +0 -35
  359. package/dist/indexer/summary-transfer.d.ts.map +0 -1
  360. package/dist/indexer/summary-transfer.js +0 -184
  361. package/dist/indexer/summary-transfer.js.map +0 -1
  362. package/dist/mcp/tools/agent.d.ts +0 -3
  363. package/dist/mcp/tools/agent.d.ts.map +0 -1
  364. package/dist/mcp/tools/agent.js +0 -34
  365. package/dist/mcp/tools/agent.js.map +0 -1
package/README.md CHANGED
@@ -41,29 +41,21 @@ SDL-MCP fixes this. It indexes your codebase into a searchable **symbol graph**
41
41
 
42
42
  ## How it works — in 30 seconds
43
43
 
44
- ```
45
- Your Codebase
46
-
47
- ┌──────┴──────┐
48
- │ Indexer │ Native Rust (fast) or Tree-sitter (universal)
49
- │ 12 langs │ TS · JS · Python · Go · Java · C# · C · C++ · PHP · Rust · Kotlin · Shell
50
- └──────┬──────┘
51
-
52
-
53
- ┌───────────────────────┐
54
- │ Symbol Graph (DB) │ Functions, classes, interfaces, types, edges, metrics
55
- │ LadybugDB (graph) │ Persisted. Incremental. Versioned.
56
- └───────────┬───────────┘
57
-
58
- ┌──────────┼──────────┐
59
- │ │ │
60
- ▼ ▼ ▼
61
- 35 MCP 13 CLI HTTP API
62
- Tools Commands (dev/network)
63
-
64
-
65
- AI Coding Agent
66
- (Claude Code, Claude Desktop, Cursor, Windsurf, any MCP client)
44
+ ```mermaid
45
+ flowchart TD
46
+ Codebase["Your Codebase"]
47
+ Indexer["Indexer<br/>12 languages<br/>Rust native or Tree-sitter fallback"]
48
+ Graph["LadybugDB graph<br/>symbols, edges, metrics, versions"]
49
+ MCP["34 flat MCP tools<br/>plus optional gateway and code-mode surfaces"]
50
+ CLI["13 CLI commands"]
51
+ HTTP["HTTP API and graph UI"]
52
+ Agent["AI coding agent<br/>Claude Code, Claude Desktop, Cursor, Windsurf, Codex, Gemini"]
53
+
54
+ Codebase --> Indexer --> Graph
55
+ Graph --> MCP
56
+ Graph --> CLI
57
+ Graph --> HTTP
58
+ MCP --> Agent
67
59
  ```
68
60
 
69
61
  1. **Index once** — SDL-MCP parses every symbol in your repo and stores it as a compact metadata record (a "Symbol Card") in a graph database
@@ -105,24 +97,14 @@ Point your MCP client at the server and the agent gains access to all SDL-MCP to
105
97
 
106
98
  The core innovation. Named after the adjustable aperture that controls light flow in optics, the Iris Gate Ladder lets agents dial their context "aperture" from a pinhole to wide-open.
107
99
 
108
- ```
109
- Token Cost What the Agent Sees
110
- ────────────────────────────────────────────────
111
- ~100 RUNG 1 Symbol Card
112
- Name, signature, summary, dependencies, metrics
113
- "What does this function do and what does it call?"
114
-
115
- ~300 RUNG 2 Skeleton IR
116
- Signatures + control flow, bodies replaced with /* ... */
117
- "What's the shape of this class?"
118
-
119
- ~600 RUNG 3 ▸ Hot-Path Excerpt
120
- Only lines matching specific identifiers + context
121
- "Where exactly is `this.cache` initialized?"
122
-
123
- ~2,000 RUNG 4 ▸ Raw Code Window Policy-gated
124
- Full source code, requires justification
125
- "I need to rewrite this error handler"
100
+ ```mermaid
101
+ flowchart TB
102
+ R1["~100 tokens<br/>Rung 1: Symbol Card<br/>Name, signature, summary, dependencies, metrics"]
103
+ R2["~300 tokens<br/>Rung 2: Skeleton IR<br/>Signatures and control flow with bodies elided"]
104
+ R3["~600 tokens<br/>Rung 3: Hot-Path Excerpt<br/>Identifier-focused lines with context"]
105
+ R4["~2,000 tokens<br/>Rung 4: Raw Code Window<br/>Policy-gated full source"]
106
+
107
+ R1 --> R2 --> R3 --> R4
126
108
  ```
127
109
 
128
110
  > **Most questions are answered at Rungs 1-2** without ever reading raw code. That's where the token savings come from.
@@ -153,26 +135,21 @@ The core innovation. Named after the adjustable aperture that controls light flo
153
135
 
154
136
  Every function, class, interface, type, and variable becomes a **Symbol Card**: a compact metadata record (~100 tokens) containing everything an agent needs to *understand* a symbol without reading its code.
155
137
 
156
- ```
157
- ┌─────────────────────────────────────────────────────────┐
158
- Symbol Card: validateToken
159
- │─────────────────────────────────────────────────────────│
160
- │ Kind: function (exported) │
161
- │ File: src/auth/jwt.ts:42-67 │
162
- │ Signature: (token: string, opts?: ValidateOpts) │
163
- │ → Promise<DecodedToken> │
164
- │ Summary: Validates JWT signature and expiration, │
165
- │ returns decoded payload or throws │
166
- │ Invariants: ["throws on expired token"]
167
- │ Side FX: ["logs to audit trail"]
168
- │ Deps: calls: [verifySignature, checkExpiry]
169
- │ imports: [jsonwebtoken, AuditLogger] │
170
- │ Metrics: fan-in: 12 fan-out: 4 churn: 3/30d │
171
- │ Cluster: auth-module (8 members) │
172
- │ Process: request-pipeline (intermediate, depth 1) │
173
- │ Test: auth.test.ts (distance: 1, proximity: 0.9)│
174
- │ ETag: a7f3c2... (for conditional requests) │
175
- └─────────────────────────────────────────────────────────┘
138
+ ```mermaid
139
+ flowchart TB
140
+ Card["Symbol Card: validateToken"]
141
+ Kind["Kind: function (exported)"]
142
+ File["File: src/auth/jwt.ts:42-67"]
143
+ Signature["Signature: (token: string, opts?: ValidateOpts) -> Promise<DecodedToken>"]
144
+ Summary["Summary: validates JWT signature and expiration"]
145
+ Invariants["Invariants: throws on expired token"]
146
+ SideEffects["Side effects: logs to audit trail"]
147
+ Deps["Dependencies: verifySignature, checkExpiry, jsonwebtoken, AuditLogger"]
148
+ Metrics["Metrics: fan-in 12, fan-out 4, churn 3/30d"]
149
+ Context["Context: auth-module, request-pipeline, auth.test.ts"]
150
+ ETag["ETag: a7f3c2..."]
151
+
152
+ Card --> Kind --> File --> Signature --> Summary --> Invariants --> SideEffects --> Deps --> Metrics --> Context --> ETag
176
153
  ```
177
154
 
178
155
  Cards include **confidence-scored call resolution** (the pass-2 resolver traces imports, aliases, barrel re-exports, and tagged templates to produce accurate dependency edges), **community detection** (cluster membership), and **call-chain tracing** (process participation with entry/intermediate/exit roles).
@@ -191,23 +168,16 @@ Cards include **confidence-scored call resolution** (the pass-2 resolver traces
191
168
 
192
169
  Instead of reading files in the same directory, SDL-MCP follows the *dependency graph*. Starting from symbols relevant to your task, it traverses weighted edges (call: 1.0, config: 0.8, import: 0.6), scores each symbol by relevance, and returns the N most important within a token budget.
193
170
 
194
- ```
195
- "Fix the auth middleware" → slice.build
196
-
197
- BFS over graph
198
-
199
- ┌──────────────────┼──────────────────┐
200
- ▼ ▼ ▼
201
- authenticate validateToken JwtConfig
202
- │ │ │
203
- ▼ ▼ ▼
204
- hashPassword getUserById envLoader
205
-
206
- ◆ frontier
207
- (outside budget)
208
-
209
- 8 cards returned · ~800 tokens
210
- vs. reading 8 files · ~16,000 tokens
171
+ ```mermaid
172
+ flowchart TD
173
+ Task["Task: Fix the auth middleware"] --> Slice["sdl.slice.build"]
174
+ Slice --> Auth["authenticate"]
175
+ Slice --> Validate["validateToken"]
176
+ Slice --> Config["JwtConfig"]
177
+ Auth --> Hash["hashPassword"]
178
+ Validate --> User["getUserById"]
179
+ Config --> Env["envLoader"]
180
+ Env -. frontier outside budget .-> Frontier["spillover frontier"]
211
181
  ```
212
182
 
213
183
  Slices have handles, leases, refresh (delta-only updates), and spillover (paged overflow). You can also skip the symbol search entirely — pass a `taskText` string and SDL-MCP auto-discovers the relevant entry symbols.
@@ -226,19 +196,28 @@ Slices have handles, leases, refresh (delta-only updates), and spillover (paged
226
196
 
227
197
  `git diff` tells you what lines changed. SDL-MCP tells you what that change *means* and who's affected.
228
198
 
229
- ```
230
- Modified: validateToken() signature
231
-
232
- ├── signatureDiff: added `options?: object` parameter
233
- ├── invariantDiff: added "throws on expired"
234
- └── sideEffectDiff: added "logs to audit trail"
235
-
236
-
237
- Blast Radius (ranked):
238
- 1. authenticate() ← direct caller, distance 1
239
- 2. refreshSession() ← direct caller, distance 1
240
- 3. AuthMiddleware ← calls authenticate, distance 2
241
- 4. auth.test.ts ← test coverage, flagged for re-run
199
+ ```mermaid
200
+ flowchart TD
201
+ Change["Modified validateToken() signature"]
202
+ Sig["signatureDiff<br/>added options?: object"]
203
+ Inv["invariantDiff<br/>added throws on expired"]
204
+ Fx["sideEffectDiff<br/>added logs to audit trail"]
205
+ Blast["Blast radius"]
206
+ A1["authenticate()<br/>distance 1"]
207
+ A2["refreshSession()<br/>distance 1"]
208
+ A3["AuthMiddleware<br/>distance 2"]
209
+ A4["auth.test.ts<br/>re-run recommended"]
210
+
211
+ Change --> Sig
212
+ Change --> Inv
213
+ Change --> Fx
214
+ Sig --> Blast
215
+ Inv --> Blast
216
+ Fx --> Blast
217
+ Blast --> A1
218
+ Blast --> A2
219
+ Blast --> A3
220
+ Blast --> A4
242
221
  ```
243
222
 
244
223
  **PR risk analysis** (`sdl.pr.risk.analyze`) wraps this into a scored assessment with findings, evidence, and test recommendations. **Fan-in trend analysis** detects "amplifier" symbols whose growing dependency count means changes ripple further over time.
@@ -257,13 +236,13 @@ Slices have handles, leases, refresh (delta-only updates), and spillover (paged
257
236
 
258
237
  SDL-MCP doesn't wait for you to save. As you type in your editor, buffer updates are pushed to an in-memory overlay store, parsed in the background, and merged with the durable database. Search, cards, and slices reflect your *current* code, not your last save.
259
238
 
260
- ```
261
- Editor keystrokes → sdl.buffer.push → Overlay Store → merged reads
262
-
263
- on save / idle
264
-
265
-
266
- LadybugDB (durable)
239
+ ```mermaid
240
+ flowchart LR
241
+ Editor["Editor keystrokes"] --> Push["sdl.buffer.push"]
242
+ Push --> Overlay["Overlay store"]
243
+ Overlay --> Reads["Merged reads<br/>search, cards, slices"]
244
+ Overlay --> Persist["save / idle checkpoint"]
245
+ Persist --> DB["LadybugDB durable graph"]
267
246
  ```
268
247
 
269
248
  **Why it matters:**
@@ -296,20 +275,20 @@ The sandboxed runtime execution tool (`sdl.runtime.execute`) has its own governa
296
275
 
297
276
  ---
298
277
 
299
- ### Agent OrchestrationAutopilot Mode
278
+ ### Agent ContextTask-Shaped Retrieval
300
279
 
301
- `sdl.agent.orchestrate` is an autonomous task engine. Give it a task type (`debug`, `review`, `implement`, `explain`), a description, and a budget — it plans the optimal Iris Gate path, executes it, collects evidence, and returns a synthesized answer.
280
+ `sdl.agent.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`.
302
281
 
303
282
  The feedback loop (`sdl.agent.feedback`) records which symbols were useful and which were missing, improving future slice quality.
304
283
 
305
284
  `sdl.context.summary` generates portable, token-bounded context briefings in markdown, JSON, or clipboard format for use outside MCP environments.
306
285
 
307
286
  **Why it matters:**
308
- - Autonomous task execution plans the **optimal Iris Gate path** within a token budget
287
+ - Task-shaped context retrieval plans the **right Iris Gate path** within a token budget
309
288
  - Feedback loop records what was useful/missing, improving future slice quality
310
289
  - Portable context summaries export findings for use outside MCP environments
311
290
 
312
- [Agent Orchestration Deep Dive →](./docs/feature-deep-dives/agent-orchestration.md)
291
+ [Agent Context Deep Dive →](./docs/feature-deep-dives/agent-context.md) · [Context Modes →](./docs/feature-deep-dives/context-modes.md)
313
292
 
314
293
  ---
315
294
 
@@ -331,21 +310,16 @@ Run tests, linters, and scripts through SDL-MCP's governance layer instead of un
331
310
 
332
311
  Agents forget everything between sessions. SDL-MCP fixes this with a **graph-backed memory system** that lets agents store decisions, bugfix context, and task notes linked directly to the symbols and files they relate to. Memories are stored both in the graph database (for fast querying) and as checked-in markdown files (for version control and team sharing).
333
312
 
334
- ```
335
- Agent Session 1 Agent Session 2
336
- ───────────── ─────────────
337
- "Fixed race condition in sdl.memory.surface
338
- authenticate() added mutex"
339
- │ ┌────┴─────┐
340
- ▼ │ Relevant │
341
- sdl.memory.store │ memories │
342
- │ │ surfaced │
343
- ├──▶ Graph DB (Memory node) └────┬─────┘
344
- │ ├── MEMORY_OF ──▶ authenticate() │
345
- │ └── HAS_MEMORY ◀── Repo ▼
346
- │ "Previous fix: race condition
347
- └──▶ .sdl-memory/bugfixes/a1b2c3.md in authenticate() — mutex added"
348
- (YAML frontmatter + markdown)
313
+ ```mermaid
314
+ flowchart LR
315
+ Session1["Agent session 1<br/>records bugfix memory"] --> Store["sdl.memory.store"]
316
+ Store --> Graph["LadybugDB memory node"]
317
+ Store --> Files[".sdl-memory/bugfixes/<id>.md"]
318
+ Graph --> Link1["MEMORY_OF -> authenticate()"]
319
+ Graph --> Link2["HAS_MEMORY -> repo"]
320
+ Session2["Agent session 2"] --> Surface["sdl.memory.surface"]
321
+ Surface --> Graph
322
+ Graph --> Recall["Relevant memory surfaced<br/>race condition fix in authenticate()"]
349
323
  ```
350
324
 
351
325
  Memories are **automatically surfaced** inside graph slices — when an agent builds a slice touching symbols with linked memories, those memories appear alongside the cards. During re-indexing, memories linked to changed symbols are **flagged as stale**, prompting agents to review and update them. Four MCP tools (`store`, `query`, `remove`, `surface`) provide full CRUD plus intelligent ranking by confidence, recency, and symbol overlap.
@@ -362,7 +336,7 @@ Memories are **automatically surfaced** inside graph slices — when an agent bu
362
336
 
363
337
  ### CLI Tool Access — No MCP Server Required
364
338
 
365
- Access all 35 tool actions directly from the command line with `sdl-mcp tool`. No MCP server, transport, or SDK just your terminal.
339
+ Access all 32 flat SDL action tools directly from the command line with `sdl-mcp tool`. No MCP server, transport, or SDK is required.
366
340
 
367
341
  ```bash
368
342
  # Search for symbols
@@ -389,20 +363,19 @@ Features include typed argument coercion (string, number, boolean, string[], jso
389
363
 
390
364
  ### Tool Gateway — 81% Token Reduction
391
365
 
392
- The tool gateway consolidates all 35 MCP tools into **4 namespace-scoped tools** (`sdl.query`, `sdl.code`, `sdl.repo`, `sdl.agent`), reducing `tools/list` overhead from **~3,742 tokens to ~713 tokens** an **81% reduction**.
366
+ The tool gateway consolidates the 32 flat SDL action tools 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.
393
367
 
394
- ```
395
- Before: 35 tools × full JSON Schema = ~3,742 tokens at conversation start
396
- After: 4 tools × thin schema = ~713 tokens at conversation start
397
- ─────────────
398
- ~3,029 tokens saved per conversation
368
+ ```mermaid
369
+ flowchart LR
370
+ Before["Flat mode<br/>32 flat action tools<br/>plus universal discovery/info"] --> After["Gateway mode<br/>4 namespace tools<br/>plus universal discovery/info"]
371
+ After --> Savings["Smaller tools/list payload<br/>lower agent startup overhead"]
399
372
  ```
400
373
 
401
374
  Each gateway tool accepts an `action` discriminator field (e.g., `{ action: "symbol.search", repoId: "x", query: "auth" }`) and routes to the same handlers with double Zod validation. Thin wire schemas in `tools/list` keep the registration compact while full validation happens server-side. Legacy flat tool names are optionally emitted alongside for backward compatibility.
402
375
 
403
376
  **Why it matters:**
404
- - **81% token reduction** in `tools/list` overhead (~3,742 ~713 tokens per conversation)
405
- - 35 tools consolidated into 4 namespace-scoped tools for simpler agent selection
377
+ - Large reduction in `tools/list` overhead for gateway-first agents
378
+ - 32 flat action tools consolidated into 4 namespace-scoped tools for simpler agent selection
406
379
  - Fewer tool choices means faster and more accurate tool dispatch by the agent
407
380
  - Backward-compatible: legacy flat tool names optionally emitted alongside
408
381
 
@@ -414,7 +387,7 @@ Each gateway tool accepts an `action` discriminator field (e.g., `{ action: "sym
414
387
 
415
388
  <br/>
416
389
 
417
- ## All 35 MCP Tools at a Glance
390
+ ## All 36 Unique Tool Surfaces at a Glance
418
391
 
419
392
  <table>
420
393
  <tr><th>Category</th><th>Tool</th><th>One-Line Description</th></tr>
@@ -458,7 +431,7 @@ Each gateway tool accepts an `action` discriminator field (e.g., `{ action: "sym
458
431
  <td><code>sdl.context.summary</code></td><td>Token-bounded portable briefing (markdown/JSON/clipboard)</td></tr>
459
432
 
460
433
  <tr><td rowspan="3"><strong>Agent</strong></td>
461
- <td><code>sdl.agent.orchestrate</code></td><td>Autonomous task execution with budget control</td></tr>
434
+ <td><code>sdl.agent.context</code></td><td>Task-shaped context retrieval with budget-controlled rung planning</td></tr>
462
435
  <tr><td><code>sdl.agent.feedback</code></td><td>Record which symbols were useful or missing</td></tr>
463
436
  <tr><td><code>sdl.agent.feedback.query</code></td><td>Query aggregated feedback statistics</td></tr>
464
437
 
@@ -472,8 +445,9 @@ Each gateway tool accepts an `action` discriminator field (e.g., `{ action: "sym
472
445
  <tr><td><code>sdl.memory.remove</code></td><td>Soft-delete a memory from graph and optionally from disk</td></tr>
473
446
  <tr><td><code>sdl.memory.surface</code></td><td>Auto-surface relevant memories for a task context</td></tr>
474
447
 
475
- <tr><td rowspan="2"><strong>Code Mode</strong></td>
476
- <td><code>sdl.chain</code></td><td>Multi-step tool chaining with budget tracking and ETag caching</td></tr>
448
+ <tr><td rowspan="3"><strong>Code Mode</strong></td>
449
+ <td><code>sdl.context</code></td><td>Code Mode task-shaped context retrieval for explain/debug/review/implement work</td></tr>
450
+ <tr><td><code>sdl.workflow</code></td><td>Multi-step operations with budget tracking, ETag caching, and transforms</td></tr>
477
451
  <tr><td><code>sdl.manual</code></td><td>Self-documentation — query usage guide, action schemas, output format reference</td></tr>
478
452
 
479
453
  <tr><td rowspan="3"><strong>Meta</strong></td>
@@ -559,46 +533,21 @@ A **VSCode extension** (`sdl-mcp-vscode/`) provides live buffer integration for
559
533
 
560
534
  ## System Architecture
561
535
 
562
- ```
563
- ┌─────────────────────────────────────────────────────────────────────┐
564
- MCP Clients │
565
- │ Claude Code · Claude Desktop · Cursor · Windsurf · Codex · Gemini │
566
- └──────────────────────────┬──────────────────────────────────────────┘
567
- stdio / HTTP
568
- ┌──────────────────────────▼──────────────────────────────────────────┐
569
- │ Tool Gateway │
570
- │ 4 namespace-scoped tools (sdl.query, sdl.code, sdl.repo, sdl.agent) │
571
- │ ← Thin JSON schemas → Double Zod validation → Handler dispatch │
572
- └───────┬────────┬────────┬────────┬────────┬────────┬────────────────┘
573
- │ │ │ │ │ │
574
- ┌───────▼──┐ ┌───▼───┐ ┌─▼──┐ ┌──▼──┐ ┌──▼───┐ ┌──▼──────┐
575
- Symbols │ │Slices │ │Code│ │Delta│ │Agent │ │ Memory │
576
- search │ │build │ │gate│ │diff │ │orch. │ │ store │
577
- │ getCard │ │refresh│ │skel│ │blast│ │feedbk│ │ query │
578
- │ getCards │ │spill. │ │hot │ │risk │ │chain │ │ surface │
579
- └────┬─────┘ └───┬───┘ └─┬──┘ └──┬──┘ └──┬───┘ └──┬─────┘
580
- │ │ │ │ │ │
581
- ┌────▼───────────▼───────▼───────▼───────▼────────▼───────┐
582
- │ Policy Engine │
583
- │ Proof-of-need gating · Token budgets · Audit logging │
584
- └──────────────────────────┬──────────────────────────────┘
585
-
586
- ┌──────────────────────────▼──────────────────────────────┐
587
- │ LadybugDB (Graph) │
588
- │ Symbols · Edges · Files · Versions · Clusters · │
589
- │ Processes · Memories · Metrics │
590
- └──────────────────────────▲──────────────────────────────┘
591
-
592
- ┌──────────────────────────┴──────────────────────────────┐
593
- │ Indexer Pipeline │
594
- │ ┌─────────────────┐ ┌────────────────────────────┐ │
595
- │ │ Rust (napi-rs) │ or │ Tree-sitter (TS fallback) │ │
596
- │ │ default engine │ │ 11 language grammars │ │
597
- │ └────────┬────────┘ └──────────┬─────────────────┘ │
598
- │ │ Pass 1: Symbols + Imports + Calls │
599
- │ │ Pass 2: Cross-file call resolution │
600
- │ │ Semantic: Embeddings + LLM summaries │
601
- └───────────┴──────────────────────────────────────────────┘
536
+ ```mermaid
537
+ flowchart TD
538
+ Clients["MCP clients<br/>Claude Code, Claude Desktop, Cursor, Windsurf, Codex, Gemini"]
539
+ Gateway["Tool gateway<br/>sdl.query, sdl.code, sdl.repo, sdl.agent"]
540
+ Flat["Flat tools and optional code-mode surfaces"]
541
+ Policy["Policy engine<br/>proof-of-need, budgets, audit logging"]
542
+ Graph["LadybugDB graph<br/>symbols, edges, files, versions, memories"]
543
+ Indexer["Indexer pipeline<br/>Rust native or Tree-sitter fallback<br/>pass 1, pass 2, semantic enrichment"]
544
+
545
+ Clients --> Gateway
546
+ Clients --> Flat
547
+ Gateway --> Policy
548
+ Flat --> Policy
549
+ Policy --> Graph
550
+ Indexer --> Graph
602
551
  ```
603
552
 
604
553
  [Full Architecture Documentation →](./docs/architecture.md)
@@ -614,7 +563,7 @@ A **VSCode extension** (`sdl-mcp-vscode/`) provides live buffer integration for
614
563
  | Document | Description |
615
564
  |:---------|:------------|
616
565
  | [Getting Started](./docs/getting-started.md) | Installation, 5-minute setup, MCP client config |
617
- | [MCP Tools Reference](./docs/mcp-tools-detailed.md) | Detailed docs for all 35 tools (parameters, responses, examples) |
566
+ | [MCP Tools Reference](./docs/mcp-tools-detailed.md) | Detailed docs for all 36 unique tool surfaces (parameters, responses, examples) |
618
567
  | [CLI Reference](./docs/cli-reference.md) | All CLI commands and options |
619
568
  | [Configuration Reference](./docs/configuration-reference.md) | Every config option with defaults and guidance |
620
569
  | [Agent Workflows](./docs/agent-workflows.md) | Workflow instructions for CLAUDE.md / AGENTS.md |
@@ -631,14 +580,15 @@ A **VSCode extension** (`sdl-mcp-vscode/`) provides live buffer integration for
631
580
  | [Delta & Blast Radius](./docs/feature-deep-dives/delta-blast-radius.md) | Semantic diffs, ranked impact analysis, PR risk scoring |
632
581
  | [Live Indexing](./docs/feature-deep-dives/live-indexing.md) | Real-time editor buffer integration and overlay architecture |
633
582
  | [Governance & Policy](./docs/feature-deep-dives/governance-policy.md) | Proof-of-need gating, audit logging, runtime sandboxing |
634
- | [Agent Orchestration](./docs/feature-deep-dives/agent-orchestration.md) | Autopilot mode, feedback loops, portable context summaries |
583
+ | [Agent Context](./docs/feature-deep-dives/agent-context.md) | Task-shaped context retrieval, feedback loops, portable context summaries |
584
+ | [Context Modes](./docs/feature-deep-dives/context-modes.md) | Precise vs broad retrieval, adaptive symbol ranking, benchmark trade-offs |
635
585
  | [Indexing & Languages](./docs/feature-deep-dives/indexing-languages.md) | Rust/TS engines, two-pass architecture, 12-language support |
636
586
  | [Runtime Execution](./docs/feature-deep-dives/runtime-execution.md) | Sandboxed subprocess execution with governance |
637
587
  | [CLI Tool Access](./docs/feature-deep-dives/cli-tool-access.md) | Direct CLI access to all tool actions, output formats, stdin piping, scripting |
638
588
  | [Tool Gateway](./docs/feature-deep-dives/tool-gateway.md) | 35→4 tool consolidation, token reduction, thin schemas, migration guide |
639
589
  | [Semantic Engine](./docs/feature-deep-dives/semantic-engine.md) | Pass-2 call resolution, embedding search, LLM summaries, confidence scoring |
640
590
  | [Semantic Embeddings Setup](./docs/feature-deep-dives/semantic-embeddings-setup.md) | Dependencies, model installation, provider configuration, tier-by-tier setup |
641
- | [Code Mode](./docs/feature-deep-dives/code-mode.md) | Tool chaining (sdl.chain), action discovery, manual reference, one-call workflows |
591
+ | [Code Mode](./docs/feature-deep-dives/code-mode.md) | `sdl.context`, `sdl.workflow`, action discovery, manual reference, one-call workflows |
642
592
  | [Development Memories](./docs/feature-deep-dives/development-memories.md) | Graph-backed cross-session memory, file sync, staleness detection, auto-surfacing |
643
593
  | [Token Savings Meter](./docs/feature-deep-dives/token-savings-meter.md) | Per-call meter, session summaries, lifetime tracking, `sdl.usage.stats` |
644
594
 
@@ -96,7 +96,6 @@
96
96
  },
97
97
  "semantic": {
98
98
  "enabled": true,
99
- "alpha": 0.6,
100
99
  "provider": "local",
101
100
  "model": "all-MiniLM-L6-v2",
102
101
  "modelCacheDir": null,
@@ -107,15 +106,8 @@
107
106
  "summaryApiBaseUrl": null,
108
107
  "summaryMaxConcurrency": 5,
109
108
  "summaryBatchSize": 20,
110
- "ann": {
111
- "enabled": true,
112
- "m": 16,
113
- "efConstruction": 200,
114
- "efSearch": 50,
115
- "maxElements": 200000
116
- },
117
109
  "retrieval": {
118
- "mode": "legacy",
110
+ "mode": "hybrid",
119
111
  "extensionsOptional": true,
120
112
  "fts": {
121
113
  "enabled": true,
@@ -185,7 +177,7 @@
185
177
  },
186
178
  "gateway": {
187
179
  "enabled": true,
188
- "emitLegacyTools": true
180
+ "emitLegacyTools": false
189
181
  },
190
182
  "httpAuth": {
191
183
  "enabled": false,
@@ -194,9 +186,9 @@
194
186
  "codeMode": {
195
187
  "enabled": true,
196
188
  "exclusive": true,
197
- "maxChainSteps": 20,
198
- "maxChainTokens": 50000,
199
- "maxChainDurationMs": 60000,
189
+ "maxWorkflowSteps": 20,
190
+ "maxWorkflowTokens": 50000,
191
+ "maxWorkflowDurationMs": 60000,
200
192
  "ladderValidation": "warn",
201
193
  "etagCaching": true
202
194
  },