sdl-mcp 0.10.9 → 0.11.0

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 (641) hide show
  1. package/README.md +37 -31
  2. package/config/benchmark.ci.config.json +2 -2
  3. package/config/sdlmcp.config.example.json +30 -3
  4. package/config/sdlmcp.config.json +2 -0
  5. package/config/sdlmcp.config.schema.json +226 -7
  6. package/dist/.tsbuildinfo +1 -1
  7. package/dist/agent/context-engine.d.ts +6 -1
  8. package/dist/agent/context-engine.d.ts.map +1 -1
  9. package/dist/agent/context-engine.js +71 -9
  10. package/dist/agent/context-engine.js.map +1 -1
  11. package/dist/agent/executor.d.ts +13 -5
  12. package/dist/agent/executor.d.ts.map +1 -1
  13. package/dist/agent/executor.js +44 -18
  14. package/dist/agent/executor.js.map +1 -1
  15. package/dist/agent/wire-utils.d.ts +15 -0
  16. package/dist/agent/wire-utils.d.ts.map +1 -0
  17. package/dist/agent/wire-utils.js +31 -0
  18. package/dist/agent/wire-utils.js.map +1 -0
  19. package/dist/benchmark/packed-savings.d.ts +9 -0
  20. package/dist/benchmark/packed-savings.d.ts.map +1 -0
  21. package/dist/benchmark/packed-savings.js +74 -0
  22. package/dist/benchmark/packed-savings.js.map +1 -0
  23. package/dist/cli/commands/doctor.js +3 -1
  24. package/dist/cli/commands/doctor.js.map +1 -1
  25. package/dist/cli/commands/index.d.ts +47 -0
  26. package/dist/cli/commands/index.d.ts.map +1 -1
  27. package/dist/cli/commands/index.js +130 -83
  28. package/dist/cli/commands/index.js.map +1 -1
  29. package/dist/cli/commands/init.d.ts +8 -0
  30. package/dist/cli/commands/init.d.ts.map +1 -1
  31. package/dist/cli/commands/init.js +315 -8
  32. package/dist/cli/commands/init.js.map +1 -1
  33. package/dist/cli/commands/serve.d.ts.map +1 -1
  34. package/dist/cli/commands/serve.js +90 -49
  35. package/dist/cli/commands/serve.js.map +1 -1
  36. package/dist/cli/transport/http.d.ts +22 -0
  37. package/dist/cli/transport/http.d.ts.map +1 -1
  38. package/dist/cli/transport/http.js +291 -18
  39. package/dist/cli/transport/http.js.map +1 -1
  40. package/dist/code/enforce.d.ts +38 -0
  41. package/dist/code/enforce.d.ts.map +1 -0
  42. package/dist/code/enforce.js +141 -0
  43. package/dist/code/enforce.js.map +1 -0
  44. package/dist/code/index.d.ts +4 -2
  45. package/dist/code/index.d.ts.map +1 -1
  46. package/dist/code/index.js +2 -1
  47. package/dist/code/index.js.map +1 -1
  48. package/dist/code/skeleton.d.ts.map +1 -1
  49. package/dist/code/skeleton.js +41 -9
  50. package/dist/code/skeleton.js.map +1 -1
  51. package/dist/code/window-loader.d.ts +19 -0
  52. package/dist/code/window-loader.d.ts.map +1 -0
  53. package/dist/code/window-loader.js +80 -0
  54. package/dist/code/window-loader.js.map +1 -0
  55. package/dist/code-mode/action-catalog.d.ts +1 -1
  56. package/dist/code-mode/action-catalog.d.ts.map +1 -1
  57. package/dist/code-mode/action-catalog.js +196 -20
  58. package/dist/code-mode/action-catalog.js.map +1 -1
  59. package/dist/code-mode/etag-cache.d.ts.map +1 -1
  60. package/dist/code-mode/etag-cache.js +46 -7
  61. package/dist/code-mode/etag-cache.js.map +1 -1
  62. package/dist/code-mode/index.d.ts.map +1 -1
  63. package/dist/code-mode/index.js +48 -25
  64. package/dist/code-mode/index.js.map +1 -1
  65. package/dist/code-mode/ref-resolver.d.ts.map +1 -1
  66. package/dist/code-mode/ref-resolver.js +11 -2
  67. package/dist/code-mode/ref-resolver.js.map +1 -1
  68. package/dist/code-mode/workflow-executor.d.ts.map +1 -1
  69. package/dist/code-mode/workflow-executor.js +22 -2
  70. package/dist/code-mode/workflow-executor.js.map +1 -1
  71. package/dist/code-mode/workflow-parser.d.ts +9 -0
  72. package/dist/code-mode/workflow-parser.d.ts.map +1 -1
  73. package/dist/code-mode/workflow-parser.js +36 -5
  74. package/dist/code-mode/workflow-parser.js.map +1 -1
  75. package/dist/config/constants.d.ts +66 -3
  76. package/dist/config/constants.d.ts.map +1 -1
  77. package/dist/config/constants.js +66 -3
  78. package/dist/config/constants.js.map +1 -1
  79. package/dist/config/loadConfig.d.ts.map +1 -1
  80. package/dist/config/loadConfig.js +13 -2
  81. package/dist/config/loadConfig.js.map +1 -1
  82. package/dist/config/types.d.ts +125 -0
  83. package/dist/config/types.d.ts.map +1 -1
  84. package/dist/config/types.js +200 -4
  85. package/dist/config/types.js.map +1 -1
  86. package/dist/db/extension-caps.d.ts +1 -0
  87. package/dist/db/extension-caps.d.ts.map +1 -1
  88. package/dist/db/extension-caps.js +2 -0
  89. package/dist/db/extension-caps.js.map +1 -1
  90. package/dist/db/initGraphDb.d.ts.map +1 -1
  91. package/dist/db/initGraphDb.js +3 -1
  92. package/dist/db/initGraphDb.js.map +1 -1
  93. package/dist/db/ladybug-algorithms.d.ts +9 -3
  94. package/dist/db/ladybug-algorithms.d.ts.map +1 -1
  95. package/dist/db/ladybug-algorithms.js +27 -11
  96. package/dist/db/ladybug-algorithms.js.map +1 -1
  97. package/dist/db/ladybug-clusters.d.ts +2 -3
  98. package/dist/db/ladybug-clusters.d.ts.map +1 -1
  99. package/dist/db/ladybug-clusters.js +29 -12
  100. package/dist/db/ladybug-clusters.js.map +1 -1
  101. package/dist/db/ladybug-core.d.ts +28 -1
  102. package/dist/db/ladybug-core.d.ts.map +1 -1
  103. package/dist/db/ladybug-core.js +179 -10
  104. package/dist/db/ladybug-core.js.map +1 -1
  105. package/dist/db/ladybug-edges.d.ts +9 -3
  106. package/dist/db/ladybug-edges.d.ts.map +1 -1
  107. package/dist/db/ladybug-edges.js +245 -28
  108. package/dist/db/ladybug-edges.js.map +1 -1
  109. package/dist/db/ladybug-embeddings.d.ts.map +1 -1
  110. package/dist/db/ladybug-embeddings.js +26 -2
  111. package/dist/db/ladybug-embeddings.js.map +1 -1
  112. package/dist/db/ladybug-file-summaries.d.ts +23 -0
  113. package/dist/db/ladybug-file-summaries.d.ts.map +1 -1
  114. package/dist/db/ladybug-file-summaries.js +154 -18
  115. package/dist/db/ladybug-file-summaries.js.map +1 -1
  116. package/dist/db/ladybug-metrics.d.ts +5 -7
  117. package/dist/db/ladybug-metrics.d.ts.map +1 -1
  118. package/dist/db/ladybug-metrics.js +43 -45
  119. package/dist/db/ladybug-metrics.js.map +1 -1
  120. package/dist/db/ladybug-processes.d.ts +2 -3
  121. package/dist/db/ladybug-processes.d.ts.map +1 -1
  122. package/dist/db/ladybug-processes.js +29 -14
  123. package/dist/db/ladybug-processes.js.map +1 -1
  124. package/dist/db/ladybug-repos.d.ts +22 -0
  125. package/dist/db/ladybug-repos.d.ts.map +1 -1
  126. package/dist/db/ladybug-repos.js +86 -7
  127. package/dist/db/ladybug-repos.js.map +1 -1
  128. package/dist/db/ladybug-schema.d.ts +7 -0
  129. package/dist/db/ladybug-schema.d.ts.map +1 -1
  130. package/dist/db/ladybug-schema.js +79 -39
  131. package/dist/db/ladybug-schema.js.map +1 -1
  132. package/dist/db/ladybug-scip.d.ts +21 -8
  133. package/dist/db/ladybug-scip.d.ts.map +1 -1
  134. package/dist/db/ladybug-scip.js +132 -36
  135. package/dist/db/ladybug-scip.js.map +1 -1
  136. package/dist/db/ladybug-symbol-embeddings.d.ts +32 -4
  137. package/dist/db/ladybug-symbol-embeddings.d.ts.map +1 -1
  138. package/dist/db/ladybug-symbol-embeddings.js +50 -22
  139. package/dist/db/ladybug-symbol-embeddings.js.map +1 -1
  140. package/dist/db/ladybug-symbols.d.ts +40 -1
  141. package/dist/db/ladybug-symbols.d.ts.map +1 -1
  142. package/dist/db/ladybug-symbols.js +411 -43
  143. package/dist/db/ladybug-symbols.js.map +1 -1
  144. package/dist/db/ladybug-usage.d.ts +4 -0
  145. package/dist/db/ladybug-usage.d.ts.map +1 -1
  146. package/dist/db/ladybug-usage.js +22 -2
  147. package/dist/db/ladybug-usage.js.map +1 -1
  148. package/dist/db/ladybug.d.ts +22 -3
  149. package/dist/db/ladybug.d.ts.map +1 -1
  150. package/dist/db/ladybug.js +169 -49
  151. package/dist/db/ladybug.js.map +1 -1
  152. package/dist/db/migration-runner.d.ts +8 -1
  153. package/dist/db/migration-runner.d.ts.map +1 -1
  154. package/dist/db/migration-runner.js +7 -1
  155. package/dist/db/migration-runner.js.map +1 -1
  156. package/dist/db/migrations/index.d.ts.map +1 -1
  157. package/dist/db/migrations/index.js +8 -0
  158. package/dist/db/migrations/index.js.map +1 -1
  159. package/dist/db/migrations/m005-add-memory-system.d.ts.map +1 -1
  160. package/dist/db/migrations/m005-add-memory-system.js +13 -11
  161. package/dist/db/migrations/m005-add-memory-system.js.map +1 -1
  162. package/dist/db/migrations/m006-add-usage-snapshot.d.ts.map +1 -1
  163. package/dist/db/migrations/m006-add-usage-snapshot.js +4 -8
  164. package/dist/db/migrations/m006-add-usage-snapshot.js.map +1 -1
  165. package/dist/db/migrations/m007-copy-embeddings-to-symbol.d.ts +7 -8
  166. package/dist/db/migrations/m007-copy-embeddings-to-symbol.d.ts.map +1 -1
  167. package/dist/db/migrations/m007-copy-embeddings-to-symbol.js +68 -71
  168. package/dist/db/migrations/m007-copy-embeddings-to-symbol.js.map +1 -1
  169. package/dist/db/migrations/m012-add-symbol-repo-id-for-algo-projections.d.ts.map +1 -1
  170. package/dist/db/migrations/m012-add-symbol-repo-id-for-algo-projections.js +1 -1
  171. package/dist/db/migrations/m012-add-symbol-repo-id-for-algo-projections.js.map +1 -1
  172. package/dist/db/migrations/m013-semantic-vector-array-storage.d.ts +3 -2
  173. package/dist/db/migrations/m013-semantic-vector-array-storage.d.ts.map +1 -1
  174. package/dist/db/migrations/m013-semantic-vector-array-storage.js +8 -6
  175. package/dist/db/migrations/m013-semantic-vector-array-storage.js.map +1 -1
  176. package/dist/db/migrations/m014-add-packed-stats.d.ts +18 -0
  177. package/dist/db/migrations/m014-add-packed-stats.d.ts.map +1 -0
  178. package/dist/db/migrations/m014-add-packed-stats.js +62 -0
  179. package/dist/db/migrations/m014-add-packed-stats.js.map +1 -0
  180. package/dist/db/migrations/m015-backfill-packed-stats.d.ts +22 -0
  181. package/dist/db/migrations/m015-backfill-packed-stats.d.ts.map +1 -0
  182. package/dist/db/migrations/m015-backfill-packed-stats.js +66 -0
  183. package/dist/db/migrations/m015-backfill-packed-stats.js.map +1 -0
  184. package/dist/db/migrations/m016-add-symbol-placeholder-status.d.ts +5 -0
  185. package/dist/db/migrations/m016-add-symbol-placeholder-status.d.ts.map +1 -0
  186. package/dist/db/migrations/m016-add-symbol-placeholder-status.js +66 -0
  187. package/dist/db/migrations/m016-add-symbol-placeholder-status.js.map +1 -0
  188. package/dist/db/migrations/m017-repair-dependency-placeholder-quality.d.ts +5 -0
  189. package/dist/db/migrations/m017-repair-dependency-placeholder-quality.d.ts.map +1 -0
  190. package/dist/db/migrations/m017-repair-dependency-placeholder-quality.js +12 -0
  191. package/dist/db/migrations/m017-repair-dependency-placeholder-quality.js.map +1 -0
  192. package/dist/db/symbol-placeholders.d.ts +16 -0
  193. package/dist/db/symbol-placeholders.d.ts.map +1 -0
  194. package/dist/db/symbol-placeholders.js +149 -0
  195. package/dist/db/symbol-placeholders.js.map +1 -0
  196. package/dist/db/write-session.d.ts +54 -0
  197. package/dist/db/write-session.d.ts.map +1 -0
  198. package/dist/db/write-session.js +195 -0
  199. package/dist/db/write-session.js.map +1 -0
  200. package/dist/domain/types.d.ts +1 -0
  201. package/dist/domain/types.d.ts.map +1 -1
  202. package/dist/gateway/compact-schema.d.ts.map +1 -1
  203. package/dist/gateway/compact-schema.js +3 -1
  204. package/dist/gateway/compact-schema.js.map +1 -1
  205. package/dist/gateway/schemas.d.ts +3 -1
  206. package/dist/gateway/schemas.d.ts.map +1 -1
  207. package/dist/gateway/schemas.js +26 -10
  208. package/dist/gateway/schemas.js.map +1 -1
  209. package/dist/graph/cache.d.ts.map +1 -1
  210. package/dist/graph/cache.js +17 -0
  211. package/dist/graph/cache.js.map +1 -1
  212. package/dist/graph/metrics.d.ts +8 -0
  213. package/dist/graph/metrics.d.ts.map +1 -1
  214. package/dist/graph/metrics.js +5 -2
  215. package/dist/graph/metrics.js.map +1 -1
  216. package/dist/graph/slice/beam-search-engine.d.ts +27 -51
  217. package/dist/graph/slice/beam-search-engine.d.ts.map +1 -1
  218. package/dist/graph/slice/beam-search-engine.js +110 -13
  219. package/dist/graph/slice/beam-search-engine.js.map +1 -1
  220. package/dist/graph/slice/types.d.ts +17 -0
  221. package/dist/graph/slice/types.d.ts.map +1 -1
  222. package/dist/graph/slice.d.ts.map +1 -1
  223. package/dist/graph/slice.js +77 -3
  224. package/dist/graph/slice.js.map +1 -1
  225. package/dist/graph/sliceCache.d.ts.map +1 -1
  226. package/dist/graph/sliceCache.js +19 -0
  227. package/dist/graph/sliceCache.js.map +1 -1
  228. package/dist/indexer/derived-refresh-queue.d.ts +18 -0
  229. package/dist/indexer/derived-refresh-queue.d.ts.map +1 -1
  230. package/dist/indexer/derived-refresh-queue.js +105 -1
  231. package/dist/indexer/derived-refresh-queue.js.map +1 -1
  232. package/dist/indexer/edge-builder/cleanup.d.ts.map +1 -1
  233. package/dist/indexer/edge-builder/cleanup.js +5 -7
  234. package/dist/indexer/edge-builder/cleanup.js.map +1 -1
  235. package/dist/indexer/edge-builder/import-resolution.d.ts +18 -5
  236. package/dist/indexer/edge-builder/import-resolution.d.ts.map +1 -1
  237. package/dist/indexer/edge-builder/import-resolution.js +85 -42
  238. package/dist/indexer/edge-builder/import-resolution.js.map +1 -1
  239. package/dist/indexer/edge-builder/pass2.d.ts +5 -0
  240. package/dist/indexer/edge-builder/pass2.d.ts.map +1 -1
  241. package/dist/indexer/edge-builder/pass2.js +74 -39
  242. package/dist/indexer/edge-builder/pass2.js.map +1 -1
  243. package/dist/indexer/edge-builder/telemetry.d.ts +7 -0
  244. package/dist/indexer/edge-builder/telemetry.d.ts.map +1 -1
  245. package/dist/indexer/edge-builder/telemetry.js +1 -0
  246. package/dist/indexer/edge-builder/telemetry.js.map +1 -1
  247. package/dist/indexer/edge-builder/unresolved-imports.d.ts +8 -0
  248. package/dist/indexer/edge-builder/unresolved-imports.d.ts.map +1 -1
  249. package/dist/indexer/edge-builder/unresolved-imports.js +142 -57
  250. package/dist/indexer/edge-builder/unresolved-imports.js.map +1 -1
  251. package/dist/indexer/embeddings-local.d.ts +42 -1
  252. package/dist/indexer/embeddings-local.d.ts.map +1 -1
  253. package/dist/indexer/embeddings-local.js +117 -5
  254. package/dist/indexer/embeddings-local.js.map +1 -1
  255. package/dist/indexer/embeddings.d.ts +13 -2
  256. package/dist/indexer/embeddings.d.ts.map +1 -1
  257. package/dist/indexer/embeddings.js +237 -43
  258. package/dist/indexer/embeddings.js.map +1 -1
  259. package/dist/indexer/file-summary-embeddings.d.ts +24 -0
  260. package/dist/indexer/file-summary-embeddings.d.ts.map +1 -0
  261. package/dist/indexer/file-summary-embeddings.js +171 -0
  262. package/dist/indexer/file-summary-embeddings.js.map +1 -0
  263. package/dist/indexer/fileWalker.d.ts.map +1 -1
  264. package/dist/indexer/fileWalker.js +20 -7
  265. package/dist/indexer/fileWalker.js.map +1 -1
  266. package/dist/indexer/finalize-derived-state.d.ts.map +1 -1
  267. package/dist/indexer/finalize-derived-state.js +2 -3
  268. package/dist/indexer/finalize-derived-state.js.map +1 -1
  269. package/dist/indexer/fingerprints.d.ts.map +1 -1
  270. package/dist/indexer/fingerprints.js +8 -1
  271. package/dist/indexer/fingerprints.js.map +1 -1
  272. package/dist/indexer/indexer-init.d.ts +37 -2
  273. package/dist/indexer/indexer-init.d.ts.map +1 -1
  274. package/dist/indexer/indexer-init.js +1 -1
  275. package/dist/indexer/indexer-init.js.map +1 -1
  276. package/dist/indexer/indexer-pass1.d.ts +11 -1
  277. package/dist/indexer/indexer-pass1.d.ts.map +1 -1
  278. package/dist/indexer/indexer-pass1.js +120 -16
  279. package/dist/indexer/indexer-pass1.js.map +1 -1
  280. package/dist/indexer/indexer-pass2.d.ts +47 -0
  281. package/dist/indexer/indexer-pass2.d.ts.map +1 -1
  282. package/dist/indexer/indexer-pass2.js +217 -17
  283. package/dist/indexer/indexer-pass2.js.map +1 -1
  284. package/dist/indexer/indexer.d.ts.map +1 -1
  285. package/dist/indexer/indexer.js +284 -120
  286. package/dist/indexer/indexer.js.map +1 -1
  287. package/dist/indexer/metrics-updater.d.ts +13 -0
  288. package/dist/indexer/metrics-updater.d.ts.map +1 -1
  289. package/dist/indexer/metrics-updater.js +211 -7
  290. package/dist/indexer/metrics-updater.js.map +1 -1
  291. package/dist/indexer/model-downloader.d.ts +4 -2
  292. package/dist/indexer/model-downloader.d.ts.map +1 -1
  293. package/dist/indexer/model-downloader.js +35 -17
  294. package/dist/indexer/model-downloader.js.map +1 -1
  295. package/dist/indexer/model-registry.d.ts +58 -11
  296. package/dist/indexer/model-registry.d.ts.map +1 -1
  297. package/dist/indexer/model-registry.js +119 -23
  298. package/dist/indexer/model-registry.js.map +1 -1
  299. package/dist/indexer/parser/batch-persist.d.ts +25 -0
  300. package/dist/indexer/parser/batch-persist.d.ts.map +1 -1
  301. package/dist/indexer/parser/batch-persist.js +81 -23
  302. package/dist/indexer/parser/batch-persist.js.map +1 -1
  303. package/dist/indexer/parser/build-rows.d.ts +3 -1
  304. package/dist/indexer/parser/build-rows.d.ts.map +1 -1
  305. package/dist/indexer/parser/build-rows.js +31 -6
  306. package/dist/indexer/parser/build-rows.js.map +1 -1
  307. package/dist/indexer/parser/early-exit.d.ts.map +1 -1
  308. package/dist/indexer/parser/early-exit.js +22 -12
  309. package/dist/indexer/parser/early-exit.js.map +1 -1
  310. package/dist/indexer/parser/helpers.js +1 -1
  311. package/dist/indexer/parser/helpers.js.map +1 -1
  312. package/dist/indexer/parser/parse-and-extract.d.ts.map +1 -1
  313. package/dist/indexer/parser/parse-and-extract.js +5 -1
  314. package/dist/indexer/parser/parse-and-extract.js.map +1 -1
  315. package/dist/indexer/parser/process-file.d.ts.map +1 -1
  316. package/dist/indexer/parser/process-file.js +18 -0
  317. package/dist/indexer/parser/process-file.js.map +1 -1
  318. package/dist/indexer/parser/rust-process-file.d.ts +2 -0
  319. package/dist/indexer/parser/rust-process-file.d.ts.map +1 -1
  320. package/dist/indexer/parser/rust-process-file.js +23 -0
  321. package/dist/indexer/parser/rust-process-file.js.map +1 -1
  322. package/dist/indexer/parser/types.d.ts +12 -0
  323. package/dist/indexer/parser/types.d.ts.map +1 -1
  324. package/dist/indexer/parser.js +2 -2
  325. package/dist/indexer/parser.js.map +1 -1
  326. package/dist/indexer/pass2/confidence.d.ts +4 -1
  327. package/dist/indexer/pass2/confidence.d.ts.map +1 -1
  328. package/dist/indexer/pass2/confidence.js +12 -3
  329. package/dist/indexer/pass2/confidence.js.map +1 -1
  330. package/dist/indexer/pass2/resolvers/c-pass2-resolver.d.ts.map +1 -1
  331. package/dist/indexer/pass2/resolvers/c-pass2-resolver.js +65 -51
  332. package/dist/indexer/pass2/resolvers/c-pass2-resolver.js.map +1 -1
  333. package/dist/indexer/pass2/resolvers/cpp-pass2-resolver.d.ts +1 -0
  334. package/dist/indexer/pass2/resolvers/cpp-pass2-resolver.d.ts.map +1 -1
  335. package/dist/indexer/pass2/resolvers/cpp-pass2-resolver.js +153 -147
  336. package/dist/indexer/pass2/resolvers/cpp-pass2-resolver.js.map +1 -1
  337. package/dist/indexer/pass2/resolvers/csharp-pass2-resolver.d.ts.map +1 -1
  338. package/dist/indexer/pass2/resolvers/csharp-pass2-resolver.js +72 -59
  339. package/dist/indexer/pass2/resolvers/csharp-pass2-resolver.js.map +1 -1
  340. package/dist/indexer/pass2/resolvers/go-pass2-resolver.d.ts.map +1 -1
  341. package/dist/indexer/pass2/resolvers/go-pass2-resolver.js +69 -57
  342. package/dist/indexer/pass2/resolvers/go-pass2-resolver.js.map +1 -1
  343. package/dist/indexer/pass2/resolvers/java-pass2-resolver.d.ts.map +1 -1
  344. package/dist/indexer/pass2/resolvers/java-pass2-resolver.js +72 -59
  345. package/dist/indexer/pass2/resolvers/java-pass2-resolver.js.map +1 -1
  346. package/dist/indexer/pass2/resolvers/kotlin-pass2-resolver.d.ts.map +1 -1
  347. package/dist/indexer/pass2/resolvers/kotlin-pass2-resolver.js +33 -20
  348. package/dist/indexer/pass2/resolvers/kotlin-pass2-resolver.js.map +1 -1
  349. package/dist/indexer/pass2/resolvers/php-pass2-resolver.d.ts.map +1 -1
  350. package/dist/indexer/pass2/resolvers/php-pass2-resolver.js +91 -84
  351. package/dist/indexer/pass2/resolvers/php-pass2-resolver.js.map +1 -1
  352. package/dist/indexer/pass2/resolvers/python-pass2-resolver.d.ts.map +1 -1
  353. package/dist/indexer/pass2/resolvers/python-pass2-resolver.js +95 -37
  354. package/dist/indexer/pass2/resolvers/python-pass2-resolver.js.map +1 -1
  355. package/dist/indexer/pass2/resolvers/rust-pass2-resolver.d.ts.map +1 -1
  356. package/dist/indexer/pass2/resolvers/rust-pass2-resolver.js +68 -57
  357. package/dist/indexer/pass2/resolvers/rust-pass2-resolver.js.map +1 -1
  358. package/dist/indexer/pass2/resolvers/shell-pass2-resolver.d.ts.map +1 -1
  359. package/dist/indexer/pass2/resolvers/shell-pass2-resolver.js +66 -60
  360. package/dist/indexer/pass2/resolvers/shell-pass2-resolver.js.map +1 -1
  361. package/dist/indexer/pass2/resolvers/ts-pass2-resolver.d.ts +4 -0
  362. package/dist/indexer/pass2/resolvers/ts-pass2-resolver.d.ts.map +1 -1
  363. package/dist/indexer/pass2/resolvers/ts-pass2-resolver.js +6 -1
  364. package/dist/indexer/pass2/resolvers/ts-pass2-resolver.js.map +1 -1
  365. package/dist/indexer/pass2/types.d.ts +132 -0
  366. package/dist/indexer/pass2/types.d.ts.map +1 -1
  367. package/dist/indexer/pass2/types.js +19 -1
  368. package/dist/indexer/pass2/types.js.map +1 -1
  369. package/dist/indexer/rustIndexer.d.ts +2 -2
  370. package/dist/indexer/rustIndexer.d.ts.map +1 -1
  371. package/dist/indexer/rustIndexer.js +4 -4
  372. package/dist/indexer/rustIndexer.js.map +1 -1
  373. package/dist/indexer/watcher.d.ts.map +1 -1
  374. package/dist/indexer/watcher.js +102 -18
  375. package/dist/indexer/watcher.js.map +1 -1
  376. package/dist/indexer/workerPool.d.ts +26 -2
  377. package/dist/indexer/workerPool.d.ts.map +1 -1
  378. package/dist/indexer/workerPool.js +107 -52
  379. package/dist/indexer/workerPool.js.map +1 -1
  380. package/dist/live-index/draft-parser.d.ts.map +1 -1
  381. package/dist/live-index/draft-parser.js +1 -0
  382. package/dist/live-index/draft-parser.js.map +1 -1
  383. package/dist/live-index/overlay-reader.d.ts +1 -0
  384. package/dist/live-index/overlay-reader.d.ts.map +1 -1
  385. package/dist/live-index/overlay-reader.js +5 -3
  386. package/dist/live-index/overlay-reader.js.map +1 -1
  387. package/dist/main.js +23 -37
  388. package/dist/main.js.map +1 -1
  389. package/dist/mcp/audit-buffer.d.ts +47 -0
  390. package/dist/mcp/audit-buffer.d.ts.map +1 -0
  391. package/dist/mcp/audit-buffer.js +82 -0
  392. package/dist/mcp/audit-buffer.js.map +1 -0
  393. package/dist/mcp/errors.d.ts +5 -0
  394. package/dist/mcp/errors.d.ts.map +1 -1
  395. package/dist/mcp/errors.js +13 -0
  396. package/dist/mcp/errors.js.map +1 -1
  397. package/dist/mcp/telemetry.d.ts +20 -0
  398. package/dist/mcp/telemetry.d.ts.map +1 -1
  399. package/dist/mcp/telemetry.js +94 -9
  400. package/dist/mcp/telemetry.js.map +1 -1
  401. package/dist/mcp/token-accumulator.d.ts +18 -0
  402. package/dist/mcp/token-accumulator.d.ts.map +1 -1
  403. package/dist/mcp/token-accumulator.js +46 -0
  404. package/dist/mcp/token-accumulator.js.map +1 -1
  405. package/dist/mcp/tools/agent-feedback.d.ts +1 -0
  406. package/dist/mcp/tools/agent-feedback.d.ts.map +1 -1
  407. package/dist/mcp/tools/agent-feedback.js +55 -0
  408. package/dist/mcp/tools/agent-feedback.js.map +1 -1
  409. package/dist/mcp/tools/buffer.d.ts.map +1 -1
  410. package/dist/mcp/tools/buffer.js +65 -20
  411. package/dist/mcp/tools/buffer.js.map +1 -1
  412. package/dist/mcp/tools/code.d.ts.map +1 -1
  413. package/dist/mcp/tools/code.js +110 -28
  414. package/dist/mcp/tools/code.js.map +1 -1
  415. package/dist/mcp/tools/context-wire-format.d.ts +22 -0
  416. package/dist/mcp/tools/context-wire-format.d.ts.map +1 -0
  417. package/dist/mcp/tools/context-wire-format.js +132 -0
  418. package/dist/mcp/tools/context-wire-format.js.map +1 -0
  419. package/dist/mcp/tools/context.d.ts +3 -0
  420. package/dist/mcp/tools/context.d.ts.map +1 -1
  421. package/dist/mcp/tools/context.js +78 -1
  422. package/dist/mcp/tools/context.js.map +1 -1
  423. package/dist/mcp/tools/delta.d.ts.map +1 -1
  424. package/dist/mcp/tools/delta.js +15 -1
  425. package/dist/mcp/tools/delta.js.map +1 -1
  426. package/dist/mcp/tools/file-read.d.ts +2 -0
  427. package/dist/mcp/tools/file-read.d.ts.map +1 -1
  428. package/dist/mcp/tools/file-read.js +38 -18
  429. package/dist/mcp/tools/file-read.js.map +1 -1
  430. package/dist/mcp/tools/file-write-internals.d.ts.map +1 -1
  431. package/dist/mcp/tools/file-write-internals.js +9 -2
  432. package/dist/mcp/tools/file-write-internals.js.map +1 -1
  433. package/dist/mcp/tools/policy.d.ts.map +1 -1
  434. package/dist/mcp/tools/policy.js +5 -1
  435. package/dist/mcp/tools/policy.js.map +1 -1
  436. package/dist/mcp/tools/prRisk.d.ts.map +1 -1
  437. package/dist/mcp/tools/prRisk.js +3 -4
  438. package/dist/mcp/tools/prRisk.js.map +1 -1
  439. package/dist/mcp/tools/repo.d.ts.map +1 -1
  440. package/dist/mcp/tools/repo.js +15 -32
  441. package/dist/mcp/tools/repo.js.map +1 -1
  442. package/dist/mcp/tools/runtime.d.ts.map +1 -1
  443. package/dist/mcp/tools/runtime.js +2 -3
  444. package/dist/mcp/tools/runtime.js.map +1 -1
  445. package/dist/mcp/tools/scip.d.ts.map +1 -1
  446. package/dist/mcp/tools/scip.js +2 -0
  447. package/dist/mcp/tools/scip.js.map +1 -1
  448. package/dist/mcp/tools/search-edit/index.d.ts.map +1 -1
  449. package/dist/mcp/tools/search-edit/index.js +55 -2
  450. package/dist/mcp/tools/search-edit/index.js.map +1 -1
  451. package/dist/mcp/tools/search-edit/planner.d.ts +6 -0
  452. package/dist/mcp/tools/search-edit/planner.d.ts.map +1 -1
  453. package/dist/mcp/tools/search-edit/planner.js +107 -21
  454. package/dist/mcp/tools/search-edit/planner.js.map +1 -1
  455. package/dist/mcp/tools/slice-wire-format.d.ts +7 -12
  456. package/dist/mcp/tools/slice-wire-format.d.ts.map +1 -1
  457. package/dist/mcp/tools/slice-wire-format.js +56 -343
  458. package/dist/mcp/tools/slice-wire-format.js.map +1 -1
  459. package/dist/mcp/tools/slice.d.ts +1 -1
  460. package/dist/mcp/tools/slice.d.ts.map +1 -1
  461. package/dist/mcp/tools/slice.js +81 -19
  462. package/dist/mcp/tools/slice.js.map +1 -1
  463. package/dist/mcp/tools/symbol-wire-format.d.ts +35 -0
  464. package/dist/mcp/tools/symbol-wire-format.d.ts.map +1 -0
  465. package/dist/mcp/tools/symbol-wire-format.js +70 -0
  466. package/dist/mcp/tools/symbol-wire-format.js.map +1 -0
  467. package/dist/mcp/tools/symbol.d.ts +2 -1
  468. package/dist/mcp/tools/symbol.d.ts.map +1 -1
  469. package/dist/mcp/tools/symbol.js +71 -8
  470. package/dist/mcp/tools/symbol.js.map +1 -1
  471. package/dist/mcp/tools/usage.d.ts.map +1 -1
  472. package/dist/mcp/tools/usage.js +13 -0
  473. package/dist/mcp/tools/usage.js.map +1 -1
  474. package/dist/mcp/tools.d.ts +357 -690
  475. package/dist/mcp/tools.d.ts.map +1 -1
  476. package/dist/mcp/tools.js +211 -122
  477. package/dist/mcp/tools.js.map +1 -1
  478. package/dist/mcp/wire/packed/decoder.d.ts +18 -0
  479. package/dist/mcp/wire/packed/decoder.d.ts.map +1 -0
  480. package/dist/mcp/wire/packed/decoder.js +54 -0
  481. package/dist/mcp/wire/packed/decoder.js.map +1 -0
  482. package/dist/mcp/wire/packed/encoders/context.d.ts +44 -0
  483. package/dist/mcp/wire/packed/encoders/context.d.ts.map +1 -0
  484. package/dist/mcp/wire/packed/encoders/context.js +99 -0
  485. package/dist/mcp/wire/packed/encoders/context.js.map +1 -0
  486. package/dist/mcp/wire/packed/encoders/registry.d.ts +13 -0
  487. package/dist/mcp/wire/packed/encoders/registry.d.ts.map +1 -0
  488. package/dist/mcp/wire/packed/encoders/registry.js +31 -0
  489. package/dist/mcp/wire/packed/encoders/registry.js.map +1 -0
  490. package/dist/mcp/wire/packed/encoders/slice.d.ts +10 -0
  491. package/dist/mcp/wire/packed/encoders/slice.d.ts.map +1 -0
  492. package/dist/mcp/wire/packed/encoders/slice.js +106 -0
  493. package/dist/mcp/wire/packed/encoders/slice.js.map +1 -0
  494. package/dist/mcp/wire/packed/encoders/symbol-search.d.ts +20 -0
  495. package/dist/mcp/wire/packed/encoders/symbol-search.d.ts.map +1 -0
  496. package/dist/mcp/wire/packed/encoders/symbol-search.js +41 -0
  497. package/dist/mcp/wire/packed/encoders/symbol-search.js.map +1 -0
  498. package/dist/mcp/wire/packed/format.d.ts +87 -0
  499. package/dist/mcp/wire/packed/format.d.ts.map +1 -0
  500. package/dist/mcp/wire/packed/format.js +371 -0
  501. package/dist/mcp/wire/packed/format.js.map +1 -0
  502. package/dist/mcp/wire/packed/gate.d.ts +71 -0
  503. package/dist/mcp/wire/packed/gate.d.ts.map +1 -0
  504. package/dist/mcp/wire/packed/gate.js +142 -0
  505. package/dist/mcp/wire/packed/gate.js.map +1 -0
  506. package/dist/mcp/wire/packed/index.d.ts +16 -0
  507. package/dist/mcp/wire/packed/index.d.ts.map +1 -0
  508. package/dist/mcp/wire/packed/index.js +14 -0
  509. package/dist/mcp/wire/packed/index.js.map +1 -0
  510. package/dist/mcp/wire/packed/schema.d.ts +32 -0
  511. package/dist/mcp/wire/packed/schema.d.ts.map +1 -0
  512. package/dist/mcp/wire/packed/schema.js +268 -0
  513. package/dist/mcp/wire/packed/schema.js.map +1 -0
  514. package/dist/mcp/wire/packed/types.d.ts +52 -0
  515. package/dist/mcp/wire/packed/types.d.ts.map +1 -0
  516. package/dist/mcp/wire/packed/types.js +15 -0
  517. package/dist/mcp/wire/packed/types.js.map +1 -0
  518. package/dist/observability/aggregator.d.ts +274 -0
  519. package/dist/observability/aggregator.d.ts.map +1 -0
  520. package/dist/observability/aggregator.js +991 -0
  521. package/dist/observability/aggregator.js.map +1 -0
  522. package/dist/observability/beam-explain-store.d.ts +74 -0
  523. package/dist/observability/beam-explain-store.d.ts.map +1 -0
  524. package/dist/observability/beam-explain-store.js +128 -0
  525. package/dist/observability/beam-explain-store.js.map +1 -0
  526. package/dist/observability/bottleneck-classifier.d.ts +45 -0
  527. package/dist/observability/bottleneck-classifier.d.ts.map +1 -0
  528. package/dist/observability/bottleneck-classifier.js +236 -0
  529. package/dist/observability/bottleneck-classifier.js.map +1 -0
  530. package/dist/observability/event-tap.d.ts +139 -0
  531. package/dist/observability/event-tap.d.ts.map +1 -0
  532. package/dist/observability/event-tap.js +43 -0
  533. package/dist/observability/event-tap.js.map +1 -0
  534. package/dist/observability/index.d.ts +23 -0
  535. package/dist/observability/index.d.ts.map +1 -0
  536. package/dist/observability/index.js +17 -0
  537. package/dist/observability/index.js.map +1 -0
  538. package/dist/observability/probes.d.ts +4 -0
  539. package/dist/observability/probes.d.ts.map +1 -0
  540. package/dist/observability/probes.js +84 -0
  541. package/dist/observability/probes.js.map +1 -0
  542. package/dist/observability/ring-buffer.d.ts +48 -0
  543. package/dist/observability/ring-buffer.d.ts.map +1 -0
  544. package/dist/observability/ring-buffer.js +79 -0
  545. package/dist/observability/ring-buffer.js.map +1 -0
  546. package/dist/observability/service.d.ts +129 -0
  547. package/dist/observability/service.d.ts.map +1 -0
  548. package/dist/observability/service.js +546 -0
  549. package/dist/observability/service.js.map +1 -0
  550. package/dist/observability/types.d.ts +409 -0
  551. package/dist/observability/types.d.ts.map +1 -0
  552. package/dist/observability/types.js +20 -0
  553. package/dist/observability/types.js.map +1 -0
  554. package/dist/policy/code-access.d.ts +77 -0
  555. package/dist/policy/code-access.d.ts.map +1 -0
  556. package/dist/policy/code-access.js +168 -0
  557. package/dist/policy/code-access.js.map +1 -0
  558. package/dist/policy/engine.d.ts.map +1 -1
  559. package/dist/policy/engine.js +11 -12
  560. package/dist/policy/engine.js.map +1 -1
  561. package/dist/policy/index.d.ts +19 -3
  562. package/dist/policy/index.d.ts.map +1 -1
  563. package/dist/policy/index.js +17 -3
  564. package/dist/policy/index.js.map +1 -1
  565. package/dist/policy/runtime.d.ts +31 -0
  566. package/dist/policy/runtime.d.ts.map +1 -0
  567. package/dist/policy/runtime.js +53 -0
  568. package/dist/policy/runtime.js.map +1 -0
  569. package/dist/retrieval/index-lifecycle.d.ts +42 -0
  570. package/dist/retrieval/index-lifecycle.d.ts.map +1 -1
  571. package/dist/retrieval/index-lifecycle.js +71 -7
  572. package/dist/retrieval/index-lifecycle.js.map +1 -1
  573. package/dist/retrieval/orchestrator.d.ts.map +1 -1
  574. package/dist/retrieval/orchestrator.js +21 -0
  575. package/dist/retrieval/orchestrator.js.map +1 -1
  576. package/dist/scip/cleanup.d.ts +34 -0
  577. package/dist/scip/cleanup.d.ts.map +1 -0
  578. package/dist/scip/cleanup.js +64 -0
  579. package/dist/scip/cleanup.js.map +1 -0
  580. package/dist/scip/decoder-factory.d.ts.map +1 -1
  581. package/dist/scip/decoder-factory.js +9 -4
  582. package/dist/scip/decoder-factory.js.map +1 -1
  583. package/dist/scip/decoder-ts.d.ts +5 -0
  584. package/dist/scip/decoder-ts.d.ts.map +1 -1
  585. package/dist/scip/decoder-ts.js +33 -1
  586. package/dist/scip/decoder-ts.js.map +1 -1
  587. package/dist/scip/edge-builder.d.ts +1 -1
  588. package/dist/scip/edge-builder.d.ts.map +1 -1
  589. package/dist/scip/edge-builder.js +1 -1
  590. package/dist/scip/edge-builder.js.map +1 -1
  591. package/dist/scip/ingestion.d.ts +50 -0
  592. package/dist/scip/ingestion.d.ts.map +1 -1
  593. package/dist/scip/ingestion.js +176 -28
  594. package/dist/scip/ingestion.js.map +1 -1
  595. package/dist/scip/types.d.ts +26 -0
  596. package/dist/scip/types.d.ts.map +1 -1
  597. package/dist/server.d.ts.map +1 -1
  598. package/dist/server.js +52 -8
  599. package/dist/server.js.map +1 -1
  600. package/dist/services/card-builder.d.ts.map +1 -1
  601. package/dist/services/card-builder.js +2 -4
  602. package/dist/services/card-builder.js.map +1 -1
  603. package/dist/services/health.d.ts.map +1 -1
  604. package/dist/services/health.js +3 -0
  605. package/dist/services/health.js.map +1 -1
  606. package/dist/startup/process-handlers.d.ts +12 -0
  607. package/dist/startup/process-handlers.d.ts.map +1 -0
  608. package/dist/startup/process-handlers.js +45 -0
  609. package/dist/startup/process-handlers.js.map +1 -0
  610. package/dist/sync/sync.d.ts.map +1 -1
  611. package/dist/sync/sync.js +14 -6
  612. package/dist/sync/sync.js.map +1 -1
  613. package/dist/ui/observability.d.ts +2 -0
  614. package/dist/ui/observability.d.ts.map +1 -0
  615. package/dist/ui/observability.js +796 -0
  616. package/dist/ui/observability.js.map +1 -0
  617. package/dist/util/concurrency.d.ts +24 -1
  618. package/dist/util/concurrency.d.ts.map +1 -1
  619. package/dist/util/concurrency.js +55 -1
  620. package/dist/util/concurrency.js.map +1 -1
  621. package/dist/util/cpu-presets.d.ts +15 -4
  622. package/dist/util/cpu-presets.d.ts.map +1 -1
  623. package/dist/util/cpu-presets.js +18 -2
  624. package/dist/util/cpu-presets.js.map +1 -1
  625. package/dist/util/pidfile.d.ts.map +1 -1
  626. package/dist/util/pidfile.js +17 -1
  627. package/dist/util/pidfile.js.map +1 -1
  628. package/dist/util/shutdown.d.ts +5 -4
  629. package/dist/util/shutdown.d.ts.map +1 -1
  630. package/dist/util/shutdown.js +7 -7
  631. package/dist/util/shutdown.js.map +1 -1
  632. package/dist/util/tokenize.d.ts +7 -0
  633. package/dist/util/tokenize.d.ts.map +1 -1
  634. package/dist/util/tokenize.js +11 -0
  635. package/dist/util/tokenize.js.map +1 -1
  636. package/package.json +8 -5
  637. package/templates/SDL.md +320 -0
  638. package/dist/code/gate.d.ts +0 -33
  639. package/dist/code/gate.d.ts.map +0 -1
  640. package/dist/code/gate.js +0 -267
  641. package/dist/code/gate.js.map +0 -1
package/README.md CHANGED
@@ -531,6 +531,12 @@ Each gateway tool accepts an `action` discriminator field (e.g., `{ action: "sym
531
531
 
532
532
  [Tool Gateway Deep Dive →](./docs/feature-deep-dives/tool-gateway.md)
533
533
 
534
+ ---
535
+
536
+ ### Observability Dashboard
537
+
538
+ Built-in read-only dashboard surfaces every metric needed to diagnose SDL-MCP behaviour without parsing stderr logs. Cyberpunk-corporate dark UI at `/ui/observability` on the HTTP transport, plus REST + SSE APIs (`/api/observability/snapshot`, `/timeseries`, `/beam-explain`, `/stream`) for programmatic access. Surfaces cache hit rates, hybrid-retrieval breakdowns (FTS / vector / PPR / RRF), beam-search decision traces, indexing pipeline metrics, write-pool and drain saturation, packed-wire savings, SCIP ingest health, deterministic bottleneck classification, and OS-level resource samples. See [Observability Dashboard Deep Dive](./docs/feature-deep-dives/observability-dashboard.md).
539
+
534
540
  <br/>
535
541
 
536
542
  ---
@@ -539,12 +545,12 @@ Each gateway tool accepts an `action` discriminator field (e.g., `{ action: "sym
539
545
 
540
546
  ## Current Tool Surface at a Glance
541
547
 
542
- | Mode | Tool count | Composition |
543
- | :--- | :--------- | :---------- |
544
- | Flat | `33` | `2` universal + `31` flat tools |
545
- | Gateway | `6` | `2` universal + `4` gateway tools |
546
- | Gateway + legacy | `37` | `2` universal + `4` gateway + `31` flat tools |
547
- | Code Mode exclusive | `4` | `sdl.action.search`, `sdl.context`, `sdl.manual`, `sdl.workflow` |
548
+ | Mode | Tool count | Composition |
549
+ | :------------------ | :--------- | :--------------------------------------------------------------- |
550
+ | Flat | `33` | `2` universal + `31` flat tools |
551
+ | Gateway | `6` | `2` universal + `4` gateway tools |
552
+ | Gateway + legacy | `37` | `2` universal + `4` gateway + `31` flat tools |
553
+ | Code Mode exclusive | `4` | `sdl.action.search`, `sdl.context`, `sdl.manual`, `sdl.workflow` |
548
554
 
549
555
  The generated source of truth is [`docs/generated/tool-inventory.md`](./docs/generated/tool-inventory.md).
550
556
 
@@ -627,21 +633,21 @@ The generated source of truth is [`docs/generated/tool-inventory.md`](./docs/gen
627
633
 
628
634
  ## CLI Commands
629
635
 
630
- | Command | Description |
631
- | :------------------ | :--------------------------------------------------------------------------------------------- |
632
- | `sdl-mcp init` | Bootstrap config, detect repo/languages, optionally auto-index |
633
- | `sdl-mcp doctor` | Validate runtime, config, DB, grammars, repo access |
634
- | `sdl-mcp index` | Index repositories (with optional `--watch` mode) |
635
- | `sdl-mcp serve` | Start MCP server (`--stdio` or `--http`) |
636
- | `sdl-mcp tool` | Access 30 direct action aliases ([docs](./docs/feature-deep-dives/cli-tool-access.md)) |
637
- | `sdl-mcp info` | Runtime diagnostics — version, Node.js, platform, database, config |
638
- | `sdl-mcp summary` | Generate copy/paste context summaries from the CLI |
639
- | `sdl-mcp health` | Compute composite health score with badge/JSON output |
640
- | `sdl-mcp benchmark` | Run CI regression benchmarks |
641
- | `sdl-mcp export` | Export sync artifact |
642
- | `sdl-mcp import` | Import sync artifact |
643
- | `sdl-mcp pull` | Pull by version/commit with fallback |
644
- | `sdl-mcp version` | Show version and environment info |
636
+ | Command | Description |
637
+ | :------------------ | :------------------------------------------------------------------------------------- |
638
+ | `sdl-mcp init` | Bootstrap config, detect repo/languages, optionally auto-index |
639
+ | `sdl-mcp doctor` | Validate runtime, config, DB, grammars, repo access |
640
+ | `sdl-mcp index` | Index repositories (with optional `--watch` mode) |
641
+ | `sdl-mcp serve` | Start MCP server (`--stdio` or `--http`) |
642
+ | `sdl-mcp tool` | Access 30 direct action aliases ([docs](./docs/feature-deep-dives/cli-tool-access.md)) |
643
+ | `sdl-mcp info` | Runtime diagnostics — version, Node.js, platform, database, config |
644
+ | `sdl-mcp summary` | Generate copy/paste context summaries from the CLI |
645
+ | `sdl-mcp health` | Compute composite health score with badge/JSON output |
646
+ | `sdl-mcp benchmark` | Run CI regression benchmarks |
647
+ | `sdl-mcp export` | Export sync artifact |
648
+ | `sdl-mcp import` | Import sync artifact |
649
+ | `sdl-mcp pull` | Pull by version/commit with fallback |
650
+ | `sdl-mcp version` | Show version and environment info |
645
651
 
646
652
  [CLI Reference →](./docs/cli-reference.md) · [Configuration Reference →](./docs/configuration-reference.md)
647
653
 
@@ -731,16 +737,16 @@ flowchart TD
731
737
 
732
738
  ## Documentation
733
739
 
734
- | Document | Description |
735
- | :---------------------------------------------------------------- | :------------------------------------------------------------------------------ |
736
- | [Getting Started](./docs/getting-started.md) | Installation, 5-minute setup, MCP client config |
737
- | [MCP Tools Reference](./docs/mcp-tools-detailed.md) | Detailed docs for the current flat, gateway, and Code Mode surfaces |
738
- | [CLI Reference](./docs/cli-reference.md) | All CLI commands and options |
739
- | [Configuration Reference](./docs/configuration-reference.md) | Every config option with defaults and guidance |
740
- | [Agent Workflows](./docs/agent-workflows.md) | Workflow instructions for CLAUDE.md / AGENTS.md |
741
- | [Architecture](./docs/architecture.md) | Tech stack, data flow, component diagram |
742
- | [Iris Gate Ladder](./docs/feature-deep-dives/iris-gate-ladder.md) | Context escalation methodology |
743
- | [Troubleshooting](./docs/troubleshooting.md) | Common issues and fixes |
740
+ | Document | Description |
741
+ | :---------------------------------------------------------------- | :------------------------------------------------------------------ |
742
+ | [Getting Started](./docs/getting-started.md) | Installation, 5-minute setup, MCP client config |
743
+ | [MCP Tools Reference](./docs/mcp-tools-detailed.md) | Detailed docs for the current flat, gateway, and Code Mode surfaces |
744
+ | [CLI Reference](./docs/cli-reference.md) | All CLI commands and options |
745
+ | [Configuration Reference](./docs/configuration-reference.md) | Every config option with defaults and guidance |
746
+ | [Agent Workflows](./docs/agent-workflows.md) | Workflow instructions for CLAUDE.md / AGENTS.md |
747
+ | [Architecture](./docs/architecture.md) | Tech stack, data flow, component diagram |
748
+ | [Iris Gate Ladder](./docs/feature-deep-dives/iris-gate-ladder.md) | Context escalation methodology |
749
+ | [Troubleshooting](./docs/troubleshooting.md) | Common issues and fixes |
744
750
 
745
751
  ### Feature Deep Dives
746
752
 
@@ -41,10 +41,10 @@
41
41
  },
42
42
  "performance": {
43
43
  "sliceBuildTimeMs": {
44
- "maxMs": 350,
44
+ "maxMs": 500,
45
45
  "trend": "lower-is-better",
46
46
  "allowableIncreasePercent": 125,
47
- "_comment": "Raised from 200 ms: TS call-resolver creates more edges (import aliases, barrel re-exports), making graph loading and beam-search proportionally slower."
47
+ "_comment": "Raised from 350 ms: hosted Linux runners have produced valid zod-oss native-addon samples around 420 ms after edge-density increases, while this still guards against subsecond slice regressions."
48
48
  },
49
49
  "avgSkeletonTimeMs": {
50
50
  "maxMs": 10,
@@ -126,6 +126,12 @@
126
126
  "summaryMaxConcurrency": 5,
127
127
  "summaryBatchSize": 20,
128
128
  "embeddingConcurrency": 1,
129
+ "embeddingBatchSize": 32,
130
+ "fileSummaryEmbeddingBatchSize": 4,
131
+ "fileSummaryEmbeddingMaxChars": 4096,
132
+ "embeddingsSequential": false,
133
+ "modelVariant": "default",
134
+ "executionProviders": ["cpu"],
129
135
  "retrieval": {
130
136
  "mode": "hybrid",
131
137
  "extensionsOptional": true,
@@ -159,7 +165,7 @@
159
165
  "prefetch": {
160
166
  "enabled": true,
161
167
  "maxBudgetPercent": 20,
162
- "warmTopN": 50
168
+ "warmTopN": 0
163
169
  },
164
170
  "tracing": {
165
171
  "enabled": true,
@@ -168,6 +174,19 @@
168
174
  "otlpEndpoint": null,
169
175
  "sampleRate": 1
170
176
  },
177
+ "observability": {
178
+ "enabled": true,
179
+ "sampleIntervalMs": 2000,
180
+ "retentionShortMinutes": 15,
181
+ "retentionLongHours": 24,
182
+ "pprMetricsEnabled": true,
183
+ "packedStatsEnabled": true,
184
+ "scipIngestMetrics": true,
185
+ "beamExplainCapacity": 128,
186
+ "beamExplainEntriesPerSlice": 512,
187
+ "sseHeartbeatMs": 15000,
188
+ "sseMaxStreamMs": 3600000
189
+ },
171
190
  "parallelScorer": {
172
191
  "enabled": true,
173
192
  "poolSize": null,
@@ -199,7 +218,14 @@
199
218
  },
200
219
  "httpAuth": {
201
220
  "enabled": false,
202
- "token": null
221
+ "token": null,
222
+ "rateLimit": {
223
+ "bucketSize": 30,
224
+ "refillPerSec": 0.5
225
+ }
226
+ },
227
+ "http": {
228
+ "allowRemote": false
203
229
  },
204
230
  "codeMode": {
205
231
  "enabled": true,
@@ -232,7 +258,8 @@
232
258
  "binary": "scip-io",
233
259
  "args": [],
234
260
  "autoInstall": true,
235
- "timeoutMs": 600000
261
+ "timeoutMs": 600000,
262
+ "cleanupAfterIngest": true
236
263
  }
237
264
  },
238
265
  "memory": {
@@ -143,6 +143,8 @@
143
143
  "enabled": true,
144
144
  "alpha": 0.6,
145
145
  "provider": "mock",
146
+ "executionProviders": ["cpu"],
147
+ "modelVariant": "default",
146
148
  "model": "jina-embeddings-v2-base-code",
147
149
  "additionalModels": ["nomic-embed-text-v1.5"],
148
150
  "generateSummaries": false
@@ -597,11 +597,47 @@
597
597
  },
598
598
  "embeddingConcurrency": {
599
599
  "type": "integer",
600
- "description": "Number of embedding batches to process concurrently during refreshSymbolEmbeddings(). Defaults to 1 (sequential). Increasing this can improve throughput on multi-core machines but ONNX Runtime's internal thread pool is shared across concurrent calls; consider reducing intraOpNumThreads proportionally when raising above 1. Maximum 4.",
600
+ "description": "Number of embedding batches to process concurrently during refreshSymbolEmbeddings(). Defaults to 1 (sequential). Increasing this can improve throughput on multi-core machines but ONNX Runtime's internal thread pool is shared across concurrent calls; consider reducing intraOpNumThreads proportionally when raising above 1. Maximum 8.",
601
601
  "minimum": 1,
602
- "maximum": 4,
602
+ "maximum": 8,
603
603
  "default": 1
604
604
  },
605
+ "embeddingBatchSize": {
606
+ "type": "integer",
607
+ "description": "ONNX inference batch width for symbol embedding refresh. Default 32 matches LocalEmbeddingProvider's tokenizer + session expectations. Larger batches (64-128) amortise tokenizer + session bind/unbind costs across more rows but raise peak memory roughly with the longest sequence in the batch. Length-bucketing before splitting keeps tokenizer pad waste bounded.",
608
+ "minimum": 1,
609
+ "maximum": 128,
610
+ "default": 32
611
+ },
612
+ "fileSummaryEmbeddingBatchSize": {
613
+ "type": "integer",
614
+ "description": "ONNX inference batch width for hybrid FileSummary embedding refresh. File-level payloads are larger than symbol payloads, so this defaults lower than embeddingBatchSize to bound DirectML/ONNX memory use.",
615
+ "minimum": 1,
616
+ "maximum": 16,
617
+ "default": 4
618
+ },
619
+ "fileSummaryEmbeddingMaxChars": {
620
+ "type": "integer",
621
+ "description": "Maximum characters sent to the embedding provider for each FileSummary. Stored summaries and FTS searchText remain complete; this only bounds vector-generation resources.",
622
+ "minimum": 512,
623
+ "maximum": 32768,
624
+ "default": 4096
625
+ },
626
+ "embeddingsSequential": {
627
+ "type": "boolean",
628
+ "description": "When two or more embedding models are configured, run them in series instead of via Promise.all. Default false launches concurrently — best when ORT runs sessions on independent thread pools. Set true on systems where ORT serializes sessions at the thread-pool layer (observed alternation pattern in CLI progress); each model holds the full thread budget end-to-end, weights stay hot in L3 cache, and model-handoff scheduling overhead disappears.",
629
+ "default": false
630
+ },
631
+ "modelVariant": {
632
+ "type": "string",
633
+ "description": "ONNX model file variant to load. Common values: 'default' / 'int8' (~140-160MB, balanced), 'fp16' (~270-320MB, ~30% faster than fp32 with <0.5% accuracy loss), 'fp32' (~550-650MB, reference quality). nomic-embed-text-v1.5 also publishes 'uint8', 'q4', 'q4f16', 'bnb4'. When the chosen variant is not published for a given model, the registry falls back to that model's default variant with a warning."
634
+ },
635
+ "executionProviders": {
636
+ "type": "array",
637
+ "items": { "type": "string" },
638
+ "description": "ONNX Runtime execution providers in priority order. ORT tries them left-to-right; first one that initialises wins. Bundled with default onnxruntime-node npm package: Windows x64 ['cpu', 'dml', 'webgpu'], macOS ['cpu', 'coreml'], Linux x64 ['cpu', 'cuda', 'tensorrt'] (CUDA EP requires NVIDIA GPU + CUDA 12 + cuDNN on the host), Linux arm64 ['cpu']. DirectML covers any DX12 GPU including AMD Radeon, NVIDIA GeForce, Intel Arc. ROCm (AMD on Linux), OpenVINO, QNN need a custom ORT build. Unsupported entries on a given platform are dropped with a warning; 'cpu' is auto-appended as final fallback so session creation never strands.",
639
+ "default": ["cpu"]
640
+ },
605
641
  "ann": {
606
642
  "type": "object",
607
643
  "description": "Deprecated — removed in v0.10.1. Silently ignored. Use retrieval.vector instead.",
@@ -811,14 +847,94 @@
811
847
  },
812
848
  "warmTopN": {
813
849
  "type": "integer",
814
- "minimum": 1,
815
- "default": 50
850
+ "minimum": 0,
851
+ "default": 0,
852
+ "description": "Number of top-fan-in symbols to prefetch on serve start. Default 0 disables startup warming; raise only when you have evidence the warm set is consumed within the 5-minute stale window."
816
853
  }
817
854
  },
818
855
  "default": {
819
856
  "enabled": true,
820
857
  "maxBudgetPercent": 20,
821
- "warmTopN": 50
858
+ "warmTopN": 0
859
+ }
860
+ },
861
+ "observability": {
862
+ "type": "object",
863
+ "description": "Observability dashboard configuration (in-process metrics + SSE stream)",
864
+ "additionalProperties": false,
865
+ "properties": {
866
+ "enabled": {
867
+ "type": "boolean",
868
+ "default": true
869
+ },
870
+ "sampleIntervalMs": {
871
+ "type": "integer",
872
+ "minimum": 250,
873
+ "maximum": 60000,
874
+ "default": 2000
875
+ },
876
+ "retentionShortMinutes": {
877
+ "type": "integer",
878
+ "minimum": 1,
879
+ "maximum": 60,
880
+ "default": 15
881
+ },
882
+ "retentionLongHours": {
883
+ "type": "integer",
884
+ "minimum": 1,
885
+ "maximum": 168,
886
+ "default": 24
887
+ },
888
+ "pprMetricsEnabled": {
889
+ "type": "boolean",
890
+ "default": true
891
+ },
892
+ "packedStatsEnabled": {
893
+ "type": "boolean",
894
+ "default": true
895
+ },
896
+ "scipIngestMetrics": {
897
+ "type": "boolean",
898
+ "default": true
899
+ },
900
+ "beamExplainCapacity": {
901
+ "type": "integer",
902
+ "minimum": 8,
903
+ "maximum": 2048,
904
+ "default": 128
905
+ },
906
+ "beamExplainEntriesPerSlice": {
907
+ "type": "integer",
908
+ "minimum": 16,
909
+ "maximum": 8192,
910
+ "default": 512
911
+ },
912
+ "sseHeartbeatMs": {
913
+ "type": "integer",
914
+ "minimum": 1000,
915
+ "maximum": 60000,
916
+ "default": 15000
917
+ },
918
+ "sseMaxStreamMs": {
919
+ "type": "integer",
920
+ "minimum": 60000,
921
+ "maximum": 86400000,
922
+ "default": 3600000,
923
+ "description": "Maximum lifetime for a single observability SSE stream before the server closes it."
924
+ }
925
+ },
926
+ "default": {
927
+ "enabled": true,
928
+ "sampleIntervalMs": 2000,
929
+ "retentionShortMinutes": 15,
930
+ "retentionLongHours": 24,
931
+ "pprMetricsEnabled": true,
932
+ "packedStatsEnabled": true,
933
+ "scipIngestMetrics": true,
934
+ "beamExplainCapacity": 128,
935
+ "beamExplainEntriesPerSlice": 512,
936
+ "sseHeartbeatMs": 15000,
937
+ "sseMaxStreamMs": 3600000
822
938
  }
823
939
  },
824
940
  "tracing": {
@@ -1069,11 +1185,52 @@
1069
1185
  "description": "Static bearer token. When null a random token is generated at startup.",
1070
1186
  "minLength": 1,
1071
1187
  "default": null
1188
+ },
1189
+ "rateLimit": {
1190
+ "type": "object",
1191
+ "description": "Per-client token bucket for protected HTTP routes before bearer-token comparison",
1192
+ "properties": {
1193
+ "bucketSize": {
1194
+ "type": "integer",
1195
+ "minimum": 1,
1196
+ "maximum": 10000,
1197
+ "default": 30
1198
+ },
1199
+ "refillPerSec": {
1200
+ "type": "number",
1201
+ "exclusiveMinimum": 0,
1202
+ "maximum": 1000,
1203
+ "default": 0.5
1204
+ }
1205
+ },
1206
+ "default": {
1207
+ "bucketSize": 30,
1208
+ "refillPerSec": 0.5
1209
+ }
1072
1210
  }
1073
1211
  },
1074
1212
  "default": {
1075
1213
  "enabled": false,
1076
- "token": null
1214
+ "token": null,
1215
+ "rateLimit": {
1216
+ "bucketSize": 30,
1217
+ "refillPerSec": 0.5
1218
+ }
1219
+ }
1220
+ },
1221
+ "http": {
1222
+ "type": "object",
1223
+ "description": "HTTP transport bind configuration.",
1224
+ "additionalProperties": false,
1225
+ "properties": {
1226
+ "allowRemote": {
1227
+ "type": "boolean",
1228
+ "description": "Allow binding the HTTP transport to a non-loopback host such as 0.0.0.0 or ::.",
1229
+ "default": false
1230
+ }
1231
+ },
1232
+ "default": {
1233
+ "allowRemote": false
1077
1234
  }
1078
1235
  },
1079
1236
  "codeMode": {
@@ -1164,6 +1321,13 @@
1164
1321
  "default": 0.95
1165
1322
  },
1166
1323
  "autoIngestOnRefresh": { "type": "boolean", "default": true },
1324
+ "ingestConcurrency": {
1325
+ "type": "integer",
1326
+ "description": "Number of SCIP indexes to ingest concurrently. Decode/parse overlaps; writes still serialise via writeLimiter. Default 1 (sequential).",
1327
+ "minimum": 1,
1328
+ "maximum": 8,
1329
+ "default": 1
1330
+ },
1167
1331
  "generator": {
1168
1332
  "type": "object",
1169
1333
  "description": "Auto-generate index.scip via the scip-io CLI before each refresh. Has no effect unless scip.enabled is also true. When enabled and the binary is missing, sdl-mcp downloads it from GitHub releases into ~/.sdl-mcp/bin/ with mandatory SHA-256 verification against the release's SHA256SUMS.txt; installs are refused if the checksum file is absent.",
@@ -1181,6 +1345,11 @@
1181
1345
  "minimum": 1000,
1182
1346
  "maximum": 1800000,
1183
1347
  "default": 600000
1348
+ },
1349
+ "cleanupAfterIngest": {
1350
+ "type": "boolean",
1351
+ "description": "Delete <repoRoot>/index.scip after the post-refresh ingest consumes it. The file is regenerated every refresh, so keeping it just clutters the working tree. Only the default output location is cleaned up — passing --output via args opts you out of cleanup automatically.",
1352
+ "default": true
1184
1353
  }
1185
1354
  },
1186
1355
  "default": {
@@ -1188,7 +1357,8 @@
1188
1357
  "binary": "scip-io",
1189
1358
  "args": [],
1190
1359
  "autoInstall": true,
1191
- "timeoutMs": 600000
1360
+ "timeoutMs": 600000,
1361
+ "cleanupAfterIngest": true
1192
1362
  }
1193
1363
  }
1194
1364
  }
@@ -1231,6 +1401,55 @@
1231
1401
  }
1232
1402
  },
1233
1403
  "additionalProperties": false
1404
+ },
1405
+ "wire": {
1406
+ "type": "object",
1407
+ "description": "Wire-format configuration (packed, auto-gate)",
1408
+ "properties": {
1409
+ "packed": {
1410
+ "type": "object",
1411
+ "properties": {
1412
+ "enabled": {
1413
+ "type": "boolean",
1414
+ "description": "Master switch for packed wire format. Env var SDL_PACKED_ENABLED overrides.",
1415
+ "default": true
1416
+ },
1417
+ "threshold": {
1418
+ "type": "number",
1419
+ "description": "Minimum byte-savings ratio before packed payload is emitted (0.0-1.0). Env var SDL_PACKED_THRESHOLD overrides.",
1420
+ "default": 0.1,
1421
+ "minimum": 0,
1422
+ "maximum": 1
1423
+ },
1424
+ "tokenThreshold": {
1425
+ "type": "number",
1426
+ "description": "Minimum estimated-token-savings ratio before packed payload is emitted (0.0-1.0). Either threshold (bytes OR tokens) is sufficient. Env var SDL_PACKED_TOKEN_THRESHOLD overrides.",
1427
+ "default": 0.2,
1428
+ "minimum": 0,
1429
+ "maximum": 1
1430
+ },
1431
+ "defaultFormat": {
1432
+ "type": "string",
1433
+ "enum": ["packed", "auto", "compact"],
1434
+ "description": "Default wire format when client omits the field. Env var SDL_PACKED_DEFAULT_FORMAT overrides.",
1435
+ "default": "auto"
1436
+ },
1437
+ "encoders": {
1438
+ "type": "object",
1439
+ "description": "Per-encoder enable map keyed by encoderId (sl1, ss1, ctx1)",
1440
+ "additionalProperties": {
1441
+ "type": "object",
1442
+ "properties": {
1443
+ "enabled": { "type": "boolean", "default": true }
1444
+ },
1445
+ "additionalProperties": false
1446
+ }
1447
+ }
1448
+ },
1449
+ "additionalProperties": false
1450
+ }
1451
+ },
1452
+ "additionalProperties": false
1234
1453
  }
1235
1454
  }
1236
1455
  }