sdl-mcp 0.10.10 → 0.11.1

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 (592) hide show
  1. package/README.md +37 -31
  2. package/config/benchmark.ci.config.json +2 -2
  3. package/config/sdlmcp.config.example.json +31 -3
  4. package/config/sdlmcp.config.json +2 -0
  5. package/config/sdlmcp.config.schema.json +188 -11
  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/cli/commands/doctor.js +3 -1
  16. package/dist/cli/commands/doctor.js.map +1 -1
  17. package/dist/cli/commands/index.d.ts +47 -0
  18. package/dist/cli/commands/index.d.ts.map +1 -1
  19. package/dist/cli/commands/index.js +130 -83
  20. package/dist/cli/commands/index.js.map +1 -1
  21. package/dist/cli/commands/init.d.ts.map +1 -1
  22. package/dist/cli/commands/init.js +281 -1
  23. package/dist/cli/commands/init.js.map +1 -1
  24. package/dist/cli/commands/serve.d.ts.map +1 -1
  25. package/dist/cli/commands/serve.js +75 -38
  26. package/dist/cli/commands/serve.js.map +1 -1
  27. package/dist/cli/transport/http.d.ts +22 -0
  28. package/dist/cli/transport/http.d.ts.map +1 -1
  29. package/dist/cli/transport/http.js +291 -18
  30. package/dist/cli/transport/http.js.map +1 -1
  31. package/dist/code/enforce.d.ts +38 -0
  32. package/dist/code/enforce.d.ts.map +1 -0
  33. package/dist/code/enforce.js +141 -0
  34. package/dist/code/enforce.js.map +1 -0
  35. package/dist/code/index.d.ts +4 -2
  36. package/dist/code/index.d.ts.map +1 -1
  37. package/dist/code/index.js +2 -1
  38. package/dist/code/index.js.map +1 -1
  39. package/dist/code/skeleton.d.ts.map +1 -1
  40. package/dist/code/skeleton.js +41 -9
  41. package/dist/code/skeleton.js.map +1 -1
  42. package/dist/code/window-loader.d.ts +19 -0
  43. package/dist/code/window-loader.d.ts.map +1 -0
  44. package/dist/code/window-loader.js +80 -0
  45. package/dist/code/window-loader.js.map +1 -0
  46. package/dist/code-mode/action-catalog.d.ts +1 -1
  47. package/dist/code-mode/action-catalog.d.ts.map +1 -1
  48. package/dist/code-mode/action-catalog.js +196 -20
  49. package/dist/code-mode/action-catalog.js.map +1 -1
  50. package/dist/code-mode/etag-cache.d.ts.map +1 -1
  51. package/dist/code-mode/etag-cache.js +46 -7
  52. package/dist/code-mode/etag-cache.js.map +1 -1
  53. package/dist/code-mode/index.d.ts.map +1 -1
  54. package/dist/code-mode/index.js +48 -25
  55. package/dist/code-mode/index.js.map +1 -1
  56. package/dist/code-mode/ref-resolver.d.ts.map +1 -1
  57. package/dist/code-mode/ref-resolver.js +11 -2
  58. package/dist/code-mode/ref-resolver.js.map +1 -1
  59. package/dist/code-mode/workflow-executor.d.ts.map +1 -1
  60. package/dist/code-mode/workflow-executor.js +22 -2
  61. package/dist/code-mode/workflow-executor.js.map +1 -1
  62. package/dist/code-mode/workflow-parser.d.ts +9 -0
  63. package/dist/code-mode/workflow-parser.d.ts.map +1 -1
  64. package/dist/code-mode/workflow-parser.js +36 -5
  65. package/dist/code-mode/workflow-parser.js.map +1 -1
  66. package/dist/config/constants.d.ts +82 -3
  67. package/dist/config/constants.d.ts.map +1 -1
  68. package/dist/config/constants.js +82 -3
  69. package/dist/config/constants.js.map +1 -1
  70. package/dist/config/loadConfig.d.ts.map +1 -1
  71. package/dist/config/loadConfig.js +13 -2
  72. package/dist/config/loadConfig.js.map +1 -1
  73. package/dist/config/types.d.ts +79 -0
  74. package/dist/config/types.d.ts.map +1 -1
  75. package/dist/config/types.js +195 -7
  76. package/dist/config/types.js.map +1 -1
  77. package/dist/db/extension-caps.d.ts +1 -0
  78. package/dist/db/extension-caps.d.ts.map +1 -1
  79. package/dist/db/extension-caps.js +2 -0
  80. package/dist/db/extension-caps.js.map +1 -1
  81. package/dist/db/initGraphDb.d.ts.map +1 -1
  82. package/dist/db/initGraphDb.js +3 -1
  83. package/dist/db/initGraphDb.js.map +1 -1
  84. package/dist/db/ladybug-algorithms.d.ts +9 -3
  85. package/dist/db/ladybug-algorithms.d.ts.map +1 -1
  86. package/dist/db/ladybug-algorithms.js +27 -11
  87. package/dist/db/ladybug-algorithms.js.map +1 -1
  88. package/dist/db/ladybug-clusters.d.ts +2 -3
  89. package/dist/db/ladybug-clusters.d.ts.map +1 -1
  90. package/dist/db/ladybug-clusters.js +29 -12
  91. package/dist/db/ladybug-clusters.js.map +1 -1
  92. package/dist/db/ladybug-core.d.ts +28 -1
  93. package/dist/db/ladybug-core.d.ts.map +1 -1
  94. package/dist/db/ladybug-core.js +179 -10
  95. package/dist/db/ladybug-core.js.map +1 -1
  96. package/dist/db/ladybug-edges.d.ts +9 -3
  97. package/dist/db/ladybug-edges.d.ts.map +1 -1
  98. package/dist/db/ladybug-edges.js +245 -28
  99. package/dist/db/ladybug-edges.js.map +1 -1
  100. package/dist/db/ladybug-embeddings.d.ts.map +1 -1
  101. package/dist/db/ladybug-embeddings.js +26 -2
  102. package/dist/db/ladybug-embeddings.js.map +1 -1
  103. package/dist/db/ladybug-file-summaries.d.ts +23 -0
  104. package/dist/db/ladybug-file-summaries.d.ts.map +1 -1
  105. package/dist/db/ladybug-file-summaries.js +154 -18
  106. package/dist/db/ladybug-file-summaries.js.map +1 -1
  107. package/dist/db/ladybug-metrics.d.ts +5 -7
  108. package/dist/db/ladybug-metrics.d.ts.map +1 -1
  109. package/dist/db/ladybug-metrics.js +43 -45
  110. package/dist/db/ladybug-metrics.js.map +1 -1
  111. package/dist/db/ladybug-processes.d.ts +2 -3
  112. package/dist/db/ladybug-processes.d.ts.map +1 -1
  113. package/dist/db/ladybug-processes.js +29 -14
  114. package/dist/db/ladybug-processes.js.map +1 -1
  115. package/dist/db/ladybug-repos.d.ts +22 -0
  116. package/dist/db/ladybug-repos.d.ts.map +1 -1
  117. package/dist/db/ladybug-repos.js +86 -7
  118. package/dist/db/ladybug-repos.js.map +1 -1
  119. package/dist/db/ladybug-schema.d.ts +7 -0
  120. package/dist/db/ladybug-schema.d.ts.map +1 -1
  121. package/dist/db/ladybug-schema.js +79 -39
  122. package/dist/db/ladybug-schema.js.map +1 -1
  123. package/dist/db/ladybug-scip.d.ts +21 -8
  124. package/dist/db/ladybug-scip.d.ts.map +1 -1
  125. package/dist/db/ladybug-scip.js +132 -36
  126. package/dist/db/ladybug-scip.js.map +1 -1
  127. package/dist/db/ladybug-symbol-embeddings.d.ts +32 -4
  128. package/dist/db/ladybug-symbol-embeddings.d.ts.map +1 -1
  129. package/dist/db/ladybug-symbol-embeddings.js +50 -22
  130. package/dist/db/ladybug-symbol-embeddings.js.map +1 -1
  131. package/dist/db/ladybug-symbols.d.ts +40 -1
  132. package/dist/db/ladybug-symbols.d.ts.map +1 -1
  133. package/dist/db/ladybug-symbols.js +411 -43
  134. package/dist/db/ladybug-symbols.js.map +1 -1
  135. package/dist/db/ladybug.d.ts +22 -3
  136. package/dist/db/ladybug.d.ts.map +1 -1
  137. package/dist/db/ladybug.js +169 -49
  138. package/dist/db/ladybug.js.map +1 -1
  139. package/dist/db/migration-runner.d.ts +8 -1
  140. package/dist/db/migration-runner.d.ts.map +1 -1
  141. package/dist/db/migration-runner.js +7 -1
  142. package/dist/db/migration-runner.js.map +1 -1
  143. package/dist/db/migrations/index.d.ts.map +1 -1
  144. package/dist/db/migrations/index.js +6 -0
  145. package/dist/db/migrations/index.js.map +1 -1
  146. package/dist/db/migrations/m005-add-memory-system.d.ts.map +1 -1
  147. package/dist/db/migrations/m005-add-memory-system.js +13 -11
  148. package/dist/db/migrations/m005-add-memory-system.js.map +1 -1
  149. package/dist/db/migrations/m006-add-usage-snapshot.d.ts.map +1 -1
  150. package/dist/db/migrations/m006-add-usage-snapshot.js +4 -8
  151. package/dist/db/migrations/m006-add-usage-snapshot.js.map +1 -1
  152. package/dist/db/migrations/m007-copy-embeddings-to-symbol.d.ts +7 -8
  153. package/dist/db/migrations/m007-copy-embeddings-to-symbol.d.ts.map +1 -1
  154. package/dist/db/migrations/m007-copy-embeddings-to-symbol.js +68 -71
  155. package/dist/db/migrations/m007-copy-embeddings-to-symbol.js.map +1 -1
  156. package/dist/db/migrations/m012-add-symbol-repo-id-for-algo-projections.d.ts.map +1 -1
  157. package/dist/db/migrations/m012-add-symbol-repo-id-for-algo-projections.js +1 -1
  158. package/dist/db/migrations/m012-add-symbol-repo-id-for-algo-projections.js.map +1 -1
  159. package/dist/db/migrations/m013-semantic-vector-array-storage.d.ts +3 -2
  160. package/dist/db/migrations/m013-semantic-vector-array-storage.d.ts.map +1 -1
  161. package/dist/db/migrations/m013-semantic-vector-array-storage.js +8 -6
  162. package/dist/db/migrations/m013-semantic-vector-array-storage.js.map +1 -1
  163. package/dist/db/migrations/m014-add-packed-stats.d.ts.map +1 -1
  164. package/dist/db/migrations/m014-add-packed-stats.js +9 -7
  165. package/dist/db/migrations/m014-add-packed-stats.js.map +1 -1
  166. package/dist/db/migrations/m015-backfill-packed-stats.d.ts +22 -0
  167. package/dist/db/migrations/m015-backfill-packed-stats.d.ts.map +1 -0
  168. package/dist/db/migrations/m015-backfill-packed-stats.js +66 -0
  169. package/dist/db/migrations/m015-backfill-packed-stats.js.map +1 -0
  170. package/dist/db/migrations/m016-add-symbol-placeholder-status.d.ts +5 -0
  171. package/dist/db/migrations/m016-add-symbol-placeholder-status.d.ts.map +1 -0
  172. package/dist/db/migrations/m016-add-symbol-placeholder-status.js +66 -0
  173. package/dist/db/migrations/m016-add-symbol-placeholder-status.js.map +1 -0
  174. package/dist/db/migrations/m017-repair-dependency-placeholder-quality.d.ts +5 -0
  175. package/dist/db/migrations/m017-repair-dependency-placeholder-quality.d.ts.map +1 -0
  176. package/dist/db/migrations/m017-repair-dependency-placeholder-quality.js +12 -0
  177. package/dist/db/migrations/m017-repair-dependency-placeholder-quality.js.map +1 -0
  178. package/dist/db/symbol-placeholders.d.ts +16 -0
  179. package/dist/db/symbol-placeholders.d.ts.map +1 -0
  180. package/dist/db/symbol-placeholders.js +149 -0
  181. package/dist/db/symbol-placeholders.js.map +1 -0
  182. package/dist/db/write-session.d.ts +54 -0
  183. package/dist/db/write-session.d.ts.map +1 -0
  184. package/dist/db/write-session.js +197 -0
  185. package/dist/db/write-session.js.map +1 -0
  186. package/dist/domain/types.d.ts +1 -0
  187. package/dist/domain/types.d.ts.map +1 -1
  188. package/dist/gateway/compact-schema.d.ts.map +1 -1
  189. package/dist/gateway/compact-schema.js +3 -1
  190. package/dist/gateway/compact-schema.js.map +1 -1
  191. package/dist/gateway/schemas.d.ts +3 -1
  192. package/dist/gateway/schemas.d.ts.map +1 -1
  193. package/dist/gateway/schemas.js +26 -10
  194. package/dist/gateway/schemas.js.map +1 -1
  195. package/dist/graph/cache.d.ts.map +1 -1
  196. package/dist/graph/cache.js +17 -0
  197. package/dist/graph/cache.js.map +1 -1
  198. package/dist/graph/metrics.d.ts +8 -0
  199. package/dist/graph/metrics.d.ts.map +1 -1
  200. package/dist/graph/metrics.js +5 -2
  201. package/dist/graph/metrics.js.map +1 -1
  202. package/dist/graph/slice/beam-search-engine.d.ts +27 -51
  203. package/dist/graph/slice/beam-search-engine.d.ts.map +1 -1
  204. package/dist/graph/slice/beam-search-engine.js +110 -13
  205. package/dist/graph/slice/beam-search-engine.js.map +1 -1
  206. package/dist/graph/slice/types.d.ts +17 -0
  207. package/dist/graph/slice/types.d.ts.map +1 -1
  208. package/dist/graph/slice.d.ts.map +1 -1
  209. package/dist/graph/slice.js +77 -3
  210. package/dist/graph/slice.js.map +1 -1
  211. package/dist/graph/sliceCache.d.ts.map +1 -1
  212. package/dist/graph/sliceCache.js +19 -0
  213. package/dist/graph/sliceCache.js.map +1 -1
  214. package/dist/indexer/derived-refresh-queue.d.ts +18 -0
  215. package/dist/indexer/derived-refresh-queue.d.ts.map +1 -1
  216. package/dist/indexer/derived-refresh-queue.js +105 -1
  217. package/dist/indexer/derived-refresh-queue.js.map +1 -1
  218. package/dist/indexer/edge-builder/cleanup.d.ts.map +1 -1
  219. package/dist/indexer/edge-builder/cleanup.js +5 -7
  220. package/dist/indexer/edge-builder/cleanup.js.map +1 -1
  221. package/dist/indexer/edge-builder/import-resolution.d.ts +18 -5
  222. package/dist/indexer/edge-builder/import-resolution.d.ts.map +1 -1
  223. package/dist/indexer/edge-builder/import-resolution.js +85 -42
  224. package/dist/indexer/edge-builder/import-resolution.js.map +1 -1
  225. package/dist/indexer/edge-builder/pass2.d.ts +5 -0
  226. package/dist/indexer/edge-builder/pass2.d.ts.map +1 -1
  227. package/dist/indexer/edge-builder/pass2.js +74 -39
  228. package/dist/indexer/edge-builder/pass2.js.map +1 -1
  229. package/dist/indexer/edge-builder/telemetry.d.ts +7 -0
  230. package/dist/indexer/edge-builder/telemetry.d.ts.map +1 -1
  231. package/dist/indexer/edge-builder/telemetry.js +1 -0
  232. package/dist/indexer/edge-builder/telemetry.js.map +1 -1
  233. package/dist/indexer/edge-builder/unresolved-imports.d.ts +8 -0
  234. package/dist/indexer/edge-builder/unresolved-imports.d.ts.map +1 -1
  235. package/dist/indexer/edge-builder/unresolved-imports.js +142 -57
  236. package/dist/indexer/edge-builder/unresolved-imports.js.map +1 -1
  237. package/dist/indexer/embeddings-local.d.ts +42 -1
  238. package/dist/indexer/embeddings-local.d.ts.map +1 -1
  239. package/dist/indexer/embeddings-local.js +117 -5
  240. package/dist/indexer/embeddings-local.js.map +1 -1
  241. package/dist/indexer/embeddings.d.ts +13 -2
  242. package/dist/indexer/embeddings.d.ts.map +1 -1
  243. package/dist/indexer/embeddings.js +237 -43
  244. package/dist/indexer/embeddings.js.map +1 -1
  245. package/dist/indexer/file-summary-embeddings.d.ts +24 -0
  246. package/dist/indexer/file-summary-embeddings.d.ts.map +1 -0
  247. package/dist/indexer/file-summary-embeddings.js +171 -0
  248. package/dist/indexer/file-summary-embeddings.js.map +1 -0
  249. package/dist/indexer/fileWalker.d.ts.map +1 -1
  250. package/dist/indexer/fileWalker.js +20 -7
  251. package/dist/indexer/fileWalker.js.map +1 -1
  252. package/dist/indexer/finalize-derived-state.d.ts.map +1 -1
  253. package/dist/indexer/finalize-derived-state.js +2 -3
  254. package/dist/indexer/finalize-derived-state.js.map +1 -1
  255. package/dist/indexer/fingerprints.d.ts.map +1 -1
  256. package/dist/indexer/fingerprints.js +8 -1
  257. package/dist/indexer/fingerprints.js.map +1 -1
  258. package/dist/indexer/indexer-init.d.ts +37 -2
  259. package/dist/indexer/indexer-init.d.ts.map +1 -1
  260. package/dist/indexer/indexer-init.js +1 -1
  261. package/dist/indexer/indexer-init.js.map +1 -1
  262. package/dist/indexer/indexer-pass1.d.ts +11 -1
  263. package/dist/indexer/indexer-pass1.d.ts.map +1 -1
  264. package/dist/indexer/indexer-pass1.js +120 -16
  265. package/dist/indexer/indexer-pass1.js.map +1 -1
  266. package/dist/indexer/indexer-pass2.d.ts +47 -0
  267. package/dist/indexer/indexer-pass2.d.ts.map +1 -1
  268. package/dist/indexer/indexer-pass2.js +217 -17
  269. package/dist/indexer/indexer-pass2.js.map +1 -1
  270. package/dist/indexer/indexer.d.ts +2 -0
  271. package/dist/indexer/indexer.d.ts.map +1 -1
  272. package/dist/indexer/indexer.js +292 -121
  273. package/dist/indexer/indexer.js.map +1 -1
  274. package/dist/indexer/metrics-updater.d.ts +13 -0
  275. package/dist/indexer/metrics-updater.d.ts.map +1 -1
  276. package/dist/indexer/metrics-updater.js +211 -7
  277. package/dist/indexer/metrics-updater.js.map +1 -1
  278. package/dist/indexer/model-downloader.d.ts +4 -2
  279. package/dist/indexer/model-downloader.d.ts.map +1 -1
  280. package/dist/indexer/model-downloader.js +35 -17
  281. package/dist/indexer/model-downloader.js.map +1 -1
  282. package/dist/indexer/model-registry.d.ts +58 -11
  283. package/dist/indexer/model-registry.d.ts.map +1 -1
  284. package/dist/indexer/model-registry.js +119 -23
  285. package/dist/indexer/model-registry.js.map +1 -1
  286. package/dist/indexer/parser/batch-persist.d.ts +25 -0
  287. package/dist/indexer/parser/batch-persist.d.ts.map +1 -1
  288. package/dist/indexer/parser/batch-persist.js +81 -23
  289. package/dist/indexer/parser/batch-persist.js.map +1 -1
  290. package/dist/indexer/parser/build-rows.d.ts +3 -1
  291. package/dist/indexer/parser/build-rows.d.ts.map +1 -1
  292. package/dist/indexer/parser/build-rows.js +31 -6
  293. package/dist/indexer/parser/build-rows.js.map +1 -1
  294. package/dist/indexer/parser/early-exit.d.ts.map +1 -1
  295. package/dist/indexer/parser/early-exit.js +22 -12
  296. package/dist/indexer/parser/early-exit.js.map +1 -1
  297. package/dist/indexer/parser/helpers.js +1 -1
  298. package/dist/indexer/parser/helpers.js.map +1 -1
  299. package/dist/indexer/parser/parse-and-extract.d.ts.map +1 -1
  300. package/dist/indexer/parser/parse-and-extract.js +5 -1
  301. package/dist/indexer/parser/parse-and-extract.js.map +1 -1
  302. package/dist/indexer/parser/process-file.d.ts.map +1 -1
  303. package/dist/indexer/parser/process-file.js +18 -0
  304. package/dist/indexer/parser/process-file.js.map +1 -1
  305. package/dist/indexer/parser/rust-process-file.d.ts +2 -0
  306. package/dist/indexer/parser/rust-process-file.d.ts.map +1 -1
  307. package/dist/indexer/parser/rust-process-file.js +23 -0
  308. package/dist/indexer/parser/rust-process-file.js.map +1 -1
  309. package/dist/indexer/parser/types.d.ts +12 -0
  310. package/dist/indexer/parser/types.d.ts.map +1 -1
  311. package/dist/indexer/parser.js +2 -2
  312. package/dist/indexer/parser.js.map +1 -1
  313. package/dist/indexer/pass2/confidence.d.ts +4 -1
  314. package/dist/indexer/pass2/confidence.d.ts.map +1 -1
  315. package/dist/indexer/pass2/confidence.js +12 -3
  316. package/dist/indexer/pass2/confidence.js.map +1 -1
  317. package/dist/indexer/pass2/resolvers/c-pass2-resolver.d.ts.map +1 -1
  318. package/dist/indexer/pass2/resolvers/c-pass2-resolver.js +65 -51
  319. package/dist/indexer/pass2/resolvers/c-pass2-resolver.js.map +1 -1
  320. package/dist/indexer/pass2/resolvers/cpp-pass2-resolver.d.ts +1 -0
  321. package/dist/indexer/pass2/resolvers/cpp-pass2-resolver.d.ts.map +1 -1
  322. package/dist/indexer/pass2/resolvers/cpp-pass2-resolver.js +153 -147
  323. package/dist/indexer/pass2/resolvers/cpp-pass2-resolver.js.map +1 -1
  324. package/dist/indexer/pass2/resolvers/csharp-pass2-resolver.d.ts.map +1 -1
  325. package/dist/indexer/pass2/resolvers/csharp-pass2-resolver.js +72 -59
  326. package/dist/indexer/pass2/resolvers/csharp-pass2-resolver.js.map +1 -1
  327. package/dist/indexer/pass2/resolvers/go-pass2-resolver.d.ts.map +1 -1
  328. package/dist/indexer/pass2/resolvers/go-pass2-resolver.js +69 -57
  329. package/dist/indexer/pass2/resolvers/go-pass2-resolver.js.map +1 -1
  330. package/dist/indexer/pass2/resolvers/java-pass2-resolver.d.ts.map +1 -1
  331. package/dist/indexer/pass2/resolvers/java-pass2-resolver.js +72 -59
  332. package/dist/indexer/pass2/resolvers/java-pass2-resolver.js.map +1 -1
  333. package/dist/indexer/pass2/resolvers/kotlin-pass2-resolver.d.ts.map +1 -1
  334. package/dist/indexer/pass2/resolvers/kotlin-pass2-resolver.js +33 -20
  335. package/dist/indexer/pass2/resolvers/kotlin-pass2-resolver.js.map +1 -1
  336. package/dist/indexer/pass2/resolvers/php-pass2-resolver.d.ts.map +1 -1
  337. package/dist/indexer/pass2/resolvers/php-pass2-resolver.js +91 -84
  338. package/dist/indexer/pass2/resolvers/php-pass2-resolver.js.map +1 -1
  339. package/dist/indexer/pass2/resolvers/python-pass2-resolver.d.ts.map +1 -1
  340. package/dist/indexer/pass2/resolvers/python-pass2-resolver.js +95 -37
  341. package/dist/indexer/pass2/resolvers/python-pass2-resolver.js.map +1 -1
  342. package/dist/indexer/pass2/resolvers/rust-pass2-resolver.d.ts.map +1 -1
  343. package/dist/indexer/pass2/resolvers/rust-pass2-resolver.js +68 -57
  344. package/dist/indexer/pass2/resolvers/rust-pass2-resolver.js.map +1 -1
  345. package/dist/indexer/pass2/resolvers/shell-pass2-resolver.d.ts.map +1 -1
  346. package/dist/indexer/pass2/resolvers/shell-pass2-resolver.js +66 -60
  347. package/dist/indexer/pass2/resolvers/shell-pass2-resolver.js.map +1 -1
  348. package/dist/indexer/pass2/resolvers/ts-pass2-resolver.d.ts +4 -0
  349. package/dist/indexer/pass2/resolvers/ts-pass2-resolver.d.ts.map +1 -1
  350. package/dist/indexer/pass2/resolvers/ts-pass2-resolver.js +6 -1
  351. package/dist/indexer/pass2/resolvers/ts-pass2-resolver.js.map +1 -1
  352. package/dist/indexer/pass2/types.d.ts +132 -0
  353. package/dist/indexer/pass2/types.d.ts.map +1 -1
  354. package/dist/indexer/pass2/types.js +19 -1
  355. package/dist/indexer/pass2/types.js.map +1 -1
  356. package/dist/indexer/rustIndexer.d.ts +2 -2
  357. package/dist/indexer/rustIndexer.d.ts.map +1 -1
  358. package/dist/indexer/rustIndexer.js +4 -4
  359. package/dist/indexer/rustIndexer.js.map +1 -1
  360. package/dist/indexer/watcher.d.ts.map +1 -1
  361. package/dist/indexer/watcher.js +102 -18
  362. package/dist/indexer/watcher.js.map +1 -1
  363. package/dist/indexer/workerPool.d.ts +26 -2
  364. package/dist/indexer/workerPool.d.ts.map +1 -1
  365. package/dist/indexer/workerPool.js +107 -52
  366. package/dist/indexer/workerPool.js.map +1 -1
  367. package/dist/live-index/draft-parser.d.ts.map +1 -1
  368. package/dist/live-index/draft-parser.js +1 -0
  369. package/dist/live-index/draft-parser.js.map +1 -1
  370. package/dist/live-index/overlay-reader.d.ts +1 -0
  371. package/dist/live-index/overlay-reader.d.ts.map +1 -1
  372. package/dist/live-index/overlay-reader.js +5 -3
  373. package/dist/live-index/overlay-reader.js.map +1 -1
  374. package/dist/main.js +6 -29
  375. package/dist/main.js.map +1 -1
  376. package/dist/mcp/audit-buffer.d.ts +47 -0
  377. package/dist/mcp/audit-buffer.d.ts.map +1 -0
  378. package/dist/mcp/audit-buffer.js +82 -0
  379. package/dist/mcp/audit-buffer.js.map +1 -0
  380. package/dist/mcp/telemetry.d.ts +20 -0
  381. package/dist/mcp/telemetry.d.ts.map +1 -1
  382. package/dist/mcp/telemetry.js +94 -9
  383. package/dist/mcp/telemetry.js.map +1 -1
  384. package/dist/mcp/tools/agent-feedback.d.ts +1 -0
  385. package/dist/mcp/tools/agent-feedback.d.ts.map +1 -1
  386. package/dist/mcp/tools/agent-feedback.js +55 -0
  387. package/dist/mcp/tools/agent-feedback.js.map +1 -1
  388. package/dist/mcp/tools/buffer.d.ts.map +1 -1
  389. package/dist/mcp/tools/buffer.js +65 -20
  390. package/dist/mcp/tools/buffer.js.map +1 -1
  391. package/dist/mcp/tools/code.d.ts.map +1 -1
  392. package/dist/mcp/tools/code.js +110 -28
  393. package/dist/mcp/tools/code.js.map +1 -1
  394. package/dist/mcp/tools/context-wire-format.d.ts +22 -0
  395. package/dist/mcp/tools/context-wire-format.d.ts.map +1 -0
  396. package/dist/mcp/tools/context-wire-format.js +132 -0
  397. package/dist/mcp/tools/context-wire-format.js.map +1 -0
  398. package/dist/mcp/tools/context.d.ts +3 -0
  399. package/dist/mcp/tools/context.d.ts.map +1 -1
  400. package/dist/mcp/tools/context.js +78 -1
  401. package/dist/mcp/tools/context.js.map +1 -1
  402. package/dist/mcp/tools/delta.d.ts.map +1 -1
  403. package/dist/mcp/tools/delta.js +15 -1
  404. package/dist/mcp/tools/delta.js.map +1 -1
  405. package/dist/mcp/tools/file-read.d.ts +2 -0
  406. package/dist/mcp/tools/file-read.d.ts.map +1 -1
  407. package/dist/mcp/tools/file-read.js +38 -18
  408. package/dist/mcp/tools/file-read.js.map +1 -1
  409. package/dist/mcp/tools/file-write-internals.d.ts.map +1 -1
  410. package/dist/mcp/tools/file-write-internals.js +9 -2
  411. package/dist/mcp/tools/file-write-internals.js.map +1 -1
  412. package/dist/mcp/tools/policy.d.ts.map +1 -1
  413. package/dist/mcp/tools/policy.js +5 -1
  414. package/dist/mcp/tools/policy.js.map +1 -1
  415. package/dist/mcp/tools/prRisk.d.ts.map +1 -1
  416. package/dist/mcp/tools/prRisk.js +3 -4
  417. package/dist/mcp/tools/prRisk.js.map +1 -1
  418. package/dist/mcp/tools/repo.d.ts.map +1 -1
  419. package/dist/mcp/tools/repo.js +15 -32
  420. package/dist/mcp/tools/repo.js.map +1 -1
  421. package/dist/mcp/tools/runtime.d.ts.map +1 -1
  422. package/dist/mcp/tools/runtime.js +2 -3
  423. package/dist/mcp/tools/runtime.js.map +1 -1
  424. package/dist/mcp/tools/scip.d.ts.map +1 -1
  425. package/dist/mcp/tools/scip.js +2 -0
  426. package/dist/mcp/tools/scip.js.map +1 -1
  427. package/dist/mcp/tools/search-edit/index.d.ts.map +1 -1
  428. package/dist/mcp/tools/search-edit/index.js +55 -2
  429. package/dist/mcp/tools/search-edit/index.js.map +1 -1
  430. package/dist/mcp/tools/search-edit/planner.d.ts +6 -0
  431. package/dist/mcp/tools/search-edit/planner.d.ts.map +1 -1
  432. package/dist/mcp/tools/search-edit/planner.js +107 -21
  433. package/dist/mcp/tools/search-edit/planner.js.map +1 -1
  434. package/dist/mcp/tools/slice-wire-format.d.ts.map +1 -1
  435. package/dist/mcp/tools/slice-wire-format.js +16 -1
  436. package/dist/mcp/tools/slice-wire-format.js.map +1 -1
  437. package/dist/mcp/tools/slice.d.ts.map +1 -1
  438. package/dist/mcp/tools/slice.js +55 -15
  439. package/dist/mcp/tools/slice.js.map +1 -1
  440. package/dist/mcp/tools/symbol-wire-format.d.ts +35 -0
  441. package/dist/mcp/tools/symbol-wire-format.d.ts.map +1 -0
  442. package/dist/mcp/tools/symbol-wire-format.js +70 -0
  443. package/dist/mcp/tools/symbol-wire-format.js.map +1 -0
  444. package/dist/mcp/tools/symbol.d.ts +2 -1
  445. package/dist/mcp/tools/symbol.d.ts.map +1 -1
  446. package/dist/mcp/tools/symbol.js +71 -8
  447. package/dist/mcp/tools/symbol.js.map +1 -1
  448. package/dist/mcp/tools.d.ts +171 -19
  449. package/dist/mcp/tools.d.ts.map +1 -1
  450. package/dist/mcp/tools.js +164 -47
  451. package/dist/mcp/tools.js.map +1 -1
  452. package/dist/mcp/wire/packed/encoders/context.d.ts +18 -0
  453. package/dist/mcp/wire/packed/encoders/context.d.ts.map +1 -1
  454. package/dist/mcp/wire/packed/encoders/context.js +46 -1
  455. package/dist/mcp/wire/packed/encoders/context.js.map +1 -1
  456. package/dist/mcp/wire/packed/encoders/registry.d.ts.map +1 -1
  457. package/dist/mcp/wire/packed/encoders/registry.js +0 -6
  458. package/dist/mcp/wire/packed/encoders/registry.js.map +1 -1
  459. package/dist/mcp/wire/packed/gate.d.ts +3 -3
  460. package/dist/mcp/wire/packed/gate.d.ts.map +1 -1
  461. package/dist/mcp/wire/packed/gate.js +3 -3
  462. package/dist/mcp/wire/packed/gate.js.map +1 -1
  463. package/dist/mcp/wire/packed/index.d.ts +0 -1
  464. package/dist/mcp/wire/packed/index.d.ts.map +1 -1
  465. package/dist/mcp/wire/packed/index.js +0 -1
  466. package/dist/mcp/wire/packed/index.js.map +1 -1
  467. package/dist/mcp/wire/packed/types.d.ts +1 -1
  468. package/dist/mcp/wire/packed/types.d.ts.map +1 -1
  469. package/dist/observability/aggregator.d.ts +274 -0
  470. package/dist/observability/aggregator.d.ts.map +1 -0
  471. package/dist/observability/aggregator.js +991 -0
  472. package/dist/observability/aggregator.js.map +1 -0
  473. package/dist/observability/beam-explain-store.d.ts +74 -0
  474. package/dist/observability/beam-explain-store.d.ts.map +1 -0
  475. package/dist/observability/beam-explain-store.js +128 -0
  476. package/dist/observability/beam-explain-store.js.map +1 -0
  477. package/dist/observability/bottleneck-classifier.d.ts +45 -0
  478. package/dist/observability/bottleneck-classifier.d.ts.map +1 -0
  479. package/dist/observability/bottleneck-classifier.js +236 -0
  480. package/dist/observability/bottleneck-classifier.js.map +1 -0
  481. package/dist/observability/event-tap.d.ts +139 -0
  482. package/dist/observability/event-tap.d.ts.map +1 -0
  483. package/dist/observability/event-tap.js +43 -0
  484. package/dist/observability/event-tap.js.map +1 -0
  485. package/dist/observability/index.d.ts +23 -0
  486. package/dist/observability/index.d.ts.map +1 -0
  487. package/dist/observability/index.js +17 -0
  488. package/dist/observability/index.js.map +1 -0
  489. package/dist/observability/probes.d.ts +4 -0
  490. package/dist/observability/probes.d.ts.map +1 -0
  491. package/dist/observability/probes.js +84 -0
  492. package/dist/observability/probes.js.map +1 -0
  493. package/dist/observability/ring-buffer.d.ts +48 -0
  494. package/dist/observability/ring-buffer.d.ts.map +1 -0
  495. package/dist/observability/ring-buffer.js +79 -0
  496. package/dist/observability/ring-buffer.js.map +1 -0
  497. package/dist/observability/service.d.ts +129 -0
  498. package/dist/observability/service.d.ts.map +1 -0
  499. package/dist/observability/service.js +546 -0
  500. package/dist/observability/service.js.map +1 -0
  501. package/dist/observability/types.d.ts +409 -0
  502. package/dist/observability/types.d.ts.map +1 -0
  503. package/dist/observability/types.js +20 -0
  504. package/dist/observability/types.js.map +1 -0
  505. package/dist/policy/code-access.d.ts +77 -0
  506. package/dist/policy/code-access.d.ts.map +1 -0
  507. package/dist/policy/code-access.js +168 -0
  508. package/dist/policy/code-access.js.map +1 -0
  509. package/dist/policy/engine.d.ts.map +1 -1
  510. package/dist/policy/engine.js +11 -12
  511. package/dist/policy/engine.js.map +1 -1
  512. package/dist/policy/index.d.ts +19 -3
  513. package/dist/policy/index.d.ts.map +1 -1
  514. package/dist/policy/index.js +17 -3
  515. package/dist/policy/index.js.map +1 -1
  516. package/dist/policy/runtime.d.ts +31 -0
  517. package/dist/policy/runtime.d.ts.map +1 -0
  518. package/dist/policy/runtime.js +53 -0
  519. package/dist/policy/runtime.js.map +1 -0
  520. package/dist/retrieval/index-lifecycle.d.ts +42 -0
  521. package/dist/retrieval/index-lifecycle.d.ts.map +1 -1
  522. package/dist/retrieval/index-lifecycle.js +71 -7
  523. package/dist/retrieval/index-lifecycle.js.map +1 -1
  524. package/dist/retrieval/orchestrator.d.ts.map +1 -1
  525. package/dist/retrieval/orchestrator.js +21 -0
  526. package/dist/retrieval/orchestrator.js.map +1 -1
  527. package/dist/scip/cleanup.d.ts +34 -0
  528. package/dist/scip/cleanup.d.ts.map +1 -0
  529. package/dist/scip/cleanup.js +64 -0
  530. package/dist/scip/cleanup.js.map +1 -0
  531. package/dist/scip/decoder-factory.d.ts.map +1 -1
  532. package/dist/scip/decoder-factory.js +9 -4
  533. package/dist/scip/decoder-factory.js.map +1 -1
  534. package/dist/scip/decoder-ts.d.ts +5 -0
  535. package/dist/scip/decoder-ts.d.ts.map +1 -1
  536. package/dist/scip/decoder-ts.js +33 -1
  537. package/dist/scip/decoder-ts.js.map +1 -1
  538. package/dist/scip/edge-builder.d.ts +1 -1
  539. package/dist/scip/edge-builder.d.ts.map +1 -1
  540. package/dist/scip/edge-builder.js +1 -1
  541. package/dist/scip/edge-builder.js.map +1 -1
  542. package/dist/scip/ingestion.d.ts +50 -0
  543. package/dist/scip/ingestion.d.ts.map +1 -1
  544. package/dist/scip/ingestion.js +176 -28
  545. package/dist/scip/ingestion.js.map +1 -1
  546. package/dist/scip/scip-io-runner.d.ts.map +1 -1
  547. package/dist/scip/scip-io-runner.js +13 -0
  548. package/dist/scip/scip-io-runner.js.map +1 -1
  549. package/dist/scip/types.d.ts +26 -0
  550. package/dist/scip/types.d.ts.map +1 -1
  551. package/dist/server.d.ts.map +1 -1
  552. package/dist/server.js +52 -8
  553. package/dist/server.js.map +1 -1
  554. package/dist/services/card-builder.d.ts.map +1 -1
  555. package/dist/services/card-builder.js +2 -4
  556. package/dist/services/card-builder.js.map +1 -1
  557. package/dist/services/health.d.ts.map +1 -1
  558. package/dist/services/health.js +3 -0
  559. package/dist/services/health.js.map +1 -1
  560. package/dist/startup/process-handlers.d.ts +12 -0
  561. package/dist/startup/process-handlers.d.ts.map +1 -0
  562. package/dist/startup/process-handlers.js +45 -0
  563. package/dist/startup/process-handlers.js.map +1 -0
  564. package/dist/sync/sync.d.ts.map +1 -1
  565. package/dist/sync/sync.js +14 -6
  566. package/dist/sync/sync.js.map +1 -1
  567. package/dist/ui/observability.d.ts +2 -0
  568. package/dist/ui/observability.d.ts.map +1 -0
  569. package/dist/ui/observability.js +796 -0
  570. package/dist/ui/observability.js.map +1 -0
  571. package/dist/util/concurrency.d.ts +24 -1
  572. package/dist/util/concurrency.d.ts.map +1 -1
  573. package/dist/util/concurrency.js +55 -1
  574. package/dist/util/concurrency.js.map +1 -1
  575. package/dist/util/cpu-presets.d.ts +15 -4
  576. package/dist/util/cpu-presets.d.ts.map +1 -1
  577. package/dist/util/cpu-presets.js +18 -2
  578. package/dist/util/cpu-presets.js.map +1 -1
  579. package/dist/util/shutdown.d.ts +5 -4
  580. package/dist/util/shutdown.d.ts.map +1 -1
  581. package/dist/util/shutdown.js +7 -7
  582. package/dist/util/shutdown.js.map +1 -1
  583. package/package.json +8 -5
  584. package/templates/SDL.md +320 -0
  585. package/dist/code/gate.d.ts +0 -33
  586. package/dist/code/gate.d.ts.map +0 -1
  587. package/dist/code/gate.js +0 -267
  588. package/dist/code/gate.js.map +0 -1
  589. package/dist/mcp/wire/packed/generic.d.ts +0 -29
  590. package/dist/mcp/wire/packed/generic.d.ts.map +0 -1
  591. package/dist/mcp/wire/packed/generic.js +0 -150
  592. package/dist/mcp/wire/packed/generic.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,
@@ -40,6 +40,7 @@
40
40
  "sh"
41
41
  ],
42
42
  "maxFileBytes": 2000000,
43
+ "postIndexSessionTimeoutMs": 900000,
43
44
  "includeNodeModulesTypes": true,
44
45
  "packageJsonPath": null,
45
46
  "tsconfigPath": null,
@@ -126,6 +127,12 @@
126
127
  "summaryMaxConcurrency": 5,
127
128
  "summaryBatchSize": 20,
128
129
  "embeddingConcurrency": 1,
130
+ "embeddingBatchSize": 32,
131
+ "fileSummaryEmbeddingBatchSize": 4,
132
+ "fileSummaryEmbeddingMaxChars": 4096,
133
+ "embeddingsSequential": false,
134
+ "modelVariant": "default",
135
+ "executionProviders": ["cpu"],
129
136
  "retrieval": {
130
137
  "mode": "hybrid",
131
138
  "extensionsOptional": true,
@@ -159,7 +166,7 @@
159
166
  "prefetch": {
160
167
  "enabled": true,
161
168
  "maxBudgetPercent": 20,
162
- "warmTopN": 50
169
+ "warmTopN": 0
163
170
  },
164
171
  "tracing": {
165
172
  "enabled": true,
@@ -168,6 +175,19 @@
168
175
  "otlpEndpoint": null,
169
176
  "sampleRate": 1
170
177
  },
178
+ "observability": {
179
+ "enabled": true,
180
+ "sampleIntervalMs": 2000,
181
+ "retentionShortMinutes": 15,
182
+ "retentionLongHours": 24,
183
+ "pprMetricsEnabled": true,
184
+ "packedStatsEnabled": true,
185
+ "scipIngestMetrics": true,
186
+ "beamExplainCapacity": 128,
187
+ "beamExplainEntriesPerSlice": 512,
188
+ "sseHeartbeatMs": 15000,
189
+ "sseMaxStreamMs": 3600000
190
+ },
171
191
  "parallelScorer": {
172
192
  "enabled": true,
173
193
  "poolSize": null,
@@ -199,7 +219,14 @@
199
219
  },
200
220
  "httpAuth": {
201
221
  "enabled": false,
202
- "token": null
222
+ "token": null,
223
+ "rateLimit": {
224
+ "bucketSize": 30,
225
+ "refillPerSec": 0.5
226
+ }
227
+ },
228
+ "http": {
229
+ "allowRemote": false
203
230
  },
204
231
  "codeMode": {
205
232
  "enabled": true,
@@ -232,7 +259,8 @@
232
259
  "binary": "scip-io",
233
260
  "args": [],
234
261
  "autoInstall": true,
235
- "timeoutMs": 600000
262
+ "timeoutMs": 600000,
263
+ "cleanupAfterIngest": true
236
264
  }
237
265
  },
238
266
  "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
@@ -91,6 +91,13 @@
91
91
  "minimum": 1,
92
92
  "default": 2000000
93
93
  },
94
+ "postIndexSessionTimeoutMs": {
95
+ "type": "integer",
96
+ "description": "Hard timeout for post-index finalization writes in milliseconds. Covers embeddings, summaries, deferred index builds, memory sync, and audit flushing after pass-1/pass-2 complete.",
97
+ "minimum": 1000,
98
+ "maximum": 86400000,
99
+ "default": 900000
100
+ },
94
101
  "includeNodeModulesTypes": {
95
102
  "type": "boolean",
96
103
  "description": "Include node_modules/@types declarations in TypeScript call resolution (excluding @types/node)",
@@ -597,11 +604,47 @@
597
604
  },
598
605
  "embeddingConcurrency": {
599
606
  "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.",
607
+ "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
608
  "minimum": 1,
602
- "maximum": 4,
609
+ "maximum": 8,
603
610
  "default": 1
604
611
  },
612
+ "embeddingBatchSize": {
613
+ "type": "integer",
614
+ "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.",
615
+ "minimum": 1,
616
+ "maximum": 128,
617
+ "default": 32
618
+ },
619
+ "fileSummaryEmbeddingBatchSize": {
620
+ "type": "integer",
621
+ "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.",
622
+ "minimum": 1,
623
+ "maximum": 16,
624
+ "default": 4
625
+ },
626
+ "fileSummaryEmbeddingMaxChars": {
627
+ "type": "integer",
628
+ "description": "Maximum characters sent to the embedding provider for each FileSummary. Stored summaries and FTS searchText remain complete; this only bounds vector-generation resources.",
629
+ "minimum": 512,
630
+ "maximum": 32768,
631
+ "default": 4096
632
+ },
633
+ "embeddingsSequential": {
634
+ "type": "boolean",
635
+ "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.",
636
+ "default": false
637
+ },
638
+ "modelVariant": {
639
+ "type": "string",
640
+ "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."
641
+ },
642
+ "executionProviders": {
643
+ "type": "array",
644
+ "items": { "type": "string" },
645
+ "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.",
646
+ "default": ["cpu"]
647
+ },
605
648
  "ann": {
606
649
  "type": "object",
607
650
  "description": "Deprecated — removed in v0.10.1. Silently ignored. Use retrieval.vector instead.",
@@ -811,14 +854,94 @@
811
854
  },
812
855
  "warmTopN": {
813
856
  "type": "integer",
814
- "minimum": 1,
815
- "default": 50
857
+ "minimum": 0,
858
+ "default": 0,
859
+ "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
860
  }
817
861
  },
818
862
  "default": {
819
863
  "enabled": true,
820
864
  "maxBudgetPercent": 20,
821
- "warmTopN": 50
865
+ "warmTopN": 0
866
+ }
867
+ },
868
+ "observability": {
869
+ "type": "object",
870
+ "description": "Observability dashboard configuration (in-process metrics + SSE stream)",
871
+ "additionalProperties": false,
872
+ "properties": {
873
+ "enabled": {
874
+ "type": "boolean",
875
+ "default": true
876
+ },
877
+ "sampleIntervalMs": {
878
+ "type": "integer",
879
+ "minimum": 250,
880
+ "maximum": 60000,
881
+ "default": 2000
882
+ },
883
+ "retentionShortMinutes": {
884
+ "type": "integer",
885
+ "minimum": 1,
886
+ "maximum": 60,
887
+ "default": 15
888
+ },
889
+ "retentionLongHours": {
890
+ "type": "integer",
891
+ "minimum": 1,
892
+ "maximum": 168,
893
+ "default": 24
894
+ },
895
+ "pprMetricsEnabled": {
896
+ "type": "boolean",
897
+ "default": true
898
+ },
899
+ "packedStatsEnabled": {
900
+ "type": "boolean",
901
+ "default": true
902
+ },
903
+ "scipIngestMetrics": {
904
+ "type": "boolean",
905
+ "default": true
906
+ },
907
+ "beamExplainCapacity": {
908
+ "type": "integer",
909
+ "minimum": 8,
910
+ "maximum": 2048,
911
+ "default": 128
912
+ },
913
+ "beamExplainEntriesPerSlice": {
914
+ "type": "integer",
915
+ "minimum": 16,
916
+ "maximum": 8192,
917
+ "default": 512
918
+ },
919
+ "sseHeartbeatMs": {
920
+ "type": "integer",
921
+ "minimum": 1000,
922
+ "maximum": 60000,
923
+ "default": 15000
924
+ },
925
+ "sseMaxStreamMs": {
926
+ "type": "integer",
927
+ "minimum": 60000,
928
+ "maximum": 86400000,
929
+ "default": 3600000,
930
+ "description": "Maximum lifetime for a single observability SSE stream before the server closes it."
931
+ }
932
+ },
933
+ "default": {
934
+ "enabled": true,
935
+ "sampleIntervalMs": 2000,
936
+ "retentionShortMinutes": 15,
937
+ "retentionLongHours": 24,
938
+ "pprMetricsEnabled": true,
939
+ "packedStatsEnabled": true,
940
+ "scipIngestMetrics": true,
941
+ "beamExplainCapacity": 128,
942
+ "beamExplainEntriesPerSlice": 512,
943
+ "sseHeartbeatMs": 15000,
944
+ "sseMaxStreamMs": 3600000
822
945
  }
823
946
  },
824
947
  "tracing": {
@@ -1069,11 +1192,52 @@
1069
1192
  "description": "Static bearer token. When null a random token is generated at startup.",
1070
1193
  "minLength": 1,
1071
1194
  "default": null
1195
+ },
1196
+ "rateLimit": {
1197
+ "type": "object",
1198
+ "description": "Per-client token bucket for protected HTTP routes before bearer-token comparison",
1199
+ "properties": {
1200
+ "bucketSize": {
1201
+ "type": "integer",
1202
+ "minimum": 1,
1203
+ "maximum": 10000,
1204
+ "default": 30
1205
+ },
1206
+ "refillPerSec": {
1207
+ "type": "number",
1208
+ "exclusiveMinimum": 0,
1209
+ "maximum": 1000,
1210
+ "default": 0.5
1211
+ }
1212
+ },
1213
+ "default": {
1214
+ "bucketSize": 30,
1215
+ "refillPerSec": 0.5
1216
+ }
1072
1217
  }
1073
1218
  },
1074
1219
  "default": {
1075
1220
  "enabled": false,
1076
- "token": null
1221
+ "token": null,
1222
+ "rateLimit": {
1223
+ "bucketSize": 30,
1224
+ "refillPerSec": 0.5
1225
+ }
1226
+ }
1227
+ },
1228
+ "http": {
1229
+ "type": "object",
1230
+ "description": "HTTP transport bind configuration.",
1231
+ "additionalProperties": false,
1232
+ "properties": {
1233
+ "allowRemote": {
1234
+ "type": "boolean",
1235
+ "description": "Allow binding the HTTP transport to a non-loopback host such as 0.0.0.0 or ::.",
1236
+ "default": false
1237
+ }
1238
+ },
1239
+ "default": {
1240
+ "allowRemote": false
1077
1241
  }
1078
1242
  },
1079
1243
  "codeMode": {
@@ -1164,6 +1328,13 @@
1164
1328
  "default": 0.95
1165
1329
  },
1166
1330
  "autoIngestOnRefresh": { "type": "boolean", "default": true },
1331
+ "ingestConcurrency": {
1332
+ "type": "integer",
1333
+ "description": "Number of SCIP indexes to ingest concurrently. Decode/parse overlaps; writes still serialise via writeLimiter. Default 1 (sequential).",
1334
+ "minimum": 1,
1335
+ "maximum": 8,
1336
+ "default": 1
1337
+ },
1167
1338
  "generator": {
1168
1339
  "type": "object",
1169
1340
  "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 +1352,11 @@
1181
1352
  "minimum": 1000,
1182
1353
  "maximum": 1800000,
1183
1354
  "default": 600000
1355
+ },
1356
+ "cleanupAfterIngest": {
1357
+ "type": "boolean",
1358
+ "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.",
1359
+ "default": true
1184
1360
  }
1185
1361
  },
1186
1362
  "default": {
@@ -1188,7 +1364,8 @@
1188
1364
  "binary": "scip-io",
1189
1365
  "args": [],
1190
1366
  "autoInstall": true,
1191
- "timeoutMs": 600000
1367
+ "timeoutMs": 600000,
1368
+ "cleanupAfterIngest": true
1192
1369
  }
1193
1370
  }
1194
1371
  }
@@ -1247,14 +1424,14 @@
1247
1424
  "threshold": {
1248
1425
  "type": "number",
1249
1426
  "description": "Minimum byte-savings ratio before packed payload is emitted (0.0-1.0). Env var SDL_PACKED_THRESHOLD overrides.",
1250
- "default": 0.15,
1427
+ "default": 0.1,
1251
1428
  "minimum": 0,
1252
1429
  "maximum": 1
1253
1430
  },
1254
1431
  "tokenThreshold": {
1255
1432
  "type": "number",
1256
1433
  "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.",
1257
- "default": 0.3,
1434
+ "default": 0.2,
1258
1435
  "minimum": 0,
1259
1436
  "maximum": 1
1260
1437
  },
@@ -1262,11 +1439,11 @@
1262
1439
  "type": "string",
1263
1440
  "enum": ["packed", "auto", "compact"],
1264
1441
  "description": "Default wire format when client omits the field. Env var SDL_PACKED_DEFAULT_FORMAT overrides.",
1265
- "default": "compact"
1442
+ "default": "auto"
1266
1443
  },
1267
1444
  "encoders": {
1268
1445
  "type": "object",
1269
- "description": "Per-encoder enable map keyed by encoderId (sl1, ss1, ctx1, gen1)",
1446
+ "description": "Per-encoder enable map keyed by encoderId (sl1, ss1, ctx1)",
1270
1447
  "additionalProperties": {
1271
1448
  "type": "object",
1272
1449
  "properties": {