sdl-mcp 0.10.3 → 0.10.5

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 (532) hide show
  1. package/README.md +122 -82
  2. package/config/sdlmcp.config.example.json +27 -9
  3. package/config/sdlmcp.config.json +5 -19
  4. package/config/sdlmcp.config.schema.json +92 -9
  5. package/dist/.tsbuildinfo +1 -1
  6. package/dist/agent/context-engine.d.ts.map +1 -1
  7. package/dist/agent/context-engine.js +2 -0
  8. package/dist/agent/context-engine.js.map +1 -1
  9. package/dist/agent/context-ranking.d.ts +3 -2
  10. package/dist/agent/context-ranking.d.ts.map +1 -1
  11. package/dist/agent/context-ranking.js +65 -11
  12. package/dist/agent/context-ranking.js.map +1 -1
  13. package/dist/agent/types.d.ts +2 -0
  14. package/dist/agent/types.d.ts.map +1 -1
  15. package/dist/cli/argParsing.d.ts +1 -1
  16. package/dist/cli/argParsing.d.ts.map +1 -1
  17. package/dist/cli/argParsing.js +2 -2
  18. package/dist/cli/argParsing.js.map +1 -1
  19. package/dist/cli/commands/benchmark.d.ts +1 -10
  20. package/dist/cli/commands/benchmark.d.ts.map +1 -1
  21. package/dist/cli/commands/benchmark.js.map +1 -1
  22. package/dist/cli/commands/doctor.d.ts.map +1 -1
  23. package/dist/cli/commands/doctor.js +66 -2
  24. package/dist/cli/commands/doctor.js.map +1 -1
  25. package/dist/cli/commands/index.d.ts.map +1 -1
  26. package/dist/cli/commands/index.js +234 -17
  27. package/dist/cli/commands/index.js.map +1 -1
  28. package/dist/cli/commands/init.d.ts.map +1 -1
  29. package/dist/cli/commands/init.js +9 -8
  30. package/dist/cli/commands/init.js.map +1 -1
  31. package/dist/cli/commands/serve.d.ts.map +1 -1
  32. package/dist/cli/commands/serve.js +21 -2
  33. package/dist/cli/commands/serve.js.map +1 -1
  34. package/dist/cli/commands/tool-actions.d.ts.map +1 -1
  35. package/dist/cli/commands/tool-actions.js +749 -200
  36. package/dist/cli/commands/tool-actions.js.map +1 -1
  37. package/dist/cli/transport/http.d.ts.map +1 -1
  38. package/dist/cli/transport/http.js +11 -2
  39. package/dist/cli/transport/http.js.map +1 -1
  40. package/dist/cli/types.d.ts +2 -1
  41. package/dist/cli/types.d.ts.map +1 -1
  42. package/dist/code/hotpath.d.ts +7 -0
  43. package/dist/code/hotpath.d.ts.map +1 -1
  44. package/dist/code/hotpath.js +30 -9
  45. package/dist/code/hotpath.js.map +1 -1
  46. package/dist/code/skeleton.d.ts.map +1 -1
  47. package/dist/code/skeleton.js +39 -11
  48. package/dist/code/skeleton.js.map +1 -1
  49. package/dist/code-mode/action-catalog.d.ts +4 -4
  50. package/dist/code-mode/action-catalog.d.ts.map +1 -1
  51. package/dist/code-mode/action-catalog.js +91 -48
  52. package/dist/code-mode/action-catalog.js.map +1 -1
  53. package/dist/code-mode/descriptions.js +2 -2
  54. package/dist/code-mode/descriptions.js.map +1 -1
  55. package/dist/code-mode/etag-cache.d.ts.map +1 -1
  56. package/dist/code-mode/etag-cache.js +23 -19
  57. package/dist/code-mode/etag-cache.js.map +1 -1
  58. package/dist/code-mode/index.d.ts +1 -0
  59. package/dist/code-mode/index.d.ts.map +1 -1
  60. package/dist/code-mode/index.js +58 -4
  61. package/dist/code-mode/index.js.map +1 -1
  62. package/dist/code-mode/ladder-validator.d.ts.map +1 -1
  63. package/dist/code-mode/ladder-validator.js +0 -1
  64. package/dist/code-mode/ladder-validator.js.map +1 -1
  65. package/dist/code-mode/manual-generator.d.ts.map +1 -1
  66. package/dist/code-mode/manual-generator.js +28 -12
  67. package/dist/code-mode/manual-generator.js.map +1 -1
  68. package/dist/code-mode/transforms.d.ts.map +1 -1
  69. package/dist/code-mode/transforms.js +56 -10
  70. package/dist/code-mode/transforms.js.map +1 -1
  71. package/dist/code-mode/types.d.ts +14 -0
  72. package/dist/code-mode/types.d.ts.map +1 -1
  73. package/dist/code-mode/types.js +2 -0
  74. package/dist/code-mode/types.js.map +1 -1
  75. package/dist/code-mode/workflow-budget.d.ts +14 -0
  76. package/dist/code-mode/workflow-budget.d.ts.map +1 -1
  77. package/dist/code-mode/workflow-budget.js +32 -4
  78. package/dist/code-mode/workflow-budget.js.map +1 -1
  79. package/dist/code-mode/workflow-executor.d.ts.map +1 -1
  80. package/dist/code-mode/workflow-executor.js +52 -0
  81. package/dist/code-mode/workflow-executor.js.map +1 -1
  82. package/dist/code-mode/workflow-parser.d.ts +7 -0
  83. package/dist/code-mode/workflow-parser.d.ts.map +1 -1
  84. package/dist/code-mode/workflow-parser.js +3 -2
  85. package/dist/code-mode/workflow-parser.js.map +1 -1
  86. package/dist/config/loadConfig.d.ts.map +1 -1
  87. package/dist/config/loadConfig.js +21 -0
  88. package/dist/config/loadConfig.js.map +1 -1
  89. package/dist/config/types.d.ts +79 -1
  90. package/dist/config/types.d.ts.map +1 -1
  91. package/dist/config/types.js +64 -4
  92. package/dist/config/types.js.map +1 -1
  93. package/dist/db/ladybug-algorithms.d.ts +98 -0
  94. package/dist/db/ladybug-algorithms.d.ts.map +1 -0
  95. package/dist/db/ladybug-algorithms.js +283 -0
  96. package/dist/db/ladybug-algorithms.js.map +1 -0
  97. package/dist/db/ladybug-edges.d.ts.map +1 -1
  98. package/dist/db/ladybug-edges.js +1 -0
  99. package/dist/db/ladybug-edges.js.map +1 -1
  100. package/dist/db/ladybug-feedback.d.ts.map +1 -1
  101. package/dist/db/ladybug-feedback.js +10 -2
  102. package/dist/db/ladybug-feedback.js.map +1 -1
  103. package/dist/db/ladybug-file-summaries.d.ts +4 -4
  104. package/dist/db/ladybug-file-summaries.d.ts.map +1 -1
  105. package/dist/db/ladybug-file-summaries.js +7 -7
  106. package/dist/db/ladybug-memory.d.ts +1 -0
  107. package/dist/db/ladybug-memory.d.ts.map +1 -1
  108. package/dist/db/ladybug-memory.js +7 -3
  109. package/dist/db/ladybug-memory.js.map +1 -1
  110. package/dist/db/ladybug-metrics.d.ts +12 -0
  111. package/dist/db/ladybug-metrics.d.ts.map +1 -1
  112. package/dist/db/ladybug-metrics.js +43 -0
  113. package/dist/db/ladybug-metrics.js.map +1 -1
  114. package/dist/db/ladybug-queries.d.ts +4 -0
  115. package/dist/db/ladybug-queries.d.ts.map +1 -1
  116. package/dist/db/ladybug-queries.js +7 -0
  117. package/dist/db/ladybug-queries.js.map +1 -1
  118. package/dist/db/ladybug-repos.d.ts +4 -0
  119. package/dist/db/ladybug-repos.d.ts.map +1 -1
  120. package/dist/db/ladybug-repos.js +3 -0
  121. package/dist/db/ladybug-repos.js.map +1 -1
  122. package/dist/db/ladybug-schema.d.ts +8 -1
  123. package/dist/db/ladybug-schema.d.ts.map +1 -1
  124. package/dist/db/ladybug-schema.js +107 -18
  125. package/dist/db/ladybug-schema.js.map +1 -1
  126. package/dist/db/ladybug-scip.d.ts +165 -0
  127. package/dist/db/ladybug-scip.d.ts.map +1 -0
  128. package/dist/db/ladybug-scip.js +451 -0
  129. package/dist/db/ladybug-scip.js.map +1 -0
  130. package/dist/db/ladybug-shadow-clusters.d.ts +62 -0
  131. package/dist/db/ladybug-shadow-clusters.d.ts.map +1 -0
  132. package/dist/db/ladybug-shadow-clusters.js +137 -0
  133. package/dist/db/ladybug-shadow-clusters.js.map +1 -0
  134. package/dist/db/ladybug-symbol-embeddings.d.ts +2 -2
  135. package/dist/db/ladybug-symbol-embeddings.d.ts.map +1 -1
  136. package/dist/db/ladybug-symbol-embeddings.js +12 -6
  137. package/dist/db/ladybug-symbol-embeddings.js.map +1 -1
  138. package/dist/db/ladybug-symbols.d.ts +17 -2
  139. package/dist/db/ladybug-symbols.d.ts.map +1 -1
  140. package/dist/db/ladybug-symbols.js +127 -16
  141. package/dist/db/ladybug-symbols.js.map +1 -1
  142. package/dist/db/ladybug.d.ts.map +1 -1
  143. package/dist/db/ladybug.js +60 -5
  144. package/dist/db/ladybug.js.map +1 -1
  145. package/dist/db/migrations/index.d.ts.map +1 -1
  146. package/dist/db/migrations/index.js +14 -1
  147. package/dist/db/migrations/index.js.map +1 -1
  148. package/dist/db/migrations/m011-add-centrality-and-shadow-clusters.d.ts +5 -0
  149. package/dist/db/migrations/m011-add-centrality-and-shadow-clusters.d.ts.map +1 -0
  150. package/dist/db/migrations/m011-add-centrality-and-shadow-clusters.js +65 -0
  151. package/dist/db/migrations/m011-add-centrality-and-shadow-clusters.js.map +1 -0
  152. package/dist/db/migrations/m012-add-symbol-repo-id-for-algo-projections.d.ts +5 -0
  153. package/dist/db/migrations/m012-add-symbol-repo-id-for-algo-projections.d.ts.map +1 -0
  154. package/dist/db/migrations/m012-add-symbol-repo-id-for-algo-projections.js +45 -0
  155. package/dist/db/migrations/m012-add-symbol-repo-id-for-algo-projections.js.map +1 -0
  156. package/dist/db/migrations/m013-semantic-vector-array-storage.d.ts +20 -0
  157. package/dist/db/migrations/m013-semantic-vector-array-storage.d.ts.map +1 -0
  158. package/dist/db/migrations/m013-semantic-vector-array-storage.js +68 -0
  159. package/dist/db/migrations/m013-semantic-vector-array-storage.js.map +1 -0
  160. package/dist/db/schema.d.ts +8 -0
  161. package/dist/db/schema.d.ts.map +1 -1
  162. package/dist/delta/blastRadius.d.ts +33 -0
  163. package/dist/delta/blastRadius.d.ts.map +1 -1
  164. package/dist/delta/blastRadius.js +160 -0
  165. package/dist/delta/blastRadius.js.map +1 -1
  166. package/dist/domain/errors.d.ts +16 -0
  167. package/dist/domain/errors.d.ts.map +1 -1
  168. package/dist/domain/errors.js +28 -0
  169. package/dist/domain/errors.js.map +1 -1
  170. package/dist/domain/repositories/symbol-repository.d.ts +13 -0
  171. package/dist/domain/repositories/symbol-repository.d.ts.map +1 -1
  172. package/dist/domain/repositories/symbol-repository.js.map +1 -1
  173. package/dist/domain/types.d.ts +25 -1
  174. package/dist/domain/types.d.ts.map +1 -1
  175. package/dist/gateway/descriptions.d.ts.map +1 -1
  176. package/dist/gateway/descriptions.js +3 -5
  177. package/dist/gateway/descriptions.js.map +1 -1
  178. package/dist/gateway/legacy.d.ts.map +1 -1
  179. package/dist/gateway/legacy.js +2 -7
  180. package/dist/gateway/legacy.js.map +1 -1
  181. package/dist/gateway/router.d.ts +0 -8
  182. package/dist/gateway/router.d.ts.map +1 -1
  183. package/dist/gateway/router.js +28 -17
  184. package/dist/gateway/router.js.map +1 -1
  185. package/dist/gateway/schemas.d.ts +10 -59
  186. package/dist/gateway/schemas.d.ts.map +1 -1
  187. package/dist/gateway/schemas.js +15 -57
  188. package/dist/gateway/schemas.js.map +1 -1
  189. package/dist/graph/buildGraph.d.ts +9 -0
  190. package/dist/graph/buildGraph.d.ts.map +1 -1
  191. package/dist/graph/buildGraph.js +9 -30
  192. package/dist/graph/buildGraph.js.map +1 -1
  193. package/dist/graph/cluster.d.ts.map +1 -1
  194. package/dist/graph/cluster.js +13 -0
  195. package/dist/graph/cluster.js.map +1 -1
  196. package/dist/graph/graphSnapshotCache.d.ts.map +1 -1
  197. package/dist/graph/graphSnapshotCache.js +13 -0
  198. package/dist/graph/graphSnapshotCache.js.map +1 -1
  199. package/dist/graph/prefetch-model.d.ts.map +1 -1
  200. package/dist/graph/prefetch-model.js +0 -1
  201. package/dist/graph/prefetch-model.js.map +1 -1
  202. package/dist/graph/prefetch.d.ts.map +1 -1
  203. package/dist/graph/prefetch.js +7 -3
  204. package/dist/graph/prefetch.js.map +1 -1
  205. package/dist/graph/score.d.ts +76 -0
  206. package/dist/graph/score.d.ts.map +1 -1
  207. package/dist/graph/score.js +98 -0
  208. package/dist/graph/score.js.map +1 -1
  209. package/dist/graph/slice/beam-score-worker.d.ts +2 -1
  210. package/dist/graph/slice/beam-score-worker.d.ts.map +1 -1
  211. package/dist/graph/slice/beam-score-worker.js +3 -149
  212. package/dist/graph/slice/beam-score-worker.js.map +1 -1
  213. package/dist/graph/slice/beam-search-engine.d.ts +2 -2
  214. package/dist/graph/slice/beam-search-engine.d.ts.map +1 -1
  215. package/dist/graph/slice/beam-search-engine.js +57 -14
  216. package/dist/graph/slice/beam-search-engine.js.map +1 -1
  217. package/dist/graph/slice/truncation-handler.d.ts +11 -0
  218. package/dist/graph/slice/truncation-handler.d.ts.map +1 -1
  219. package/dist/graph/slice/truncation-handler.js.map +1 -1
  220. package/dist/graph/slice.d.ts.map +1 -1
  221. package/dist/graph/slice.js +21 -0
  222. package/dist/graph/slice.js.map +1 -1
  223. package/dist/indexer/cluster-orchestrator.d.ts +2 -0
  224. package/dist/indexer/cluster-orchestrator.d.ts.map +1 -1
  225. package/dist/indexer/cluster-orchestrator.js +167 -1
  226. package/dist/indexer/cluster-orchestrator.js.map +1 -1
  227. package/dist/indexer/edge-builder/telemetry.d.ts +44 -0
  228. package/dist/indexer/edge-builder/telemetry.d.ts.map +1 -1
  229. package/dist/indexer/edge-builder/telemetry.js +130 -0
  230. package/dist/indexer/edge-builder/telemetry.js.map +1 -1
  231. package/dist/indexer/embeddings-local.js +2 -2
  232. package/dist/indexer/embeddings-local.js.map +1 -1
  233. package/dist/indexer/embeddings.d.ts +2 -2
  234. package/dist/indexer/embeddings.d.ts.map +1 -1
  235. package/dist/indexer/embeddings.js +12 -6
  236. package/dist/indexer/embeddings.js.map +1 -1
  237. package/dist/indexer/indexer-init.d.ts +14 -0
  238. package/dist/indexer/indexer-init.d.ts.map +1 -1
  239. package/dist/indexer/indexer-init.js.map +1 -1
  240. package/dist/indexer/indexer-pass1.d.ts.map +1 -1
  241. package/dist/indexer/indexer-pass1.js +16 -0
  242. package/dist/indexer/indexer-pass1.js.map +1 -1
  243. package/dist/indexer/indexer.d.ts +33 -0
  244. package/dist/indexer/indexer.d.ts.map +1 -1
  245. package/dist/indexer/indexer.js +78 -5
  246. package/dist/indexer/indexer.js.map +1 -1
  247. package/dist/indexer/metrics-updater.js +1 -1
  248. package/dist/indexer/metrics-updater.js.map +1 -1
  249. package/dist/indexer/model-downloader.d.ts.map +1 -1
  250. package/dist/indexer/model-downloader.js +25 -5
  251. package/dist/indexer/model-downloader.js.map +1 -1
  252. package/dist/indexer/model-registry.d.ts.map +1 -1
  253. package/dist/indexer/model-registry.js +5 -21
  254. package/dist/indexer/model-registry.js.map +1 -1
  255. package/dist/indexer/parser/rust-process-file.d.ts.map +1 -1
  256. package/dist/indexer/parser/rust-process-file.js +29 -0
  257. package/dist/indexer/parser/rust-process-file.js.map +1 -1
  258. package/dist/indexer/pass2/barrel-walker.d.ts +77 -0
  259. package/dist/indexer/pass2/barrel-walker.d.ts.map +1 -0
  260. package/dist/indexer/pass2/barrel-walker.js +112 -0
  261. package/dist/indexer/pass2/barrel-walker.js.map +1 -0
  262. package/dist/indexer/pass2/confidence.d.ts +74 -0
  263. package/dist/indexer/pass2/confidence.d.ts.map +1 -0
  264. package/dist/indexer/pass2/confidence.js +173 -0
  265. package/dist/indexer/pass2/confidence.js.map +1 -0
  266. package/dist/indexer/pass2/resolvers/c-pass2-resolver.d.ts.map +1 -1
  267. package/dist/indexer/pass2/resolvers/c-pass2-resolver.js +13 -6
  268. package/dist/indexer/pass2/resolvers/c-pass2-resolver.js.map +1 -1
  269. package/dist/indexer/pass2/resolvers/cpp-pass2-resolver.d.ts.map +1 -1
  270. package/dist/indexer/pass2/resolvers/cpp-pass2-resolver.js +22 -12
  271. package/dist/indexer/pass2/resolvers/cpp-pass2-resolver.js.map +1 -1
  272. package/dist/indexer/pass2/resolvers/csharp-pass2-resolver.d.ts.map +1 -1
  273. package/dist/indexer/pass2/resolvers/csharp-pass2-resolver.js +31 -13
  274. package/dist/indexer/pass2/resolvers/csharp-pass2-resolver.js.map +1 -1
  275. package/dist/indexer/pass2/resolvers/go-pass2-resolver.d.ts.map +1 -1
  276. package/dist/indexer/pass2/resolvers/go-pass2-resolver.js +23 -9
  277. package/dist/indexer/pass2/resolvers/go-pass2-resolver.js.map +1 -1
  278. package/dist/indexer/pass2/resolvers/java-pass2-resolver.d.ts +64 -0
  279. package/dist/indexer/pass2/resolvers/java-pass2-resolver.d.ts.map +1 -1
  280. package/dist/indexer/pass2/resolvers/java-pass2-resolver.js +276 -28
  281. package/dist/indexer/pass2/resolvers/java-pass2-resolver.js.map +1 -1
  282. package/dist/indexer/pass2/resolvers/kotlin-pass2-resolver.d.ts.map +1 -1
  283. package/dist/indexer/pass2/resolvers/kotlin-pass2-resolver.js +27 -9
  284. package/dist/indexer/pass2/resolvers/kotlin-pass2-resolver.js.map +1 -1
  285. package/dist/indexer/pass2/resolvers/php-pass2-resolver.d.ts.map +1 -1
  286. package/dist/indexer/pass2/resolvers/php-pass2-resolver.js +33 -15
  287. package/dist/indexer/pass2/resolvers/php-pass2-resolver.js.map +1 -1
  288. package/dist/indexer/pass2/resolvers/python-pass2-helpers.d.ts +67 -0
  289. package/dist/indexer/pass2/resolvers/python-pass2-helpers.d.ts.map +1 -0
  290. package/dist/indexer/pass2/resolvers/python-pass2-helpers.js +180 -0
  291. package/dist/indexer/pass2/resolvers/python-pass2-helpers.js.map +1 -0
  292. package/dist/indexer/pass2/resolvers/python-pass2-resolver.d.ts.map +1 -1
  293. package/dist/indexer/pass2/resolvers/python-pass2-resolver.js +256 -8
  294. package/dist/indexer/pass2/resolvers/python-pass2-resolver.js.map +1 -1
  295. package/dist/indexer/pass2/resolvers/rust-pass2-resolver.d.ts +93 -1
  296. package/dist/indexer/pass2/resolvers/rust-pass2-resolver.d.ts.map +1 -1
  297. package/dist/indexer/pass2/resolvers/rust-pass2-resolver.js +470 -15
  298. package/dist/indexer/pass2/resolvers/rust-pass2-resolver.js.map +1 -1
  299. package/dist/indexer/pass2/resolvers/shell-pass2-helpers.d.ts +32 -0
  300. package/dist/indexer/pass2/resolvers/shell-pass2-helpers.d.ts.map +1 -0
  301. package/dist/indexer/pass2/resolvers/shell-pass2-helpers.js +71 -0
  302. package/dist/indexer/pass2/resolvers/shell-pass2-helpers.js.map +1 -0
  303. package/dist/indexer/pass2/resolvers/shell-pass2-resolver.d.ts.map +1 -1
  304. package/dist/indexer/pass2/resolvers/shell-pass2-resolver.js +19 -5
  305. package/dist/indexer/pass2/resolvers/shell-pass2-resolver.js.map +1 -1
  306. package/dist/indexer/pass2/scope-walker.d.ts +70 -0
  307. package/dist/indexer/pass2/scope-walker.d.ts.map +1 -0
  308. package/dist/indexer/pass2/scope-walker.js +130 -0
  309. package/dist/indexer/pass2/scope-walker.js.map +1 -0
  310. package/dist/indexer/rustIndexer.d.ts.map +1 -1
  311. package/dist/indexer/rustIndexer.js +23 -4
  312. package/dist/indexer/rustIndexer.js.map +1 -1
  313. package/dist/indexer/summaries.d.ts.map +1 -1
  314. package/dist/indexer/summaries.js +52 -9
  315. package/dist/indexer/summaries.js.map +1 -1
  316. package/dist/indexer/ts/tsParser.d.ts.map +1 -1
  317. package/dist/indexer/ts/tsParser.js +18 -0
  318. package/dist/indexer/ts/tsParser.js.map +1 -1
  319. package/dist/indexer/watcher.d.ts.map +1 -1
  320. package/dist/indexer/watcher.js +12 -1
  321. package/dist/indexer/watcher.js.map +1 -1
  322. package/dist/live-index/file-patcher.d.ts +3 -0
  323. package/dist/live-index/file-patcher.d.ts.map +1 -1
  324. package/dist/live-index/file-patcher.js +86 -15
  325. package/dist/live-index/file-patcher.js.map +1 -1
  326. package/dist/live-index/overlay-reader.d.ts +1 -1
  327. package/dist/live-index/overlay-reader.d.ts.map +1 -1
  328. package/dist/live-index/overlay-reader.js +2 -2
  329. package/dist/live-index/overlay-reader.js.map +1 -1
  330. package/dist/live-index/symbol-diff.d.ts +74 -0
  331. package/dist/live-index/symbol-diff.d.ts.map +1 -0
  332. package/dist/live-index/symbol-diff.js +190 -0
  333. package/dist/live-index/symbol-diff.js.map +1 -0
  334. package/dist/mcp/context-response-projection.js +1 -1
  335. package/dist/mcp/context-response-projection.js.map +1 -1
  336. package/dist/mcp/hooks/memory-hint.js +2 -2
  337. package/dist/mcp/hooks/memory-hint.js.map +1 -1
  338. package/dist/mcp/telemetry.d.ts +17 -1
  339. package/dist/mcp/telemetry.d.ts.map +1 -1
  340. package/dist/mcp/telemetry.js.map +1 -1
  341. package/dist/mcp/token-usage.d.ts.map +1 -1
  342. package/dist/mcp/token-usage.js +5 -0
  343. package/dist/mcp/token-usage.js.map +1 -1
  344. package/dist/mcp/tool-call-formatter.d.ts.map +1 -1
  345. package/dist/mcp/tool-call-formatter.js +7 -10
  346. package/dist/mcp/tool-call-formatter.js.map +1 -1
  347. package/dist/mcp/tools/agent-feedback.d.ts.map +1 -1
  348. package/dist/mcp/tools/agent-feedback.js +1 -2
  349. package/dist/mcp/tools/agent-feedback.js.map +1 -1
  350. package/dist/mcp/tools/buffer.d.ts.map +1 -1
  351. package/dist/mcp/tools/buffer.js +5 -1
  352. package/dist/mcp/tools/buffer.js.map +1 -1
  353. package/dist/mcp/tools/code.d.ts.map +1 -1
  354. package/dist/mcp/tools/code.js +10 -1
  355. package/dist/mcp/tools/code.js.map +1 -1
  356. package/dist/mcp/tools/context.d.ts.map +1 -1
  357. package/dist/mcp/tools/context.js +1 -0
  358. package/dist/mcp/tools/context.js.map +1 -1
  359. package/dist/mcp/tools/delta.d.ts.map +1 -1
  360. package/dist/mcp/tools/delta.js +76 -6
  361. package/dist/mcp/tools/delta.js.map +1 -1
  362. package/dist/mcp/tools/file-read.d.ts.map +1 -1
  363. package/dist/mcp/tools/file-read.js +46 -12
  364. package/dist/mcp/tools/file-read.js.map +1 -1
  365. package/dist/mcp/tools/file-write.d.ts +3 -0
  366. package/dist/mcp/tools/file-write.d.ts.map +1 -0
  367. package/dist/mcp/tools/file-write.js +254 -0
  368. package/dist/mcp/tools/file-write.js.map +1 -0
  369. package/dist/mcp/tools/info.d.ts +4 -2
  370. package/dist/mcp/tools/info.d.ts.map +1 -1
  371. package/dist/mcp/tools/info.js +30 -3
  372. package/dist/mcp/tools/info.js.map +1 -1
  373. package/dist/mcp/tools/memory.d.ts.map +1 -1
  374. package/dist/mcp/tools/memory.js +13 -3
  375. package/dist/mcp/tools/memory.js.map +1 -1
  376. package/dist/mcp/tools/policy.d.ts.map +1 -1
  377. package/dist/mcp/tools/policy.js +19 -15
  378. package/dist/mcp/tools/policy.js.map +1 -1
  379. package/dist/mcp/tools/prRisk.d.ts.map +1 -1
  380. package/dist/mcp/tools/prRisk.js +184 -26
  381. package/dist/mcp/tools/prRisk.js.map +1 -1
  382. package/dist/mcp/tools/repo.d.ts.map +1 -1
  383. package/dist/mcp/tools/repo.js +36 -8
  384. package/dist/mcp/tools/repo.js.map +1 -1
  385. package/dist/mcp/tools/scip.d.ts +10 -0
  386. package/dist/mcp/tools/scip.d.ts.map +1 -0
  387. package/dist/mcp/tools/scip.js +46 -0
  388. package/dist/mcp/tools/scip.js.map +1 -0
  389. package/dist/mcp/tools/slice-wire-format.d.ts +7 -5
  390. package/dist/mcp/tools/slice-wire-format.d.ts.map +1 -1
  391. package/dist/mcp/tools/slice-wire-format.js +12 -6
  392. package/dist/mcp/tools/slice-wire-format.js.map +1 -1
  393. package/dist/mcp/tools/slice.d.ts.map +1 -1
  394. package/dist/mcp/tools/slice.js +39 -6
  395. package/dist/mcp/tools/slice.js.map +1 -1
  396. package/dist/mcp/tools/symbol.d.ts +11 -22
  397. package/dist/mcp/tools/symbol.d.ts.map +1 -1
  398. package/dist/mcp/tools/symbol.js +58 -145
  399. package/dist/mcp/tools/symbol.js.map +1 -1
  400. package/dist/mcp/tools/tool-descriptors.d.ts.map +1 -1
  401. package/dist/mcp/tools/tool-descriptors.js +16 -24
  402. package/dist/mcp/tools/tool-descriptors.js.map +1 -1
  403. package/dist/mcp/tools.d.ts +286 -251
  404. package/dist/mcp/tools.d.ts.map +1 -1
  405. package/dist/mcp/tools.js +224 -155
  406. package/dist/mcp/tools.js.map +1 -1
  407. package/dist/memory/surface.d.ts +7 -0
  408. package/dist/memory/surface.d.ts.map +1 -1
  409. package/dist/memory/surface.js +43 -1
  410. package/dist/memory/surface.js.map +1 -1
  411. package/dist/retrieval/fallback.d.ts.map +1 -1
  412. package/dist/retrieval/fallback.js +29 -9
  413. package/dist/retrieval/fallback.js.map +1 -1
  414. package/dist/retrieval/index-lifecycle.d.ts +11 -21
  415. package/dist/retrieval/index-lifecycle.d.ts.map +1 -1
  416. package/dist/retrieval/index-lifecycle.js +47 -23
  417. package/dist/retrieval/index-lifecycle.js.map +1 -1
  418. package/dist/retrieval/model-mapping.d.ts +8 -5
  419. package/dist/retrieval/model-mapping.d.ts.map +1 -1
  420. package/dist/retrieval/model-mapping.js +20 -7
  421. package/dist/retrieval/model-mapping.js.map +1 -1
  422. package/dist/retrieval/orchestrator.d.ts.map +1 -1
  423. package/dist/retrieval/orchestrator.js +73 -34
  424. package/dist/retrieval/orchestrator.js.map +1 -1
  425. package/dist/retrieval/types.d.ts +10 -2
  426. package/dist/retrieval/types.d.ts.map +1 -1
  427. package/dist/runtime/executor.d.ts.map +1 -1
  428. package/dist/runtime/executor.js +96 -110
  429. package/dist/runtime/executor.js.map +1 -1
  430. package/dist/runtime/runtimes.d.ts +13 -0
  431. package/dist/runtime/runtimes.d.ts.map +1 -1
  432. package/dist/runtime/runtimes.js +73 -18
  433. package/dist/runtime/runtimes.js.map +1 -1
  434. package/dist/scip/decoder-factory.d.ts +16 -0
  435. package/dist/scip/decoder-factory.d.ts.map +1 -0
  436. package/dist/scip/decoder-factory.js +38 -0
  437. package/dist/scip/decoder-factory.js.map +1 -0
  438. package/dist/scip/decoder-rust.d.ts +29 -0
  439. package/dist/scip/decoder-rust.d.ts.map +1 -0
  440. package/dist/scip/decoder-rust.js +189 -0
  441. package/dist/scip/decoder-rust.js.map +1 -0
  442. package/dist/scip/decoder-ts.d.ts +27 -0
  443. package/dist/scip/decoder-ts.d.ts.map +1 -0
  444. package/dist/scip/decoder-ts.js +184 -0
  445. package/dist/scip/decoder-ts.js.map +1 -0
  446. package/dist/scip/edge-builder.d.ts +84 -0
  447. package/dist/scip/edge-builder.d.ts.map +1 -0
  448. package/dist/scip/edge-builder.js +177 -0
  449. package/dist/scip/edge-builder.js.map +1 -0
  450. package/dist/scip/external-symbols.d.ts +38 -0
  451. package/dist/scip/external-symbols.d.ts.map +1 -0
  452. package/dist/scip/external-symbols.js +105 -0
  453. package/dist/scip/external-symbols.js.map +1 -0
  454. package/dist/scip/ingestion.d.ts +63 -0
  455. package/dist/scip/ingestion.d.ts.map +1 -0
  456. package/dist/scip/ingestion.js +560 -0
  457. package/dist/scip/ingestion.js.map +1 -0
  458. package/dist/scip/kind-mapping.d.ts +119 -0
  459. package/dist/scip/kind-mapping.d.ts.map +1 -0
  460. package/dist/scip/kind-mapping.js +405 -0
  461. package/dist/scip/kind-mapping.js.map +1 -0
  462. package/dist/scip/proto/scip_pb.d.ts +420 -0
  463. package/dist/scip/proto/scip_pb.d.ts.map +1 -0
  464. package/dist/scip/proto/scip_pb.js +779 -0
  465. package/dist/scip/proto/scip_pb.js.map +1 -0
  466. package/dist/scip/scip-io-runner.d.ts +152 -0
  467. package/dist/scip/scip-io-runner.d.ts.map +1 -0
  468. package/dist/scip/scip-io-runner.js +870 -0
  469. package/dist/scip/scip-io-runner.js.map +1 -0
  470. package/dist/scip/symbol-matcher.d.ts +65 -0
  471. package/dist/scip/symbol-matcher.d.ts.map +1 -0
  472. package/dist/scip/symbol-matcher.js +198 -0
  473. package/dist/scip/symbol-matcher.js.map +1 -0
  474. package/dist/scip/types.d.ts +115 -0
  475. package/dist/scip/types.d.ts.map +1 -0
  476. package/dist/scip/types.js +2 -0
  477. package/dist/scip/types.js.map +1 -0
  478. package/dist/server.d.ts.map +1 -1
  479. package/dist/server.js +12 -9
  480. package/dist/server.js.map +1 -1
  481. package/dist/services/card-builder.d.ts +7 -0
  482. package/dist/services/card-builder.d.ts.map +1 -1
  483. package/dist/services/card-builder.js +54 -7
  484. package/dist/services/card-builder.js.map +1 -1
  485. package/dist/services/summary.d.ts.map +1 -1
  486. package/dist/services/summary.js +5 -4
  487. package/dist/services/summary.js.map +1 -1
  488. package/dist/ts/mapping.d.ts +2 -13
  489. package/dist/ts/mapping.d.ts.map +1 -1
  490. package/dist/ts/mapping.js.map +1 -1
  491. package/dist/ui/graph.d.ts +2 -0
  492. package/dist/ui/graph.d.ts.map +1 -0
  493. package/dist/ui/graph.js +227 -0
  494. package/dist/ui/graph.js.map +1 -0
  495. package/dist/util/banner.d.ts +13 -0
  496. package/dist/util/banner.d.ts.map +1 -0
  497. package/dist/util/banner.js +33 -0
  498. package/dist/util/banner.js.map +1 -0
  499. package/dist/util/resolve-symbol-ref.d.ts +1 -0
  500. package/dist/util/resolve-symbol-ref.d.ts.map +1 -1
  501. package/dist/util/resolve-symbol-ref.js +15 -2
  502. package/dist/util/resolve-symbol-ref.js.map +1 -1
  503. package/dist/util/symbol-relevance.d.ts +30 -0
  504. package/dist/util/symbol-relevance.d.ts.map +1 -0
  505. package/dist/util/symbol-relevance.js +131 -0
  506. package/dist/util/symbol-relevance.js.map +1 -0
  507. package/dist/util/type-name.d.ts +12 -0
  508. package/dist/util/type-name.d.ts.map +1 -0
  509. package/dist/util/type-name.js +37 -0
  510. package/dist/util/type-name.js.map +1 -0
  511. package/package.json +8 -5
  512. package/templates/AGENTS.md.template +3 -3
  513. package/templates/CLAUDE.md.template +2 -2
  514. package/templates/CODEX.md.template +1 -1
  515. package/templates/GEMINI.md.template +1 -1
  516. package/templates/OPENCODE.md.template +1 -1
  517. package/dist/agent/index.d.ts +0 -9
  518. package/dist/agent/index.d.ts.map +0 -1
  519. package/dist/agent/index.js +0 -8
  520. package/dist/agent/index.js.map +0 -1
  521. package/dist/indexer/pass2/context.d.ts +0 -3
  522. package/dist/indexer/pass2/context.d.ts.map +0 -1
  523. package/dist/indexer/pass2/context.js +0 -4
  524. package/dist/indexer/pass2/context.js.map +0 -1
  525. package/dist/indexer/treesitter/types.d.ts +0 -19
  526. package/dist/indexer/treesitter/types.d.ts.map +0 -1
  527. package/dist/indexer/treesitter/types.js +0 -7
  528. package/dist/indexer/treesitter/types.js.map +0 -1
  529. package/dist/mcp/tools/summary.d.ts +0 -3
  530. package/dist/mcp/tools/summary.d.ts.map +0 -1
  531. package/dist/mcp/tools/summary.js +0 -35
  532. package/dist/mcp/tools/summary.js.map +0 -1
package/README.md CHANGED
@@ -7,7 +7,7 @@
7
7
 
8
8
  ### **Cards-first code context for AI coding agents**
9
9
 
10
- *Stop feeding entire files into the context window.<br/>Start giving agents exactly the code intelligence they need.*
10
+ _Stop feeding entire files into the context window.<br/>Start giving agents exactly the code intelligence they need._
11
11
 
12
12
  <br/>
13
13
 
@@ -19,10 +19,6 @@
19
19
 
20
20
  ---
21
21
 
22
-
23
-
24
-
25
-
26
22
  <br/>
27
23
 
28
24
  ## What's the problem?
@@ -46,7 +42,7 @@ flowchart TD
46
42
  Codebase["Your Codebase"]
47
43
  Indexer["Indexer<br/>12 languages<br/>Rust native or Tree-sitter fallback"]
48
44
  Graph["LadybugDB graph<br/>symbols, edges, metrics, versions"]
49
- MCP["34 flat MCP tools<br/>plus optional gateway and code-mode surfaces"]
45
+ MCP["38 unique MCP tool surfaces<br/>flat, gateway, and code-mode"]
50
46
  CLI["13 CLI commands"]
51
47
  HTTP["HTTP API and graph UI"]
52
48
  Agent["AI coding agent<br/>Claude Code, Claude Desktop, Cursor, Windsurf, Codex, Gemini"]
@@ -109,13 +105,14 @@ flowchart TB
109
105
 
110
106
  > **Most questions are answered at Rungs 1-2** without ever reading raw code. That's where the token savings come from.
111
107
 
112
- | Scenario | Reading the file | Using the Ladder | Savings |
113
- |:---------|:----------------:|:----------------:|:-------:|
114
- | "What does `parseConfig` accept?" | ~2,000 tok | ~100 tok | **20x** |
115
- | "Show me the shape of `AuthService`" | ~4,000 tok | ~300 tok | **13x** |
116
- | "Where is `this.cache` set?" | ~2,000 tok | ~500 tok | **4x** |
108
+ | Scenario | Reading the file | Using the Ladder | Savings |
109
+ | :----------------------------------- | :--------------: | :--------------: | :-----: |
110
+ | "What does `parseConfig` accept?" | ~2,000 tok | ~100 tok | **20x** |
111
+ | "Show me the shape of `AuthService`" | ~4,000 tok | ~300 tok | **13x** |
112
+ | "Where is `this.cache` set?" | ~2,000 tok | ~500 tok | **4x** |
117
113
 
118
114
  **Why it matters:**
115
+
119
116
  - **4–20x token savings** on typical code understanding queries
120
117
  - Most questions answered at Rungs 1–2 without ever reading raw code
121
118
  - Controlled escalation prevents agents from over-consuming context
@@ -133,7 +130,7 @@ flowchart TB
133
130
 
134
131
  ### Symbol Cards — The Atoms of Understanding
135
132
 
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.
133
+ 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.
137
134
 
138
135
  ```mermaid
139
136
  flowchart TB
@@ -155,6 +152,7 @@ flowchart TB
155
152
  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).
156
153
 
157
154
  **Why it matters:**
155
+
158
156
  - **~100 tokens per symbol** vs. ~2,000 tokens to read the full file
159
157
  - Confidence-scored dependency edges trace real call relationships across files
160
158
  - Community detection and call-chain tracing reveal architectural structure
@@ -167,7 +165,7 @@ Cards include **confidence-scored call resolution** (the pass-2 resolver traces
167
165
 
168
166
  ### Graph Slicing — The Right Context for Every Task
169
167
 
170
- 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.
168
+ 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.
171
169
 
172
170
  ```mermaid
173
171
  flowchart TD
@@ -184,6 +182,7 @@ flowchart TD
184
182
  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.
185
183
 
186
184
  **Why it matters:**
185
+
187
186
  - Follows the **dependency graph**, not directory boundaries, for cross-cutting context
188
187
  - Weighted edge scoring (call > config > import) prioritizes the most relevant symbols
189
188
  - Token-budgeted: returns only what fits within your budget (~800 tokens vs. ~16,000 for raw files)
@@ -195,7 +194,7 @@ Slices have handles, leases, refresh (delta-only updates), and spillover (paged
195
194
 
196
195
  ### Delta Packs & Blast Radius — Semantic Change Intelligence
197
196
 
198
- `git diff` tells you what lines changed. SDL-MCP tells you what that change *means* and who's affected.
197
+ `git diff` tells you what lines changed. SDL-MCP tells you what that change _means_ and who's affected.
199
198
 
200
199
  ```mermaid
201
200
  flowchart TD
@@ -224,6 +223,7 @@ flowchart TD
224
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.
225
224
 
226
225
  **Why it matters:**
226
+
227
227
  - Semantic diffs show what a change **means**, not just what lines moved
228
228
  - Ranked blast radius identifies which dependent symbols are most at risk
229
229
  - Fan-in trend analysis detects "amplifier" symbols whose changes ripple further over time
@@ -235,7 +235,7 @@ flowchart TD
235
235
 
236
236
  ### Live Indexing — Real-Time Code Intelligence
237
237
 
238
- 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.
238
+ 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.
239
239
 
240
240
  ```mermaid
241
241
  flowchart LR
@@ -247,6 +247,7 @@ flowchart LR
247
247
  ```
248
248
 
249
249
  **Why it matters:**
250
+
250
251
  - Search, cards, and slices reflect **unsaved editor changes** in real time
251
252
  - No manual re-index needed during active development
252
253
  - Background AST parsing with in-memory overlay keeps queries fast
@@ -258,6 +259,7 @@ flowchart LR
258
259
  ### Governance & Policy — Controlled Access
259
260
 
260
261
  Raw code access (Rung 4) is **policy-gated**. Agents must provide:
262
+
261
263
  - A **reason** explaining why they need raw code
262
264
  - **Identifiers** they expect to find in the code
263
265
  - An **expected line count** within configured limits
@@ -267,6 +269,7 @@ Requests that don't meet policy are denied with actionable guidance ("try `getHo
267
269
  The sandboxed runtime execution tool (`sdl.runtime.execute`) has its own governance layer: enabled by default, but still guarded by executable allowlisting, CWD jailing, environment scrubbing, concurrency limits, and timeout enforcement. The `outputMode` parameter (`"minimal"` | `"summary"` | `"intent"`) defaults to `"minimal"` for ~95% token savings, with `sdl.runtime.queryOutput` enabling on-demand output retrieval when needed.
268
270
 
269
271
  **Why it matters:**
272
+
270
273
  - Proof-of-need gating prevents agents from wastefully reading raw code
271
274
  - Denied requests include **actionable next-best-action** guidance
272
275
  - Full audit logging of every code access decision
@@ -278,13 +281,14 @@ The sandboxed runtime execution tool (`sdl.runtime.execute`) has its own governa
278
281
 
279
282
  ### Agent Context — Task-Shaped Retrieval
280
283
 
281
- `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`.
284
+ `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`.
282
285
 
283
286
  The feedback loop (`sdl.agent.feedback`) records which symbols were useful and which were missing, improving future slice quality.
284
287
 
285
- `sdl.context.summary` generates portable, token-bounded context briefings in markdown, JSON, or clipboard format for use outside MCP environments.
288
+ generates portable, token-bounded context briefings in markdown, JSON, or clipboard format for use outside MCP environments.
286
289
 
287
290
  **Why it matters:**
291
+
288
292
  - Task-shaped context retrieval plans the **right Iris Gate path** within a token budget
289
293
  - Feedback loop records what was useful/missing, improving future slice quality
290
294
  - Portable context summaries export findings for use outside MCP environments
@@ -298,6 +302,7 @@ The feedback loop (`sdl.agent.feedback`) records which symbols were useful and w
298
302
  Run tests, linters, and scripts through SDL-MCP's governance layer instead of uncontrolled shell access. 16 runtimes (Node.js, Python, Go, Java, Rust, Shell, and more), code-mode or args-mode, smart output summarization with keyword-matched excerpts, and gzip artifact persistence.
299
303
 
300
304
  **Why it matters:**
305
+
301
306
  - Run tests, linters, and scripts **under governance** instead of uncontrolled shell access
302
307
  - 16 runtimes supported (Node, Python, Go, Java, Rust, Shell, and more)
303
308
  - Executable allowlisting, CWD jailing, timeout enforcement, and environment scrubbing
@@ -326,6 +331,7 @@ flowchart LR
326
331
  When enabled, 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. Memory tools are only available when memory is enabled in the configuration.
327
332
 
328
333
  **Why it matters:**
334
+
329
335
  - Structured knowledge **persists across sessions**, linked directly to symbols and files
330
336
  - Opt-in and disabled by default — enable via `"memory": { "enabled": true }` in config
331
337
  - When enabled, automatically surfaced inside graph slices when touching related symbols
@@ -336,6 +342,31 @@ When enabled, memories are **automatically surfaced** inside graph slices — wh
336
342
 
337
343
  ---
338
344
 
345
+ ### SCIP Integration — Compiler-Grade Cross-References
346
+
347
+ Tree-sitter gives SDL-MCP fast, syntax-level symbol extraction across 11 languages. SCIP (Source Code Intelligence Protocol) supplements this with **compiler-grade cross-references** from tools like scip-typescript, scip-go, and rust-analyzer. Generate a `.scip` index file, point SDL-MCP at it, and heuristic edges are upgraded to exact compiler-verified edges, external dependency symbols become first-class graph nodes, and new `implements` edges reveal interface/trait relationships that syntax analysis cannot discover.
348
+
349
+ ```mermaid
350
+ flowchart LR
351
+ Compiler["Compiler / Type Checker"] --> SCIP[".scip index file"]
352
+ SCIP --> Ingest["sdl.scip.ingest"]
353
+ Ingest --> Upgrade["Heuristic edges → exact edges"]
354
+ Ingest --> External["External dependency nodes"]
355
+ Ingest --> Implements["implements edges"]
356
+ ```
357
+
358
+ **Why it matters:**
359
+
360
+ - Upgrades heuristic call resolution to **compiler-verified exact edges** (confidence 0.95)
361
+ - External dependencies (npm packages, Go modules, crate deps) become searchable graph nodes
362
+ - Interface/trait implementations tracked via `implements` edges
363
+ - Auto-ingest on `sdl.index.refresh` keeps SCIP data current with zero manual steps
364
+ - Complementary: tree-sitter provides structure, SCIP provides semantic precision
365
+
366
+ [SCIP Integration Deep Dive →](./docs/feature-deep-dives/scip-integration.md)
367
+
368
+ ---
369
+
339
370
  ### CLI Tool Access — No MCP Server Required
340
371
 
341
372
  Access all 32 flat SDL action tools directly from the command line with `sdl-mcp tool`. No MCP server, transport, or SDK is required.
@@ -354,6 +385,7 @@ echo '{"repoId":"my-repo"}' | sdl-mcp tool symbol.search --query "auth"
354
385
  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.
355
386
 
356
387
  **Why it matters:**
388
+
357
389
  - All MCP tool actions accessible from **any terminal** — no server, transport, or SDK required
358
390
  - Same code paths and Zod validation as the MCP server — identical behavior
359
391
  - Four output formats (json, json-compact, pretty, table) for scripting and CI pipelines
@@ -376,6 +408,7 @@ flowchart LR
376
408
  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.
377
409
 
378
410
  **Why it matters:**
411
+
379
412
  - Large reduction in `tools/list` overhead for gateway-first agents
380
413
  - 32 flat action tools consolidated into 4 namespace-scoped tools for simpler agent selection
381
414
  - Fewer tool choices means faster and more accurate tool dispatch by the agent
@@ -389,7 +422,7 @@ Each gateway tool accepts an `action` discriminator field (e.g., `{ action: "sym
389
422
 
390
423
  <br/>
391
424
 
392
- ## All 36 Unique Tool Surfaces at a Glance
425
+ ## All 38 Unique Tool Surfaces at a Glance
393
426
 
394
427
  <table>
395
428
  <tr><th>Category</th><th>Tool</th><th>One-Line Description</th></tr>
@@ -407,7 +440,7 @@ Each gateway tool accepts an `action` discriminator field (e.g., `{ action: "sym
407
440
  <tr><td rowspan="3"><strong>Symbols</strong></td>
408
441
  <td><code>sdl.symbol.search</code></td><td>Search symbols by name (with optional semantic reranking)</td></tr>
409
442
  <tr><td><code>sdl.symbol.getCard</code></td><td>Get a symbol card with ETag-based conditional support</td></tr>
410
- <tr><td><code>sdl.symbol.getCards</code></td><td>Batch-fetch up to 100 cards in one round trip</td></tr>
443
+ <tr><td><code>sdl.symbol.getCard</code></td><td>Batch-fetch up to 100 cards in one round trip</td></tr>
411
444
 
412
445
  <tr><td rowspan="3"><strong>Slices</strong></td>
413
446
  <td><code>sdl.slice.build</code></td><td>Build a task-scoped dependency subgraph</td></tr>
@@ -430,10 +463,10 @@ Each gateway tool accepts an `action` discriminator field (e.g., `{ action: "sym
430
463
  <td><code>sdl.pr.risk.analyze</code></td><td>Scored PR risk with findings and test recommendations</td></tr>
431
464
 
432
465
  <tr><td><strong>Context</strong></td>
433
- <td><code>sdl.context.summary</code></td><td>Token-bounded portable briefing (markdown/JSON/clipboard) with conditional ETag fetch support</td></tr>
466
+ <td><code></code></td><td>Token-bounded portable briefing (markdown/JSON/clipboard) with conditional ETag fetch support</td></tr>
434
467
 
435
468
  <tr><td rowspan="3"><strong>Agent</strong></td>
436
- <td><code>sdl.agent.context</code></td><td>Task-shaped context retrieval with budget-controlled rung planning and conditional ETag fetch support</td></tr>
469
+ <td><code>sdl.context</code></td><td>Task-shaped context retrieval with budget-controlled rung planning and conditional ETag fetch support</td></tr>
437
470
  <tr><td><code>sdl.agent.feedback</code></td><td>Record which symbols were useful or missing</td></tr>
438
471
  <tr><td><code>sdl.agent.feedback.query</code></td><td>Query aggregated feedback statistics</td></tr>
439
472
 
@@ -452,6 +485,12 @@ Each gateway tool accepts an `action` discriminator field (e.g., `{ action: "sym
452
485
  <tr><td><code>sdl.workflow</code></td><td>Multi-step operations with budget tracking, ETag caching, and transforms</td></tr>
453
486
  <tr><td><code>sdl.manual</code></td><td>Self-documentation — query usage guide, action schemas, output format reference</td></tr>
454
487
 
488
+ <tr><td><strong>SCIP</strong></td>
489
+ <td><code>sdl.scip.ingest</code></td><td>Ingest a pre-built SCIP index for compiler-grade cross-references (with dry-run support)</td></tr>
490
+
491
+ <tr><td><strong>File</strong></td>
492
+ <td><code>sdl.file.read</code></td><td>Read non-indexed files (configs, docs, templates) with line-range, search, or JSON-path modes</td></tr>
493
+
455
494
  <tr><td rowspan="3"><strong>Meta</strong></td>
456
495
  <td><code>sdl.info</code></td><td>Runtime diagnostics — version, Node.js, platform, database, config paths</td></tr>
457
496
  <tr><td><code>sdl.usage.stats</code></td><td>Session and lifetime token savings statistics</td></tr>
@@ -468,21 +507,21 @@ Each gateway tool accepts an `action` discriminator field (e.g., `{ action: "sym
468
507
 
469
508
  ## CLI Commands
470
509
 
471
- | Command | Description |
472
- |:--------|:------------|
473
- | `sdl-mcp init` | Bootstrap config, detect repo/languages, optionally auto-index |
474
- | `sdl-mcp doctor` | Validate runtime, config, DB, grammars, repo access |
475
- | `sdl-mcp index` | Index repositories (with optional `--watch` mode) |
476
- | `sdl-mcp serve` | Start MCP server (`--stdio` or `--http`) |
477
- | `sdl-mcp tool` | Access all 35 MCP tool actions directly ([docs](./docs/feature-deep-dives/cli-tool-access.md)) |
478
- | `sdl-mcp info` | Runtime diagnostics — version, Node.js, platform, database, config |
479
- | `sdl-mcp summary` | Generate copy/paste context summaries from the CLI |
480
- | `sdl-mcp health` | Compute composite health score with badge/JSON output |
481
- | `sdl-mcp benchmark` | Run CI regression benchmarks |
482
- | `sdl-mcp export` | Export sync artifact |
483
- | `sdl-mcp import` | Import sync artifact |
484
- | `sdl-mcp pull` | Pull by version/commit with fallback |
485
- | `sdl-mcp version` | Show version and environment info |
510
+ | Command | Description |
511
+ | :------------------ | :--------------------------------------------------------------------------------------------- |
512
+ | `sdl-mcp init` | Bootstrap config, detect repo/languages, optionally auto-index |
513
+ | `sdl-mcp doctor` | Validate runtime, config, DB, grammars, repo access |
514
+ | `sdl-mcp index` | Index repositories (with optional `--watch` mode) |
515
+ | `sdl-mcp serve` | Start MCP server (`--stdio` or `--http`) |
516
+ | `sdl-mcp tool` | Access all 35 MCP tool actions directly ([docs](./docs/feature-deep-dives/cli-tool-access.md)) |
517
+ | `sdl-mcp info` | Runtime diagnostics — version, Node.js, platform, database, config |
518
+ | `sdl-mcp summary` | Generate copy/paste context summaries from the CLI |
519
+ | `sdl-mcp health` | Compute composite health score with badge/JSON output |
520
+ | `sdl-mcp benchmark` | Run CI regression benchmarks |
521
+ | `sdl-mcp export` | Export sync artifact |
522
+ | `sdl-mcp import` | Import sync artifact |
523
+ | `sdl-mcp pull` | Pull by version/commit with fallback |
524
+ | `sdl-mcp version` | Show version and environment info |
486
525
 
487
526
  [CLI Reference →](./docs/cli-reference.md) · [Configuration Reference →](./docs/configuration-reference.md)
488
527
 
@@ -496,15 +535,15 @@ Each gateway tool accepts an `action` discriminator field (e.g., `{ action: "sym
496
535
 
497
536
  SDL-MCP works with any MCP-compatible client:
498
537
 
499
- | Client | Transport | Setup |
500
- |:-------|:----------|:------|
501
- | **Claude Code** | stdio | `sdl-mcp init --client claude-code` |
502
- | **Claude Desktop** | stdio | `sdl-mcp init --client claude-code` |
503
- | **Cursor** | stdio | Standard MCP server config |
504
- | **Windsurf** | stdio | Standard MCP server config |
505
- | **Codex CLI** | stdio | `sdl-mcp init --client codex` |
506
- | **Gemini CLI** | stdio | `sdl-mcp init --client gemini` |
507
- | **OpenCode** | stdio | `sdl-mcp init --client opencode` |
538
+ | Client | Transport | Setup |
539
+ | :----------------- | :----------- | :---------------------------------- |
540
+ | **Claude Code** | stdio | `sdl-mcp init --client claude-code` |
541
+ | **Claude Desktop** | stdio | `sdl-mcp init --client claude-code` |
542
+ | **Cursor** | stdio | Standard MCP server config |
543
+ | **Windsurf** | stdio | Standard MCP server config |
544
+ | **Codex CLI** | stdio | `sdl-mcp init --client codex` |
545
+ | **Gemini CLI** | stdio | `sdl-mcp init --client gemini` |
546
+ | **OpenCode** | stdio | `sdl-mcp init --client opencode` |
508
547
  | **Any MCP client** | stdio / http | `sdl-mcp serve --stdio` or `--http` |
509
548
 
510
549
  A **VSCode extension** (`sdl-mcp-vscode/`) provides live buffer integration for real-time indexing of unsaved edits.
@@ -517,15 +556,15 @@ A **VSCode extension** (`sdl-mcp-vscode/`) provides live buffer integration for
517
556
 
518
557
  ## Tech Stack
519
558
 
520
- | Component | Technology |
521
- |:----------|:-----------|
522
- | Runtime | Node.js 24+ / TypeScript 5.9+ (strict ESM) |
523
- | Graph Database | LadybugDB (embedded, single-file) |
524
- | Indexer (default) | Rust via napi-rs (multi-threaded) |
525
- | Indexer (fallback) | tree-sitter + tree-sitter-typescript |
526
- | MCP SDK | @modelcontextprotocol/sdk |
527
- | Validation | Zod schemas for all payloads |
528
- | Transports | stdio (agents) · HTTP (dev/network) |
559
+ | Component | Technology |
560
+ | :----------------- | :----------------------------------------- |
561
+ | Runtime | Node.js 24+ / TypeScript 5.9+ (strict ESM) |
562
+ | Graph Database | LadybugDB (embedded, single-file) |
563
+ | Indexer (default) | Rust via napi-rs (multi-threaded) |
564
+ | Indexer (fallback) | tree-sitter + tree-sitter-typescript |
565
+ | MCP SDK | @modelcontextprotocol/sdk |
566
+ | Validation | Zod schemas for all payloads |
567
+ | Transports | stdio (agents) · HTTP (dev/network) |
529
568
 
530
569
  <br/>
531
570
 
@@ -562,37 +601,38 @@ flowchart TD
562
601
 
563
602
  ## Documentation
564
603
 
565
- | Document | Description |
566
- |:---------|:------------|
567
- | [Getting Started](./docs/getting-started.md) | Installation, 5-minute setup, MCP client config |
568
- | [MCP Tools Reference](./docs/mcp-tools-detailed.md) | Detailed docs for all 36 unique tool surfaces (parameters, responses, examples) |
569
- | [CLI Reference](./docs/cli-reference.md) | All CLI commands and options |
570
- | [Configuration Reference](./docs/configuration-reference.md) | Every config option with defaults and guidance |
571
- | [Agent Workflows](./docs/agent-workflows.md) | Workflow instructions for CLAUDE.md / AGENTS.md |
572
- | [Architecture](./docs/architecture.md) | Tech stack, data flow, component diagram |
573
- | [Iris Gate Ladder](./docs/feature-deep-dives/iris-gate-ladder.md) | Context escalation methodology |
574
- | [Troubleshooting](./docs/troubleshooting.md) | Common issues and fixes |
604
+ | Document | Description |
605
+ | :---------------------------------------------------------------- | :------------------------------------------------------------------------------ |
606
+ | [Getting Started](./docs/getting-started.md) | Installation, 5-minute setup, MCP client config |
607
+ | [MCP Tools Reference](./docs/mcp-tools-detailed.md) | Detailed docs for all 37 unique tool surfaces (parameters, responses, examples) |
608
+ | [CLI Reference](./docs/cli-reference.md) | All CLI commands and options |
609
+ | [Configuration Reference](./docs/configuration-reference.md) | Every config option with defaults and guidance |
610
+ | [Agent Workflows](./docs/agent-workflows.md) | Workflow instructions for CLAUDE.md / AGENTS.md |
611
+ | [Architecture](./docs/architecture.md) | Tech stack, data flow, component diagram |
612
+ | [Iris Gate Ladder](./docs/feature-deep-dives/iris-gate-ladder.md) | Context escalation methodology |
613
+ | [Troubleshooting](./docs/troubleshooting.md) | Common issues and fixes |
575
614
 
576
615
  ### Feature Deep Dives
577
616
 
578
- | Topic | What You'll Learn |
579
- |:------|:------------------|
580
- | [Iris Gate Ladder](./docs/feature-deep-dives/iris-gate-ladder.md) | Four-rung context escalation with token savings analysis |
581
- | [Graph Slicing](./docs/feature-deep-dives/graph-slicing.md) | BFS/beam search, edge weights, wire formats, auto-discovery |
582
- | [Delta & Blast Radius](./docs/feature-deep-dives/delta-blast-radius.md) | Semantic diffs, ranked impact analysis, PR risk scoring |
583
- | [Live Indexing](./docs/feature-deep-dives/live-indexing.md) | Real-time editor buffer integration and overlay architecture |
584
- | [Governance & Policy](./docs/feature-deep-dives/governance-policy.md) | Proof-of-need gating, audit logging, runtime sandboxing |
585
- | [Agent Context](./docs/feature-deep-dives/agent-context.md) | Task-shaped context retrieval, feedback loops, portable context summaries |
586
- | [Context Modes](./docs/feature-deep-dives/context-modes.md) | Precise vs broad retrieval, adaptive symbol ranking, benchmark trade-offs |
587
- | [Indexing & Languages](./docs/feature-deep-dives/indexing-languages.md) | Rust/TS engines, two-pass architecture, 12-language support |
588
- | [Runtime Execution](./docs/feature-deep-dives/runtime-execution.md) | Sandboxed subprocess execution with governance |
589
- | [CLI Tool Access](./docs/feature-deep-dives/cli-tool-access.md) | Direct CLI access to all tool actions, output formats, stdin piping, scripting |
590
- | [Tool Gateway](./docs/feature-deep-dives/tool-gateway.md) | 35→4 tool consolidation, token reduction, thin schemas, migration guide |
591
- | [Semantic Engine](./docs/feature-deep-dives/semantic-engine.md) | Pass-2 call resolution, embedding search, LLM summaries, confidence scoring |
592
- | [Semantic Embeddings Setup](./docs/feature-deep-dives/semantic-embeddings-setup.md) | Dependencies, model installation, provider configuration, tier-by-tier setup |
593
- | [Code Mode](./docs/feature-deep-dives/code-mode.md) | `sdl.context`, `sdl.workflow`, action discovery, manual reference, one-call workflows |
594
- | [Development Memories](./docs/feature-deep-dives/development-memories.md) | Graph-backed cross-session memory, file sync, staleness detection, auto-surfacing |
595
- | [Token Savings Meter](./docs/feature-deep-dives/token-savings-meter.md) | Per-call meter, session summaries, lifetime tracking, `sdl.usage.stats` |
617
+ | Topic | What You'll Learn |
618
+ | :---------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------ |
619
+ | [Iris Gate Ladder](./docs/feature-deep-dives/iris-gate-ladder.md) | Four-rung context escalation with token savings analysis |
620
+ | [Graph Slicing](./docs/feature-deep-dives/graph-slicing.md) | BFS/beam search, edge weights, wire formats, auto-discovery |
621
+ | [Delta & Blast Radius](./docs/feature-deep-dives/delta-blast-radius.md) | Semantic diffs, ranked impact analysis, PR risk scoring |
622
+ | [Live Indexing](./docs/feature-deep-dives/live-indexing.md) | Real-time editor buffer integration and overlay architecture |
623
+ | [Governance & Policy](./docs/feature-deep-dives/governance-policy.md) | Proof-of-need gating, audit logging, runtime sandboxing |
624
+ | [Agent Context](./docs/feature-deep-dives/agent-context.md) | Task-shaped context retrieval, feedback loops, portable context summaries |
625
+ | [Context Modes](./docs/feature-deep-dives/context-modes.md) | Precise vs broad retrieval, adaptive symbol ranking, benchmark trade-offs |
626
+ | [Indexing & Languages](./docs/feature-deep-dives/indexing-languages.md) | Rust/TS engines, two-pass architecture, 12-language support |
627
+ | [Runtime Execution](./docs/feature-deep-dives/runtime-execution.md) | Sandboxed subprocess execution with governance |
628
+ | [CLI Tool Access](./docs/feature-deep-dives/cli-tool-access.md) | Direct CLI access to all tool actions, output formats, stdin piping, scripting |
629
+ | [Tool Gateway](./docs/feature-deep-dives/tool-gateway.md) | 35→4 tool consolidation, token reduction, thin schemas, migration guide |
630
+ | [Semantic Engine](./docs/feature-deep-dives/semantic-engine.md) | Pass-2 call resolution, embedding search, LLM summaries, confidence scoring |
631
+ | [Semantic Embeddings Setup](./docs/feature-deep-dives/semantic-embeddings-setup.md) | Dependencies, model installation, provider configuration, tier-by-tier setup |
632
+ | [Code Mode](./docs/feature-deep-dives/code-mode.md) | `sdl.context`, `sdl.workflow`, action discovery, manual reference, one-call workflows |
633
+ | [Development Memories](./docs/feature-deep-dives/development-memories.md) | Graph-backed cross-session memory, file sync, staleness detection, auto-surfacing |
634
+ | [SCIP Integration](./docs/feature-deep-dives/scip-integration.md) | Compiler-grade cross-references, external deps, implements edges, auto-ingest |
635
+ | [Token Savings Meter](./docs/feature-deep-dives/token-savings-meter.md) | Per-call meter, session summaries, lifetime tracking, `sdl.usage.stats` |
596
636
 
597
637
  <br/>
598
638
 
@@ -102,7 +102,7 @@
102
102
  "semantic": {
103
103
  "enabled": true,
104
104
  "provider": "local",
105
- "model": "all-MiniLM-L6-v2",
105
+ "model": "jina-embeddings-v2-base-code",
106
106
  "modelCacheDir": null,
107
107
  "generateSummaries": false,
108
108
  "summaryProvider": null,
@@ -123,10 +123,11 @@
123
123
  "vector": {
124
124
  "enabled": true,
125
125
  "topK": 75,
126
+ "efc": 200,
126
127
  "efs": 200,
127
128
  "indexes": {
128
- "all-MiniLM-L6-v2": {
129
- "indexName": "symbol_vec_minilm_l6_v2"
129
+ "jina-embeddings-v2-base-code": {
130
+ "indexName": "symbol_vec_jina_code_v2"
130
131
  },
131
132
  "nomic-embed-text-v1.5": {
132
133
  "indexName": "symbol_vec_nomic_embed_v15"
@@ -166,12 +167,7 @@
166
167
  },
167
168
  "runtime": {
168
169
  "enabled": true,
169
- "allowedRuntimes": [
170
- "node",
171
- "typescript",
172
- "python",
173
- "shell"
174
- ],
170
+ "allowedRuntimes": ["node", "typescript", "python", "shell"],
175
171
  "allowedExecutables": [],
176
172
  "maxDurationMs": 30000,
177
173
  "maxStdoutBytes": 1048576,
@@ -202,6 +198,28 @@
202
198
  "security": {
203
199
  "allowedRepoRoots": []
204
200
  },
201
+ "scip": {
202
+ "enabled": false,
203
+ "indexes": [
204
+ {
205
+ "path": "index.scip",
206
+ "label": "typescript"
207
+ }
208
+ ],
209
+ "externalSymbols": {
210
+ "enabled": true,
211
+ "maxPerIndex": 10000
212
+ },
213
+ "confidence": 0.95,
214
+ "autoIngestOnRefresh": true,
215
+ "generator": {
216
+ "enabled": false,
217
+ "binary": "scip-io",
218
+ "args": [],
219
+ "autoInstall": true,
220
+ "timeoutMs": 600000
221
+ }
222
+ },
205
223
  "memory": {
206
224
  "enabled": false
207
225
  }
@@ -42,11 +42,7 @@
42
42
  "**/*.test.ts",
43
43
  "**/*.spec.ts"
44
44
  ],
45
- "languages": [
46
- "ts",
47
- "tsx",
48
- "js"
49
- ]
45
+ "languages": ["ts", "tsx", "js"]
50
46
  },
51
47
  {
52
48
  "repoId": "preact-oss",
@@ -61,12 +57,7 @@
61
57
  "**/*.test.tsx",
62
58
  "**/*.spec.tsx"
63
59
  ],
64
- "languages": [
65
- "ts",
66
- "tsx",
67
- "js",
68
- "jsx"
69
- ]
60
+ "languages": ["ts", "tsx", "js", "jsx"]
70
61
  },
71
62
  {
72
63
  "repoId": "flask-oss",
@@ -81,9 +72,7 @@
81
72
  "**/*.pyc",
82
73
  "**/tests/**"
83
74
  ],
84
- "languages": [
85
- "py"
86
- ]
75
+ "languages": ["py"]
87
76
  },
88
77
  {
89
78
  "repoId": "ansible-lint-oss",
@@ -100,10 +89,7 @@
100
89
  "**/tests/**",
101
90
  "**/.tox/**"
102
91
  ],
103
- "languages": [
104
- "py",
105
- "sh"
106
- ]
92
+ "languages": ["py", "sh"]
107
93
  }
108
94
  ],
109
95
  "graphDatabase": {
@@ -145,7 +131,7 @@
145
131
  "enabled": true,
146
132
  "alpha": 0.6,
147
133
  "provider": "mock",
148
- "model": "all-MiniLM-L6-v2",
134
+ "model": "jina-embeddings-v2-base-code",
149
135
  "generateSummaries": false
150
136
  },
151
137
  "prefetch": {