sdl-mcp 0.6.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 (496) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +132 -0
  3. package/config/benchmark.ci.config.json +86 -0
  4. package/config/benchmark.ci.windows.config.json +86 -0
  5. package/config/benchmark.config.example.json +86 -0
  6. package/config/benchmark.config.json +86 -0
  7. package/config/sdlmcp.config.example.json +139 -0
  8. package/config/sdlmcp.config.json +48 -0
  9. package/config/sdlmcp.config.schema.json +381 -0
  10. package/dist/agent/evidence.d.ts +18 -0
  11. package/dist/agent/evidence.d.ts.map +1 -0
  12. package/dist/agent/evidence.js +107 -0
  13. package/dist/agent/evidence.js.map +1 -0
  14. package/dist/agent/executor.d.ts +28 -0
  15. package/dist/agent/executor.d.ts.map +1 -0
  16. package/dist/agent/executor.js +261 -0
  17. package/dist/agent/executor.js.map +1 -0
  18. package/dist/agent/index.d.ts +6 -0
  19. package/dist/agent/index.d.ts.map +1 -0
  20. package/dist/agent/index.js +6 -0
  21. package/dist/agent/index.js.map +1 -0
  22. package/dist/agent/orchestrator.d.ts +14 -0
  23. package/dist/agent/orchestrator.d.ts.map +1 -0
  24. package/dist/agent/orchestrator.js +108 -0
  25. package/dist/agent/orchestrator.js.map +1 -0
  26. package/dist/agent/planner.d.ts +21 -0
  27. package/dist/agent/planner.d.ts.map +1 -0
  28. package/dist/agent/planner.js +153 -0
  29. package/dist/agent/planner.js.map +1 -0
  30. package/dist/agent/types.d.ts +86 -0
  31. package/dist/agent/types.d.ts.map +1 -0
  32. package/dist/agent/types.js +2 -0
  33. package/dist/agent/types.js.map +1 -0
  34. package/dist/benchmark/index.d.ts +4 -0
  35. package/dist/benchmark/index.d.ts.map +1 -0
  36. package/dist/benchmark/index.js +4 -0
  37. package/dist/benchmark/index.js.map +1 -0
  38. package/dist/benchmark/regression.d.ts +40 -0
  39. package/dist/benchmark/regression.d.ts.map +1 -0
  40. package/dist/benchmark/regression.js +199 -0
  41. package/dist/benchmark/regression.js.map +1 -0
  42. package/dist/benchmark/smoothing.d.ts +40 -0
  43. package/dist/benchmark/smoothing.d.ts.map +1 -0
  44. package/dist/benchmark/smoothing.js +121 -0
  45. package/dist/benchmark/smoothing.js.map +1 -0
  46. package/dist/benchmark/threshold.d.ts +64 -0
  47. package/dist/benchmark/threshold.d.ts.map +1 -0
  48. package/dist/benchmark/threshold.js +173 -0
  49. package/dist/benchmark/threshold.js.map +1 -0
  50. package/dist/cli/argParsing.d.ts +34 -0
  51. package/dist/cli/argParsing.d.ts.map +1 -0
  52. package/dist/cli/argParsing.js +329 -0
  53. package/dist/cli/argParsing.js.map +1 -0
  54. package/dist/cli/commands/benchmark.d.ts +16 -0
  55. package/dist/cli/commands/benchmark.d.ts.map +1 -0
  56. package/dist/cli/commands/benchmark.js +412 -0
  57. package/dist/cli/commands/benchmark.js.map +1 -0
  58. package/dist/cli/commands/doctor.d.ts +3 -0
  59. package/dist/cli/commands/doctor.d.ts.map +1 -0
  60. package/dist/cli/commands/doctor.js +218 -0
  61. package/dist/cli/commands/doctor.js.map +1 -0
  62. package/dist/cli/commands/export.d.ts +12 -0
  63. package/dist/cli/commands/export.d.ts.map +1 -0
  64. package/dist/cli/commands/export.js +70 -0
  65. package/dist/cli/commands/export.js.map +1 -0
  66. package/dist/cli/commands/import.d.ts +10 -0
  67. package/dist/cli/commands/import.d.ts.map +1 -0
  68. package/dist/cli/commands/import.js +40 -0
  69. package/dist/cli/commands/import.js.map +1 -0
  70. package/dist/cli/commands/index.d.ts +3 -0
  71. package/dist/cli/commands/index.d.ts.map +1 -0
  72. package/dist/cli/commands/index.js +89 -0
  73. package/dist/cli/commands/index.js.map +1 -0
  74. package/dist/cli/commands/init.d.ts +3 -0
  75. package/dist/cli/commands/init.d.ts.map +1 -0
  76. package/dist/cli/commands/init.js +221 -0
  77. package/dist/cli/commands/init.js.map +1 -0
  78. package/dist/cli/commands/pull.d.ts +11 -0
  79. package/dist/cli/commands/pull.d.ts.map +1 -0
  80. package/dist/cli/commands/pull.js +47 -0
  81. package/dist/cli/commands/pull.js.map +1 -0
  82. package/dist/cli/commands/serve.d.ts +3 -0
  83. package/dist/cli/commands/serve.d.ts.map +1 -0
  84. package/dist/cli/commands/serve.js +72 -0
  85. package/dist/cli/commands/serve.js.map +1 -0
  86. package/dist/cli/commands/version.d.ts +3 -0
  87. package/dist/cli/commands/version.d.ts.map +1 -0
  88. package/dist/cli/commands/version.js +24 -0
  89. package/dist/cli/commands/version.js.map +1 -0
  90. package/dist/cli/index.d.ts +3 -0
  91. package/dist/cli/index.d.ts.map +1 -0
  92. package/dist/cli/index.js +213 -0
  93. package/dist/cli/index.js.map +1 -0
  94. package/dist/cli/logging.d.ts +10 -0
  95. package/dist/cli/logging.d.ts.map +1 -0
  96. package/dist/cli/logging.js +48 -0
  97. package/dist/cli/logging.js.map +1 -0
  98. package/dist/cli/transport/http.d.ts +3 -0
  99. package/dist/cli/transport/http.d.ts.map +1 -0
  100. package/dist/cli/transport/http.js +106 -0
  101. package/dist/cli/transport/http.js.map +1 -0
  102. package/dist/cli/transport/stdio.d.ts +3 -0
  103. package/dist/cli/transport/stdio.d.ts.map +1 -0
  104. package/dist/cli/transport/stdio.js +6 -0
  105. package/dist/cli/transport/stdio.js.map +1 -0
  106. package/dist/cli/types.d.ts +41 -0
  107. package/dist/cli/types.d.ts.map +1 -0
  108. package/dist/cli/types.js +2 -0
  109. package/dist/cli/types.js.map +1 -0
  110. package/dist/code/gate.d.ts +11 -0
  111. package/dist/code/gate.d.ts.map +1 -0
  112. package/dist/code/gate.js +134 -0
  113. package/dist/code/gate.js.map +1 -0
  114. package/dist/code/hotpath.d.ts +17 -0
  115. package/dist/code/hotpath.d.ts.map +1 -0
  116. package/dist/code/hotpath.js +200 -0
  117. package/dist/code/hotpath.js.map +1 -0
  118. package/dist/code/redact.d.ts +19 -0
  119. package/dist/code/redact.d.ts.map +1 -0
  120. package/dist/code/redact.js +92 -0
  121. package/dist/code/redact.js.map +1 -0
  122. package/dist/code/skeleton.d.ts +32 -0
  123. package/dist/code/skeleton.d.ts.map +1 -0
  124. package/dist/code/skeleton.js +610 -0
  125. package/dist/code/skeleton.js.map +1 -0
  126. package/dist/code/windows.d.ts +18 -0
  127. package/dist/code/windows.d.ts.map +1 -0
  128. package/dist/code/windows.js +236 -0
  129. package/dist/code/windows.js.map +1 -0
  130. package/dist/config/constants.d.ts +340 -0
  131. package/dist/config/constants.d.ts.map +1 -0
  132. package/dist/config/constants.js +379 -0
  133. package/dist/config/constants.js.map +1 -0
  134. package/dist/config/loadConfig.d.ts +3 -0
  135. package/dist/config/loadConfig.d.ts.map +1 -0
  136. package/dist/config/loadConfig.js +71 -0
  137. package/dist/config/loadConfig.js.map +1 -0
  138. package/dist/config/types.d.ts +509 -0
  139. package/dist/config/types.d.ts.map +1 -0
  140. package/dist/config/types.js +139 -0
  141. package/dist/config/types.js.map +1 -0
  142. package/dist/db/db.d.ts +4 -0
  143. package/dist/db/db.d.ts.map +1 -0
  144. package/dist/db/db.js +47 -0
  145. package/dist/db/db.js.map +1 -0
  146. package/dist/db/migrations.d.ts +15 -0
  147. package/dist/db/migrations.d.ts.map +1 -0
  148. package/dist/db/migrations.js +81 -0
  149. package/dist/db/migrations.js.map +1 -0
  150. package/dist/db/queries.d.ts +440 -0
  151. package/dist/db/queries.d.ts.map +1 -0
  152. package/dist/db/queries.js +1054 -0
  153. package/dist/db/queries.js.map +1 -0
  154. package/dist/db/schema.d.ts +132 -0
  155. package/dist/db/schema.d.ts.map +1 -0
  156. package/dist/db/schema.js +2 -0
  157. package/dist/db/schema.js.map +1 -0
  158. package/dist/delta/blastRadius.d.ts +24 -0
  159. package/dist/delta/blastRadius.d.ts.map +1 -0
  160. package/dist/delta/blastRadius.js +239 -0
  161. package/dist/delta/blastRadius.js.map +1 -0
  162. package/dist/delta/diff.d.ts +16 -0
  163. package/dist/delta/diff.d.ts.map +1 -0
  164. package/dist/delta/diff.js +236 -0
  165. package/dist/delta/diff.js.map +1 -0
  166. package/dist/delta/versioning.d.ts +11 -0
  167. package/dist/delta/versioning.d.ts.map +1 -0
  168. package/dist/delta/versioning.js +68 -0
  169. package/dist/delta/versioning.js.map +1 -0
  170. package/dist/graph/buildGraph.d.ts +12 -0
  171. package/dist/graph/buildGraph.d.ts.map +1 -0
  172. package/dist/graph/buildGraph.js +81 -0
  173. package/dist/graph/buildGraph.js.map +1 -0
  174. package/dist/graph/cache.d.ts +111 -0
  175. package/dist/graph/cache.d.ts.map +1 -0
  176. package/dist/graph/cache.js +237 -0
  177. package/dist/graph/cache.js.map +1 -0
  178. package/dist/graph/metrics.d.ts +12 -0
  179. package/dist/graph/metrics.d.ts.map +1 -0
  180. package/dist/graph/metrics.js +253 -0
  181. package/dist/graph/metrics.js.map +1 -0
  182. package/dist/graph/minHeap.d.ts +91 -0
  183. package/dist/graph/minHeap.d.ts.map +1 -0
  184. package/dist/graph/minHeap.js +159 -0
  185. package/dist/graph/minHeap.js.map +1 -0
  186. package/dist/graph/overview.d.ts +22 -0
  187. package/dist/graph/overview.d.ts.map +1 -0
  188. package/dist/graph/overview.js +379 -0
  189. package/dist/graph/overview.js.map +1 -0
  190. package/dist/graph/score.d.ts +27 -0
  191. package/dist/graph/score.d.ts.map +1 -0
  192. package/dist/graph/score.js +214 -0
  193. package/dist/graph/score.js.map +1 -0
  194. package/dist/graph/slice.d.ts +51 -0
  195. package/dist/graph/slice.d.ts.map +1 -0
  196. package/dist/graph/slice.js +1047 -0
  197. package/dist/graph/slice.js.map +1 -0
  198. package/dist/graph/sliceCache.d.ts +33 -0
  199. package/dist/graph/sliceCache.d.ts.map +1 -0
  200. package/dist/graph/sliceCache.js +140 -0
  201. package/dist/graph/sliceCache.js.map +1 -0
  202. package/dist/indexer/adapter/BaseAdapter.d.ts +29 -0
  203. package/dist/indexer/adapter/BaseAdapter.d.ts.map +1 -0
  204. package/dist/indexer/adapter/BaseAdapter.js +97 -0
  205. package/dist/indexer/adapter/BaseAdapter.js.map +1 -0
  206. package/dist/indexer/adapter/LanguageAdapter.d.ts +20 -0
  207. package/dist/indexer/adapter/LanguageAdapter.d.ts.map +1 -0
  208. package/dist/indexer/adapter/LanguageAdapter.js +2 -0
  209. package/dist/indexer/adapter/LanguageAdapter.js.map +1 -0
  210. package/dist/indexer/adapter/adapters.d.ts +57 -0
  211. package/dist/indexer/adapter/adapters.d.ts.map +1 -0
  212. package/dist/indexer/adapter/adapters.js +129 -0
  213. package/dist/indexer/adapter/adapters.js.map +1 -0
  214. package/dist/indexer/adapter/c.d.ts +18 -0
  215. package/dist/indexer/adapter/c.d.ts.map +1 -0
  216. package/dist/indexer/adapter/c.js +443 -0
  217. package/dist/indexer/adapter/c.js.map +1 -0
  218. package/dist/indexer/adapter/cpp.d.ts +18 -0
  219. package/dist/indexer/adapter/cpp.d.ts.map +1 -0
  220. package/dist/indexer/adapter/cpp.js +493 -0
  221. package/dist/indexer/adapter/cpp.js.map +1 -0
  222. package/dist/indexer/adapter/csharp.d.ts +48 -0
  223. package/dist/indexer/adapter/csharp.d.ts.map +1 -0
  224. package/dist/indexer/adapter/csharp.js +638 -0
  225. package/dist/indexer/adapter/csharp.js.map +1 -0
  226. package/dist/indexer/adapter/go.d.ts +14 -0
  227. package/dist/indexer/adapter/go.d.ts.map +1 -0
  228. package/dist/indexer/adapter/go.js +400 -0
  229. package/dist/indexer/adapter/go.js.map +1 -0
  230. package/dist/indexer/adapter/index.d.ts +14 -0
  231. package/dist/indexer/adapter/index.d.ts.map +1 -0
  232. package/dist/indexer/adapter/index.js +13 -0
  233. package/dist/indexer/adapter/index.js.map +1 -0
  234. package/dist/indexer/adapter/java.d.ts +14 -0
  235. package/dist/indexer/adapter/java.d.ts.map +1 -0
  236. package/dist/indexer/adapter/java.js +391 -0
  237. package/dist/indexer/adapter/java.js.map +1 -0
  238. package/dist/indexer/adapter/kotlin.d.ts +18 -0
  239. package/dist/indexer/adapter/kotlin.d.ts.map +1 -0
  240. package/dist/indexer/adapter/kotlin.js +599 -0
  241. package/dist/indexer/adapter/kotlin.js.map +1 -0
  242. package/dist/indexer/adapter/php.d.ts +18 -0
  243. package/dist/indexer/adapter/php.d.ts.map +1 -0
  244. package/dist/indexer/adapter/php.js +574 -0
  245. package/dist/indexer/adapter/php.js.map +1 -0
  246. package/dist/indexer/adapter/plugin/index.d.ts +3 -0
  247. package/dist/indexer/adapter/plugin/index.d.ts.map +1 -0
  248. package/dist/indexer/adapter/plugin/index.js +3 -0
  249. package/dist/indexer/adapter/plugin/index.js.map +1 -0
  250. package/dist/indexer/adapter/plugin/loader.d.ts +13 -0
  251. package/dist/indexer/adapter/plugin/loader.d.ts.map +1 -0
  252. package/dist/indexer/adapter/plugin/loader.js +154 -0
  253. package/dist/indexer/adapter/plugin/loader.js.map +1 -0
  254. package/dist/indexer/adapter/plugin/types.d.ts +76 -0
  255. package/dist/indexer/adapter/plugin/types.d.ts.map +1 -0
  256. package/dist/indexer/adapter/plugin/types.js +47 -0
  257. package/dist/indexer/adapter/plugin/types.js.map +1 -0
  258. package/dist/indexer/adapter/python.d.ts +14 -0
  259. package/dist/indexer/adapter/python.d.ts.map +1 -0
  260. package/dist/indexer/adapter/python.js +511 -0
  261. package/dist/indexer/adapter/python.js.map +1 -0
  262. package/dist/indexer/adapter/registry.d.ts +17 -0
  263. package/dist/indexer/adapter/registry.d.ts.map +1 -0
  264. package/dist/indexer/adapter/registry.js +134 -0
  265. package/dist/indexer/adapter/registry.js.map +1 -0
  266. package/dist/indexer/adapter/rust.d.ts +18 -0
  267. package/dist/indexer/adapter/rust.d.ts.map +1 -0
  268. package/dist/indexer/adapter/rust.js +709 -0
  269. package/dist/indexer/adapter/rust.js.map +1 -0
  270. package/dist/indexer/adapter/shell.d.ts +18 -0
  271. package/dist/indexer/adapter/shell.d.ts.map +1 -0
  272. package/dist/indexer/adapter/shell.js +345 -0
  273. package/dist/indexer/adapter/shell.js.map +1 -0
  274. package/dist/indexer/adapter/typescript.d.ts +14 -0
  275. package/dist/indexer/adapter/typescript.d.ts.map +1 -0
  276. package/dist/indexer/adapter/typescript.js +31 -0
  277. package/dist/indexer/adapter/typescript.js.map +1 -0
  278. package/dist/indexer/configEdges.d.ts +30 -0
  279. package/dist/indexer/configEdges.d.ts.map +1 -0
  280. package/dist/indexer/configEdges.js +260 -0
  281. package/dist/indexer/configEdges.js.map +1 -0
  282. package/dist/indexer/fileScanner.d.ts +16 -0
  283. package/dist/indexer/fileScanner.d.ts.map +1 -0
  284. package/dist/indexer/fileScanner.js +90 -0
  285. package/dist/indexer/fileScanner.js.map +1 -0
  286. package/dist/indexer/fingerprints.d.ts +23 -0
  287. package/dist/indexer/fingerprints.d.ts.map +1 -0
  288. package/dist/indexer/fingerprints.js +97 -0
  289. package/dist/indexer/fingerprints.js.map +1 -0
  290. package/dist/indexer/indexer.d.ts +58 -0
  291. package/dist/indexer/indexer.d.ts.map +1 -0
  292. package/dist/indexer/indexer.js +1229 -0
  293. package/dist/indexer/indexer.js.map +1 -0
  294. package/dist/indexer/summaries.d.ts +5 -0
  295. package/dist/indexer/summaries.d.ts.map +1 -0
  296. package/dist/indexer/summaries.js +331 -0
  297. package/dist/indexer/summaries.js.map +1 -0
  298. package/dist/indexer/treesitter/extractCalls.d.ts +40 -0
  299. package/dist/indexer/treesitter/extractCalls.d.ts.map +1 -0
  300. package/dist/indexer/treesitter/extractCalls.js +561 -0
  301. package/dist/indexer/treesitter/extractCalls.js.map +1 -0
  302. package/dist/indexer/treesitter/extractImports.d.ts +12 -0
  303. package/dist/indexer/treesitter/extractImports.d.ts.map +1 -0
  304. package/dist/indexer/treesitter/extractImports.js +184 -0
  305. package/dist/indexer/treesitter/extractImports.js.map +1 -0
  306. package/dist/indexer/treesitter/extractSymbols.d.ts +24 -0
  307. package/dist/indexer/treesitter/extractSymbols.d.ts.map +1 -0
  308. package/dist/indexer/treesitter/extractSymbols.js +389 -0
  309. package/dist/indexer/treesitter/extractSymbols.js.map +1 -0
  310. package/dist/indexer/treesitter/grammarLoader.d.ts +6 -0
  311. package/dist/indexer/treesitter/grammarLoader.d.ts.map +1 -0
  312. package/dist/indexer/treesitter/grammarLoader.js +125 -0
  313. package/dist/indexer/treesitter/grammarLoader.js.map +1 -0
  314. package/dist/indexer/treesitter/symbolUtils.d.ts +4 -0
  315. package/dist/indexer/treesitter/symbolUtils.d.ts.map +1 -0
  316. package/dist/indexer/treesitter/symbolUtils.js +26 -0
  317. package/dist/indexer/treesitter/symbolUtils.js.map +1 -0
  318. package/dist/indexer/treesitter/tsTreesitter.d.ts +9 -0
  319. package/dist/indexer/treesitter/tsTreesitter.d.ts.map +1 -0
  320. package/dist/indexer/treesitter/tsTreesitter.js +54 -0
  321. package/dist/indexer/treesitter/tsTreesitter.js.map +1 -0
  322. package/dist/indexer/treesitter/types.d.ts +19 -0
  323. package/dist/indexer/treesitter/types.d.ts.map +1 -0
  324. package/dist/indexer/treesitter/types.js +7 -0
  325. package/dist/indexer/treesitter/types.js.map +1 -0
  326. package/dist/indexer/ts/tsParser.d.ts +20 -0
  327. package/dist/indexer/ts/tsParser.d.ts.map +1 -0
  328. package/dist/indexer/ts/tsParser.js +114 -0
  329. package/dist/indexer/ts/tsParser.js.map +1 -0
  330. package/dist/indexer/worker.d.ts +2 -0
  331. package/dist/indexer/worker.d.ts.map +1 -0
  332. package/dist/indexer/worker.js +59 -0
  333. package/dist/indexer/worker.js.map +1 -0
  334. package/dist/indexer/workerPool.d.ts +20 -0
  335. package/dist/indexer/workerPool.d.ts.map +1 -0
  336. package/dist/indexer/workerPool.js +93 -0
  337. package/dist/indexer/workerPool.js.map +1 -0
  338. package/dist/main.d.ts +2 -0
  339. package/dist/main.d.ts.map +1 -0
  340. package/dist/main.js +111 -0
  341. package/dist/main.js.map +1 -0
  342. package/dist/mcp/errors.d.ts +40 -0
  343. package/dist/mcp/errors.d.ts.map +1 -0
  344. package/dist/mcp/errors.js +66 -0
  345. package/dist/mcp/errors.js.map +1 -0
  346. package/dist/mcp/resources.d.ts +24 -0
  347. package/dist/mcp/resources.d.ts.map +1 -0
  348. package/dist/mcp/resources.js +140 -0
  349. package/dist/mcp/resources.js.map +1 -0
  350. package/dist/mcp/telemetry.d.ts +67 -0
  351. package/dist/mcp/telemetry.d.ts.map +1 -0
  352. package/dist/mcp/telemetry.js +128 -0
  353. package/dist/mcp/telemetry.js.map +1 -0
  354. package/dist/mcp/tools/agent.d.ts +241 -0
  355. package/dist/mcp/tools/agent.d.ts.map +1 -0
  356. package/dist/mcp/tools/agent.js +113 -0
  357. package/dist/mcp/tools/agent.js.map +1 -0
  358. package/dist/mcp/tools/code.d.ts +32 -0
  359. package/dist/mcp/tools/code.d.ts.map +1 -0
  360. package/dist/mcp/tools/code.js +388 -0
  361. package/dist/mcp/tools/code.js.map +1 -0
  362. package/dist/mcp/tools/delta.d.ts +12 -0
  363. package/dist/mcp/tools/delta.d.ts.map +1 -0
  364. package/dist/mcp/tools/delta.js +82 -0
  365. package/dist/mcp/tools/delta.js.map +1 -0
  366. package/dist/mcp/tools/index.d.ts +3 -0
  367. package/dist/mcp/tools/index.d.ts.map +1 -0
  368. package/dist/mcp/tools/index.js +35 -0
  369. package/dist/mcp/tools/index.js.map +1 -0
  370. package/dist/mcp/tools/policy.d.ts +20 -0
  371. package/dist/mcp/tools/policy.d.ts.map +1 -0
  372. package/dist/mcp/tools/policy.js +67 -0
  373. package/dist/mcp/tools/policy.js.map +1 -0
  374. package/dist/mcp/tools/prRisk.d.ts +34 -0
  375. package/dist/mcp/tools/prRisk.d.ts.map +1 -0
  376. package/dist/mcp/tools/prRisk.js +304 -0
  377. package/dist/mcp/tools/prRisk.js.map +1 -0
  378. package/dist/mcp/tools/repo.d.ts +46 -0
  379. package/dist/mcp/tools/repo.d.ts.map +1 -0
  380. package/dist/mcp/tools/repo.js +224 -0
  381. package/dist/mcp/tools/repo.js.map +1 -0
  382. package/dist/mcp/tools/slice.d.ts +44 -0
  383. package/dist/mcp/tools/slice.d.ts.map +1 -0
  384. package/dist/mcp/tools/slice.js +688 -0
  385. package/dist/mcp/tools/slice.js.map +1 -0
  386. package/dist/mcp/tools/symbol.d.ts +21 -0
  387. package/dist/mcp/tools/symbol.d.ts.map +1 -0
  388. package/dist/mcp/tools/symbol.js +416 -0
  389. package/dist/mcp/tools/symbol.js.map +1 -0
  390. package/dist/mcp/tools.d.ts +6003 -0
  391. package/dist/mcp/tools.d.ts.map +1 -0
  392. package/dist/mcp/tools.js +932 -0
  393. package/dist/mcp/tools.js.map +1 -0
  394. package/dist/mcp/types.d.ts +500 -0
  395. package/dist/mcp/types.d.ts.map +1 -0
  396. package/dist/mcp/types.js +2 -0
  397. package/dist/mcp/types.js.map +1 -0
  398. package/dist/policy/engine.d.ts +21 -0
  399. package/dist/policy/engine.d.ts.map +1 -0
  400. package/dist/policy/engine.js +477 -0
  401. package/dist/policy/engine.js.map +1 -0
  402. package/dist/policy/types.d.ts +73 -0
  403. package/dist/policy/types.d.ts.map +1 -0
  404. package/dist/policy/types.js +12 -0
  405. package/dist/policy/types.js.map +1 -0
  406. package/dist/server.d.ts +17 -0
  407. package/dist/server.d.ts.map +1 -0
  408. package/dist/server.js +136 -0
  409. package/dist/server.js.map +1 -0
  410. package/dist/sync/pull.d.ts +4 -0
  411. package/dist/sync/pull.d.ts.map +1 -0
  412. package/dist/sync/pull.js +113 -0
  413. package/dist/sync/pull.js.map +1 -0
  414. package/dist/sync/sync.d.ts +6 -0
  415. package/dist/sync/sync.d.ts.map +1 -0
  416. package/dist/sync/sync.js +244 -0
  417. package/dist/sync/sync.js.map +1 -0
  418. package/dist/sync/types.d.ts +136 -0
  419. package/dist/sync/types.d.ts.map +1 -0
  420. package/dist/sync/types.js +2 -0
  421. package/dist/sync/types.js.map +1 -0
  422. package/dist/ts/diagnostics.d.ts +61 -0
  423. package/dist/ts/diagnostics.d.ts.map +1 -0
  424. package/dist/ts/diagnostics.js +259 -0
  425. package/dist/ts/diagnostics.js.map +1 -0
  426. package/dist/ts/mapping.d.ts +27 -0
  427. package/dist/ts/mapping.d.ts.map +1 -0
  428. package/dist/ts/mapping.js +68 -0
  429. package/dist/ts/mapping.js.map +1 -0
  430. package/dist/util/asyncFs.d.ts +103 -0
  431. package/dist/util/asyncFs.d.ts.map +1 -0
  432. package/dist/util/asyncFs.js +133 -0
  433. package/dist/util/asyncFs.js.map +1 -0
  434. package/dist/util/concurrency.d.ts +77 -0
  435. package/dist/util/concurrency.d.ts.map +1 -0
  436. package/dist/util/concurrency.js +146 -0
  437. package/dist/util/concurrency.js.map +1 -0
  438. package/dist/util/depLabels.d.ts +3 -0
  439. package/dist/util/depLabels.d.ts.map +1 -0
  440. package/dist/util/depLabels.js +19 -0
  441. package/dist/util/depLabels.js.map +1 -0
  442. package/dist/util/findPackageRoot.d.ts +7 -0
  443. package/dist/util/findPackageRoot.d.ts.map +1 -0
  444. package/dist/util/findPackageRoot.js +21 -0
  445. package/dist/util/findPackageRoot.js.map +1 -0
  446. package/dist/util/hashing.d.ts +9 -0
  447. package/dist/util/hashing.d.ts.map +1 -0
  448. package/dist/util/hashing.js +37 -0
  449. package/dist/util/hashing.js.map +1 -0
  450. package/dist/util/logger.d.ts +14 -0
  451. package/dist/util/logger.d.ts.map +1 -0
  452. package/dist/util/logger.js +51 -0
  453. package/dist/util/logger.js.map +1 -0
  454. package/dist/util/paths.d.ts +6 -0
  455. package/dist/util/paths.d.ts.map +1 -0
  456. package/dist/util/paths.js +79 -0
  457. package/dist/util/paths.js.map +1 -0
  458. package/dist/util/time.d.ts +4 -0
  459. package/dist/util/time.d.ts.map +1 -0
  460. package/dist/util/time.js +20 -0
  461. package/dist/util/time.js.map +1 -0
  462. package/dist/util/tokenize.d.ts +5 -0
  463. package/dist/util/tokenize.d.ts.map +1 -0
  464. package/dist/util/tokenize.js +30 -0
  465. package/dist/util/tokenize.js.map +1 -0
  466. package/dist/util/truncation.d.ts +38 -0
  467. package/dist/util/truncation.d.ts.map +1 -0
  468. package/dist/util/truncation.js +259 -0
  469. package/dist/util/truncation.js.map +1 -0
  470. package/migrations/.gitkeep +1 -0
  471. package/migrations/0001_init.sql +61 -0
  472. package/migrations/0002_edges_indexes.sql +2 -0
  473. package/migrations/0003_versions.sql +22 -0
  474. package/migrations/0004_metrics_audit.sql +23 -0
  475. package/migrations/0005_slice_handles.sql +15 -0
  476. package/migrations/0006_content_addressed.sql +29 -0
  477. package/migrations/0007_add_language_to_symbols.sql +28 -0
  478. package/migrations/0008_performance_indexes.sql +21 -0
  479. package/migrations/0009_fix_edge_fks.sql +37 -0
  480. package/migrations/0010_standardize_fks.sql +35 -0
  481. package/migrations/0011_add_directory_column.sql +20 -0
  482. package/migrations/0012_symbol_references.sql +16 -0
  483. package/migrations/0013_sync_artifacts.sql +17 -0
  484. package/package.json +107 -0
  485. package/templates/CLAUDE.md.template +179 -0
  486. package/templates/README.md +228 -0
  487. package/templates/claude-code.json +54 -0
  488. package/templates/codex.json +55 -0
  489. package/templates/gemini.json +66 -0
  490. package/templates/opencode.json +90 -0
  491. package/templates/plugin-template/LICENSE +21 -0
  492. package/templates/plugin-template/README.md +309 -0
  493. package/templates/plugin-template/index.ts +160 -0
  494. package/templates/plugin-template/package.json +31 -0
  495. package/templates/plugin-template/test/plugin.test.ts +186 -0
  496. package/templates/plugin-template/tsconfig.json +21 -0
@@ -0,0 +1,159 @@
1
+ /**
2
+ * Min-heap data structure for efficient priority queue operations.
3
+ * Used in beam search to maintain sorted frontier with O(log n) operations.
4
+ *
5
+ * @template T - Type of items in the heap (must have a numeric score property)
6
+ */
7
+ export class MinHeap {
8
+ heap = [];
9
+ /**
10
+ * Insert an item into the heap.
11
+ * Time complexity: O(log n)
12
+ *
13
+ * @param item - Item to insert (must have a score property)
14
+ */
15
+ insert(item) {
16
+ this.heap.push(item);
17
+ this.bubbleUp(this.heap.length - 1);
18
+ }
19
+ /**
20
+ * Remove and return the item with the lowest score.
21
+ * Time complexity: O(log n)
22
+ *
23
+ * @returns Item with minimum score, or undefined if heap is empty
24
+ */
25
+ extractMin() {
26
+ if (this.heap.length === 0) {
27
+ return undefined;
28
+ }
29
+ if (this.heap.length === 1) {
30
+ return this.heap.pop();
31
+ }
32
+ const min = this.heap[0];
33
+ const last = this.heap.pop();
34
+ this.heap[0] = last;
35
+ this.bubbleDown(0);
36
+ return min;
37
+ }
38
+ /**
39
+ * Peek at the item with the lowest score without removing it.
40
+ * Time complexity: O(1)
41
+ *
42
+ * @returns Item with minimum score, or undefined if heap is empty
43
+ */
44
+ peek() {
45
+ return this.heap[0];
46
+ }
47
+ /**
48
+ * Check if the heap is empty.
49
+ * Time complexity: O(1)
50
+ *
51
+ * @returns true if heap has no items
52
+ */
53
+ isEmpty() {
54
+ return this.heap.length === 0;
55
+ }
56
+ /**
57
+ * Get the number of items in the heap.
58
+ * Time complexity: O(1)
59
+ *
60
+ * @returns Number of items in the heap
61
+ */
62
+ size() {
63
+ return this.heap.length;
64
+ }
65
+ /**
66
+ * Convert heap to array sorted by score (lowest to highest).
67
+ * This is a destructive operation - empties the heap.
68
+ *
69
+ * @returns Array of items sorted by score (lowest to highest)
70
+ */
71
+ toArray() {
72
+ const sorted = [];
73
+ while (!this.isEmpty()) {
74
+ sorted.push(this.extractMin());
75
+ }
76
+ return sorted;
77
+ }
78
+ /**
79
+ * Get items as array in heap order (not sorted).
80
+ * This is non-destructive.
81
+ *
82
+ * @returns Copy of internal heap array
83
+ */
84
+ toHeapArray() {
85
+ return [...this.heap];
86
+ }
87
+ /**
88
+ * Clear all items from the heap.
89
+ */
90
+ clear() {
91
+ this.heap = [];
92
+ }
93
+ /**
94
+ * Move item at index up to restore heap property.
95
+ *
96
+ * @param index - Index of item to bubble up
97
+ */
98
+ bubbleUp(index) {
99
+ while (index > 0) {
100
+ const parentIndex = Math.floor((index - 1) / 2);
101
+ if (this.compare(this.heap[parentIndex], this.heap[index]) <= 0) {
102
+ break;
103
+ }
104
+ this.swap(parentIndex, index);
105
+ index = parentIndex;
106
+ }
107
+ }
108
+ /**
109
+ * Move item at index down to restore heap property.
110
+ *
111
+ * @param index - Index of item to bubble down
112
+ */
113
+ bubbleDown(index) {
114
+ const length = this.heap.length;
115
+ for (;;) {
116
+ let smallest = index;
117
+ const left = 2 * index + 1;
118
+ const right = 2 * index + 2;
119
+ if (left < length &&
120
+ this.compare(this.heap[left], this.heap[smallest]) < 0) {
121
+ smallest = left;
122
+ }
123
+ if (right < length &&
124
+ this.compare(this.heap[right], this.heap[smallest]) < 0) {
125
+ smallest = right;
126
+ }
127
+ if (smallest === index) {
128
+ break;
129
+ }
130
+ this.swap(smallest, index);
131
+ index = smallest;
132
+ }
133
+ }
134
+ /**
135
+ * Swap two items in the heap array.
136
+ *
137
+ * @param i - First index
138
+ * @param j - Second index
139
+ */
140
+ swap(i, j) {
141
+ [this.heap[i], this.heap[j]] = [this.heap[j], this.heap[i]];
142
+ }
143
+ /**
144
+ * Compare two heap items with deterministic tie-breakers.
145
+ * Lower score is better; ties are broken by priority and then insertion sequence.
146
+ */
147
+ compare(a, b) {
148
+ if (a.score !== b.score)
149
+ return a.score - b.score;
150
+ const aPriority = a.priority ?? 0;
151
+ const bPriority = b.priority ?? 0;
152
+ if (aPriority !== bPriority)
153
+ return aPriority - bPriority;
154
+ const aSequence = a.sequence ?? 0;
155
+ const bSequence = b.sequence ?? 0;
156
+ return aSequence - bSequence;
157
+ }
158
+ }
159
+ //# sourceMappingURL=minHeap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"minHeap.js","sourceRoot":"","sources":["../../src/graph/minHeap.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Repository Overview Builder
3
+ *
4
+ * Generates token-efficient codebase overviews by aggregating symbol data
5
+ * at the directory level. This provides 10-50x token reduction compared to
6
+ * rendering all symbols as full cards.
7
+ *
8
+ * Key features:
9
+ * - Progressive detail levels (stats, directories, full)
10
+ * - Directory-level symbol aggregation
11
+ * - Hotspot analysis (most depended, most changed)
12
+ * - Token efficiency metrics
13
+ */
14
+ import type { RepoOverview, RepoOverviewRequest } from "../mcp/types.js";
15
+ /**
16
+ * Builds a repository overview with configurable detail level.
17
+ *
18
+ * @param request - Overview request parameters
19
+ * @returns Repository overview with stats, directories, and optionally hotspots
20
+ */
21
+ export declare function buildRepoOverview(request: RepoOverviewRequest): RepoOverview;
22
+ //# sourceMappingURL=overview.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"overview.d.ts","sourceRoot":"","sources":["../../src/graph/overview.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,KAAK,EACV,YAAY,EACZ,mBAAmB,EAMpB,MAAM,iBAAiB,CAAC;AAuGzB;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,mBAAmB,GAAG,YAAY,CAkE5E"}
@@ -0,0 +1,379 @@
1
+ /**
2
+ * Repository Overview Builder
3
+ *
4
+ * Generates token-efficient codebase overviews by aggregating symbol data
5
+ * at the directory level. This provides 10-50x token reduction compared to
6
+ * rendering all symbols as full cards.
7
+ *
8
+ * Key features:
9
+ * - Progressive detail levels (stats, directories, full)
10
+ * - Directory-level symbol aggregation
11
+ * - Hotspot analysis (most depended, most changed)
12
+ * - Token efficiency metrics
13
+ */
14
+ import * as db from "../db/queries.js";
15
+ import { SYMBOL_TOKEN_MAX } from "../config/constants.js";
16
+ // ============================================================================
17
+ // Constants
18
+ // ============================================================================
19
+ /**
20
+ * Estimated tokens for a compact symbol reference.
21
+ * Much smaller than full SymbolCard (~135 tokens).
22
+ */
23
+ const COMPACT_SYMBOL_REF_TOKENS = 15;
24
+ /**
25
+ * Estimated tokens for directory summary header.
26
+ */
27
+ const DIRECTORY_SUMMARY_HEADER_TOKENS = 25;
28
+ /**
29
+ * Estimated tokens per export name in directory summary.
30
+ */
31
+ const EXPORT_NAME_TOKENS = 2;
32
+ /**
33
+ * Default maximum directories to include in overview.
34
+ */
35
+ const DEFAULT_MAX_DIRECTORIES = 50;
36
+ /**
37
+ * Default maximum exports to list per directory.
38
+ */
39
+ const DEFAULT_MAX_EXPORTS_PER_DIRECTORY = 10;
40
+ /**
41
+ * Default maximum top symbols to include in hotspots.
42
+ */
43
+ const DEFAULT_MAX_HOTSPOT_SYMBOLS = 10;
44
+ // ============================================================================
45
+ // Helper Functions
46
+ // ============================================================================
47
+ /**
48
+ * Creates empty SymbolCountsByKind object.
49
+ */
50
+ function emptySymbolCounts() {
51
+ return {
52
+ function: 0,
53
+ class: 0,
54
+ interface: 0,
55
+ type: 0,
56
+ method: 0,
57
+ variable: 0,
58
+ module: 0,
59
+ constructor: 0,
60
+ };
61
+ }
62
+ /**
63
+ * Converts a TopSymbolRow to CompactSymbolRef.
64
+ */
65
+ function toCompactRef(row) {
66
+ let signature;
67
+ if (row.signature_json) {
68
+ try {
69
+ const sig = JSON.parse(row.signature_json);
70
+ if (sig.name) {
71
+ const params = sig.params
72
+ ? `(${sig.params.map((p) => p.name).join(", ")})`
73
+ : "()";
74
+ const ret = sig.returns ? `: ${sig.returns}` : "";
75
+ signature = `${sig.name}${params}${ret}`;
76
+ }
77
+ }
78
+ catch {
79
+ // Ignore parse errors
80
+ }
81
+ }
82
+ return {
83
+ symbolId: row.symbol_id,
84
+ name: row.name,
85
+ kind: row.kind,
86
+ exported: row.exported === 1,
87
+ signature,
88
+ };
89
+ }
90
+ /**
91
+ * Estimates token count for a directory summary.
92
+ */
93
+ function estimateDirectorySummaryTokens(summary) {
94
+ let tokens = DIRECTORY_SUMMARY_HEADER_TOKENS;
95
+ tokens += summary.exports.length * EXPORT_NAME_TOKENS;
96
+ tokens += summary.topByFanIn.length * COMPACT_SYMBOL_REF_TOKENS;
97
+ tokens += summary.topByChurn.length * COMPACT_SYMBOL_REF_TOKENS;
98
+ return tokens;
99
+ }
100
+ // ============================================================================
101
+ // Main Builder
102
+ // ============================================================================
103
+ /**
104
+ * Builds a repository overview with configurable detail level.
105
+ *
106
+ * @param request - Overview request parameters
107
+ * @returns Repository overview with stats, directories, and optionally hotspots
108
+ */
109
+ export function buildRepoOverview(request) {
110
+ const { repoId, level, includeHotspots = level === "full", directories: directoryFilter, maxDirectories = DEFAULT_MAX_DIRECTORIES, maxExportsPerDirectory = DEFAULT_MAX_EXPORTS_PER_DIRECTORY, } = request;
111
+ // Get current version
112
+ const latestVersion = db.getLatestVersion(repoId);
113
+ const versionId = latestVersion?.version_id ?? "0";
114
+ // Always build stats
115
+ const stats = buildRepoStats(repoId);
116
+ // Build directory summaries if requested
117
+ const directorySummaries = [];
118
+ if (level === "directories" || level === "full") {
119
+ const summaries = buildDirectorySummaries(repoId, maxDirectories, maxExportsPerDirectory, directoryFilter);
120
+ directorySummaries.push(...summaries);
121
+ }
122
+ // Build hotspots if requested
123
+ let hotspots;
124
+ if (includeHotspots || level === "full") {
125
+ hotspots = buildCodebaseHotspots(repoId);
126
+ }
127
+ // Identify architectural layers from directory structure
128
+ const layers = identifyArchitecturalLayers(directorySummaries);
129
+ // Find entry points
130
+ const entryPoints = findEntryPoints(repoId);
131
+ // Calculate token metrics
132
+ const fullCardsEstimate = stats.symbolCount * SYMBOL_TOKEN_MAX;
133
+ const overviewTokens = calculateOverviewTokens(stats, directorySummaries, hotspots);
134
+ const compressionRatio = fullCardsEstimate > 0 ? fullCardsEstimate / overviewTokens : 1;
135
+ return {
136
+ repoId,
137
+ versionId,
138
+ generatedAt: new Date().toISOString(),
139
+ stats,
140
+ directories: directorySummaries,
141
+ hotspots,
142
+ layers: layers.length > 0 ? layers : undefined,
143
+ entryPoints: entryPoints.length > 0 ? entryPoints : undefined,
144
+ tokenMetrics: {
145
+ fullCardsEstimate,
146
+ overviewTokens,
147
+ compressionRatio,
148
+ },
149
+ };
150
+ }
151
+ /**
152
+ * Builds high-level repository statistics.
153
+ */
154
+ function buildRepoStats(repoId) {
155
+ const totals = db.getRepoTotals(repoId);
156
+ const edgesByType = db.getEdgeCountsByType(repoId);
157
+ const dirAggregates = db.getDirectoryAggregates(repoId);
158
+ // Aggregate symbol counts by kind across all directories
159
+ const byKind = emptySymbolCounts();
160
+ for (const dir of dirAggregates) {
161
+ byKind.function += dir.function_count;
162
+ byKind.class += dir.class_count;
163
+ byKind.interface += dir.interface_count;
164
+ byKind.type += dir.type_count;
165
+ byKind.method += dir.method_count;
166
+ byKind.variable += dir.variable_count;
167
+ byKind.module += dir.module_count;
168
+ byKind.constructor += dir.constructor_count;
169
+ }
170
+ return {
171
+ fileCount: totals.fileCount,
172
+ symbolCount: totals.symbolCount,
173
+ edgeCount: totals.edgeCount,
174
+ exportedSymbolCount: totals.exportedCount,
175
+ byKind,
176
+ byEdgeType: edgesByType,
177
+ avgSymbolsPerFile: totals.fileCount > 0
178
+ ? Math.round((totals.symbolCount / totals.fileCount) * 10) / 10
179
+ : 0,
180
+ avgEdgesPerSymbol: totals.symbolCount > 0
181
+ ? Math.round((totals.edgeCount / totals.symbolCount) * 10) / 10
182
+ : 0,
183
+ };
184
+ }
185
+ /**
186
+ * Builds directory-level summaries.
187
+ */
188
+ function buildDirectorySummaries(repoId, maxDirectories, maxExportsPerDirectory, directoryFilter) {
189
+ const dirAggregates = db.getDirectoryAggregates(repoId);
190
+ const exportedSymbols = db.getExportedSymbolsByDirectory(repoId, maxExportsPerDirectory);
191
+ const topByFanIn = db.getTopSymbolsByFanIn(repoId, DEFAULT_MAX_HOTSPOT_SYMBOLS * 2);
192
+ const topByChurn = db.getTopSymbolsByChurn(repoId, DEFAULT_MAX_HOTSPOT_SYMBOLS * 2);
193
+ // Group exported symbols by directory
194
+ const exportsByDir = new Map();
195
+ for (const exp of exportedSymbols) {
196
+ const dir = exp.directory;
197
+ if (!exportsByDir.has(dir)) {
198
+ exportsByDir.set(dir, []);
199
+ }
200
+ exportsByDir.get(dir).push(exp.name);
201
+ }
202
+ // Group top symbols by directory
203
+ const topFanInByDir = new Map();
204
+ for (const sym of topByFanIn) {
205
+ const dir = sym.directory;
206
+ if (!topFanInByDir.has(dir)) {
207
+ topFanInByDir.set(dir, []);
208
+ }
209
+ const refs = topFanInByDir.get(dir);
210
+ if (refs.length < 3) {
211
+ refs.push(toCompactRef(sym));
212
+ }
213
+ }
214
+ const topChurnByDir = new Map();
215
+ for (const sym of topByChurn) {
216
+ const dir = sym.directory;
217
+ if (!topChurnByDir.has(dir)) {
218
+ topChurnByDir.set(dir, []);
219
+ }
220
+ const refs = topChurnByDir.get(dir);
221
+ if (refs.length < 3) {
222
+ refs.push(toCompactRef(sym));
223
+ }
224
+ }
225
+ // Build summaries
226
+ const summaries = [];
227
+ const allDirectories = new Set();
228
+ for (const agg of dirAggregates) {
229
+ // Apply directory filter if specified
230
+ if (directoryFilter && directoryFilter.length > 0) {
231
+ const matches = directoryFilter.some((pattern) => {
232
+ if (pattern.includes("*")) {
233
+ const regex = new RegExp("^" + pattern.replace(/\*/g, ".*") + "$");
234
+ return regex.test(agg.directory);
235
+ }
236
+ return agg.directory.startsWith(pattern);
237
+ });
238
+ if (!matches)
239
+ continue;
240
+ }
241
+ allDirectories.add(agg.directory);
242
+ const summary = {
243
+ path: agg.directory || "(root)",
244
+ fileCount: agg.file_count,
245
+ symbolCount: agg.symbol_count,
246
+ exportedCount: agg.exported_count,
247
+ byKind: {
248
+ function: agg.function_count,
249
+ class: agg.class_count,
250
+ interface: agg.interface_count,
251
+ type: agg.type_count,
252
+ method: agg.method_count,
253
+ variable: agg.variable_count,
254
+ module: agg.module_count,
255
+ constructor: agg.constructor_count,
256
+ },
257
+ exports: exportsByDir.get(agg.directory) ?? [],
258
+ topByFanIn: topFanInByDir.get(agg.directory) ?? [],
259
+ topByChurn: topChurnByDir.get(agg.directory) ?? [],
260
+ estimatedFullTokens: agg.symbol_count * SYMBOL_TOKEN_MAX,
261
+ summaryTokens: 0, // Will be calculated below
262
+ };
263
+ summary.summaryTokens = estimateDirectorySummaryTokens(summary);
264
+ summaries.push(summary);
265
+ if (summaries.length >= maxDirectories)
266
+ break;
267
+ }
268
+ // Add subdirectories info
269
+ for (const summary of summaries) {
270
+ const subdirs = Array.from(allDirectories).filter((d) => {
271
+ if (d === summary.path)
272
+ return false;
273
+ const parent = summary.path === "(root)" ? "" : summary.path;
274
+ if (!d.startsWith(parent))
275
+ return false;
276
+ const remainder = d.slice(parent.length);
277
+ // Only immediate children
278
+ const parts = remainder.split("/").filter(Boolean);
279
+ return parts.length === 1;
280
+ });
281
+ if (subdirs.length > 0) {
282
+ summary.subdirectories = subdirs;
283
+ }
284
+ }
285
+ return summaries;
286
+ }
287
+ /**
288
+ * Builds codebase hotspot analysis.
289
+ */
290
+ function buildCodebaseHotspots(repoId) {
291
+ const topByFanIn = db.getTopSymbolsByFanIn(repoId, DEFAULT_MAX_HOTSPOT_SYMBOLS);
292
+ const topByChurn = db.getTopSymbolsByChurn(repoId, DEFAULT_MAX_HOTSPOT_SYMBOLS);
293
+ const largestFiles = db.getFilesBySymbolCount(repoId, DEFAULT_MAX_HOTSPOT_SYMBOLS);
294
+ const mostConnected = db.getFilesByEdgeCount(repoId, DEFAULT_MAX_HOTSPOT_SYMBOLS);
295
+ return {
296
+ mostDepended: topByFanIn.map(toCompactRef),
297
+ mostChanged: topByChurn.map(toCompactRef),
298
+ largestFiles: largestFiles.map((f) => ({
299
+ file: f.rel_path,
300
+ symbolCount: f.symbol_count,
301
+ })),
302
+ mostConnected: mostConnected.map((f) => ({
303
+ file: f.rel_path,
304
+ edgeCount: f.edge_count,
305
+ })),
306
+ };
307
+ }
308
+ /**
309
+ * Identifies architectural layers from directory structure.
310
+ */
311
+ function identifyArchitecturalLayers(directories) {
312
+ const layers = [];
313
+ const layerPatterns = [
314
+ { pattern: /^src\/?(api|routes|controllers|handlers)\/?/, layer: "API" },
315
+ { pattern: /^src\/?(services|domain|core)\/?/, layer: "Service" },
316
+ { pattern: /^src\/?(db|data|models|entities|repositories)\/?/, layer: "Data" },
317
+ { pattern: /^src\/?(utils?|helpers?|lib|common)\/?/, layer: "Utilities" },
318
+ { pattern: /^src\/?(cli|commands)\/?/, layer: "CLI" },
319
+ { pattern: /^src\/?(config|settings)\/?/, layer: "Configuration" },
320
+ { pattern: /^src\/?(mcp|protocol)\/?/, layer: "Protocol" },
321
+ { pattern: /^src\/?(indexer|parser|analyzer)\/?/, layer: "Indexer" },
322
+ { pattern: /^src\/?(graph|slice)\/?/, layer: "Graph" },
323
+ { pattern: /^tests?\/?/, layer: "Tests" },
324
+ ];
325
+ for (const dir of directories) {
326
+ for (const { pattern, layer } of layerPatterns) {
327
+ if (pattern.test(dir.path) && !layers.includes(layer)) {
328
+ layers.push(layer);
329
+ }
330
+ }
331
+ }
332
+ return layers;
333
+ }
334
+ /**
335
+ * Finds entry point files.
336
+ */
337
+ function findEntryPoints(repoId) {
338
+ const entryPatterns = [
339
+ "main.ts",
340
+ "index.ts",
341
+ "server.ts",
342
+ "app.ts",
343
+ "cli.ts",
344
+ "main.js",
345
+ "index.js",
346
+ "server.js",
347
+ "app.js",
348
+ "cli.js",
349
+ ];
350
+ const files = db.getFilesByRepo(repoId);
351
+ const entryPoints = [];
352
+ for (const file of files) {
353
+ const fileName = file.rel_path.split("/").pop() ?? "";
354
+ if (entryPatterns.includes(fileName)) {
355
+ entryPoints.push(file.rel_path);
356
+ }
357
+ }
358
+ return entryPoints;
359
+ }
360
+ /**
361
+ * Calculates total token count for overview.
362
+ */
363
+ function calculateOverviewTokens(_stats, directories, hotspots) {
364
+ // Base stats section (stats overhead is fixed)
365
+ let tokens = 50;
366
+ // Directory summaries
367
+ for (const dir of directories) {
368
+ tokens += dir.summaryTokens;
369
+ }
370
+ // Hotspots
371
+ if (hotspots) {
372
+ tokens += hotspots.mostDepended.length * COMPACT_SYMBOL_REF_TOKENS;
373
+ tokens += hotspots.mostChanged.length * COMPACT_SYMBOL_REF_TOKENS;
374
+ tokens += hotspots.largestFiles.length * 5;
375
+ tokens += hotspots.mostConnected.length * 5;
376
+ }
377
+ return tokens;
378
+ }
379
+ //# sourceMappingURL=overview.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"overview.js","sourceRoot":"","sources":["../../src/graph/overview.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import type { SymbolRow, MetricsRow, FileRow } from "../db/schema.js";
2
+ export interface SliceContext {
3
+ query: string;
4
+ queryTokens?: string[];
5
+ stackTrace?: string;
6
+ failingTestPath?: string;
7
+ editedFiles?: string[];
8
+ entrySymbols?: string[];
9
+ edgeWeights?: {
10
+ call: number;
11
+ import: number;
12
+ config: number;
13
+ };
14
+ }
15
+ export interface ScoreResult {
16
+ symbolId: string;
17
+ score: number;
18
+ factors: Map<string, number>;
19
+ }
20
+ export declare function calculateQueryOverlap(symbol: SymbolRow, query: string, queryTokens?: string[]): number;
21
+ export declare function calculateStacktraceLocality(symbol: SymbolRow, stackTrace: string): number;
22
+ export declare function calculateHotness(metrics: MetricsRow | null): number;
23
+ export declare function scoreSymbol(symbol: SymbolRow, context: SliceContext): number;
24
+ export declare function scoreSymbolWithMetrics(symbol: SymbolRow, context: SliceContext, metrics: MetricsRow | null, file: FileRow | undefined): number;
25
+ export declare function normalizeScores(scores: number[]): number[];
26
+ export declare function combineScores(scores: Map<string, number>, weights: Map<string, number>): number;
27
+ //# sourceMappingURL=score.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"score.d.ts","sourceRoot":"","sources":["../../src/graph/score.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAItE,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,WAAW,CAAC,EAAE;QACZ,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,SAAS,EACjB,KAAK,EAAE,MAAM,EACb,WAAW,CAAC,EAAE,MAAM,EAAE,GACrB,MAAM,CAgBR;AAED,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,SAAS,EACjB,UAAU,EAAE,MAAM,GACjB,MAAM,CA4BR;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI,GAAG,MAAM,CAiBnE;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,YAAY,GAAG,MAAM,CAoC5E;AAED,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,YAAY,EACrB,OAAO,EAAE,UAAU,GAAG,IAAI,EAC1B,IAAI,EAAE,OAAO,GAAG,SAAS,GACxB,MAAM,CA8BR;AAkID,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAY1D;AAED,wBAAgB,aAAa,CAC3B,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAC3B,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAC3B,MAAM,CAWR"}