@vpxa/kb 0.1.13 → 0.1.16

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 (490) hide show
  1. package/README.md +65 -12
  2. package/package.json +14 -7
  3. package/packages/analyzers/dist/blast-radius-analyzer.d.ts +17 -21
  4. package/packages/analyzers/dist/blast-radius-analyzer.js +5 -12
  5. package/packages/analyzers/dist/dependency-analyzer.d.ts +31 -28
  6. package/packages/analyzers/dist/dependency-analyzer.js +6 -9
  7. package/packages/analyzers/dist/diagram-generator.d.ts +12 -9
  8. package/packages/analyzers/dist/diagram-generator.js +2 -4
  9. package/packages/analyzers/dist/entry-point-analyzer.d.ts +39 -36
  10. package/packages/analyzers/dist/entry-point-analyzer.js +4 -6
  11. package/packages/analyzers/dist/index.d.ts +12 -14
  12. package/packages/analyzers/dist/index.js +1 -1
  13. package/packages/analyzers/dist/knowledge-producer.d.ts +34 -26
  14. package/packages/analyzers/dist/knowledge-producer.js +17 -15
  15. package/packages/analyzers/dist/pattern-analyzer.d.ts +14 -11
  16. package/packages/analyzers/dist/pattern-analyzer.js +2 -5
  17. package/packages/analyzers/dist/regex-call-graph.d.ts +6 -13
  18. package/packages/analyzers/dist/regex-call-graph.js +1 -1
  19. package/packages/analyzers/dist/structure-analyzer.d.ts +13 -10
  20. package/packages/analyzers/dist/structure-analyzer.js +2 -4
  21. package/packages/analyzers/dist/symbol-analyzer.d.ts +13 -9
  22. package/packages/analyzers/dist/symbol-analyzer.js +9 -13
  23. package/packages/analyzers/dist/ts-call-graph.d.ts +16 -14
  24. package/packages/analyzers/dist/ts-call-graph.js +1 -1
  25. package/packages/analyzers/dist/types.d.ts +82 -80
  26. package/packages/analyzers/dist/types.js +1 -0
  27. package/packages/chunker/dist/call-graph-extractor.d.ts +15 -12
  28. package/packages/chunker/dist/call-graph-extractor.js +1 -1
  29. package/packages/chunker/dist/chunker-factory.d.ts +16 -4
  30. package/packages/chunker/dist/chunker-factory.js +1 -1
  31. package/packages/chunker/dist/chunker.interface.d.ts +8 -5
  32. package/packages/chunker/dist/chunker.interface.js +1 -0
  33. package/packages/chunker/dist/code-chunker.d.ts +16 -13
  34. package/packages/chunker/dist/code-chunker.js +11 -14
  35. package/packages/chunker/dist/extractors/call-extractor.d.ts +24 -0
  36. package/packages/chunker/dist/extractors/call-extractor.js +1 -0
  37. package/packages/chunker/dist/extractors/entry-point-detector.d.ts +14 -0
  38. package/packages/chunker/dist/extractors/entry-point-detector.js +1 -0
  39. package/packages/chunker/dist/extractors/import-extractor.d.ts +14 -0
  40. package/packages/chunker/dist/extractors/import-extractor.js +1 -0
  41. package/packages/chunker/dist/extractors/pattern-detector.d.ts +14 -0
  42. package/packages/chunker/dist/extractors/pattern-detector.js +1 -0
  43. package/packages/chunker/dist/extractors/scope-resolver.d.ts +26 -0
  44. package/packages/chunker/dist/extractors/scope-resolver.js +1 -0
  45. package/packages/chunker/dist/extractors/symbol-extractor.d.ts +14 -0
  46. package/packages/chunker/dist/extractors/symbol-extractor.js +1 -0
  47. package/packages/chunker/dist/extractors/types.d.ts +36 -0
  48. package/packages/chunker/dist/extractors/types.js +1 -0
  49. package/packages/chunker/dist/generic-chunker.d.ts +14 -11
  50. package/packages/chunker/dist/generic-chunker.js +5 -5
  51. package/packages/chunker/dist/index.d.ts +19 -8
  52. package/packages/chunker/dist/index.js +1 -1
  53. package/packages/chunker/dist/markdown-chunker.d.ts +16 -13
  54. package/packages/chunker/dist/markdown-chunker.js +3 -10
  55. package/packages/chunker/dist/wasm/languages.d.ts +18 -0
  56. package/packages/chunker/dist/wasm/languages.js +1 -0
  57. package/packages/chunker/dist/wasm/query-executor.d.ts +70 -0
  58. package/packages/chunker/dist/wasm/query-executor.js +1 -0
  59. package/packages/chunker/dist/wasm/runtime.d.ts +44 -0
  60. package/packages/chunker/dist/wasm/runtime.js +1 -0
  61. package/packages/chunker/dist/wasm/types.d.ts +84 -0
  62. package/packages/chunker/dist/wasm/types.js +1 -0
  63. package/packages/chunker/dist/wasm-chunker.d.ts +23 -0
  64. package/packages/chunker/dist/wasm-chunker.js +6 -0
  65. package/packages/chunker/src/queries/go/calls.scm +11 -0
  66. package/packages/chunker/src/queries/go/entry-points.scm +20 -0
  67. package/packages/chunker/src/queries/go/imports.scm +6 -0
  68. package/packages/chunker/src/queries/go/patterns.scm +25 -0
  69. package/packages/chunker/src/queries/go/symbols.scm +26 -0
  70. package/packages/chunker/src/queries/java/calls.scm +10 -0
  71. package/packages/chunker/src/queries/java/entry-points.scm +27 -0
  72. package/packages/chunker/src/queries/java/imports.scm +11 -0
  73. package/packages/chunker/src/queries/java/patterns.scm +27 -0
  74. package/packages/chunker/src/queries/java/symbols.scm +28 -0
  75. package/packages/chunker/src/queries/javascript/calls.scm +21 -0
  76. package/packages/chunker/src/queries/javascript/entry-points.scm +31 -0
  77. package/packages/chunker/src/queries/javascript/imports.scm +32 -0
  78. package/packages/chunker/src/queries/javascript/patterns.scm +28 -0
  79. package/packages/chunker/src/queries/javascript/symbols.scm +52 -0
  80. package/packages/chunker/src/queries/python/calls.scm +11 -0
  81. package/packages/chunker/src/queries/python/entry-points.scm +21 -0
  82. package/packages/chunker/src/queries/python/imports.scm +14 -0
  83. package/packages/chunker/src/queries/python/patterns.scm +25 -0
  84. package/packages/chunker/src/queries/python/symbols.scm +17 -0
  85. package/packages/chunker/src/queries/rust/calls.scm +20 -0
  86. package/packages/chunker/src/queries/rust/entry-points.scm +7 -0
  87. package/packages/chunker/src/queries/rust/imports.scm +26 -0
  88. package/packages/chunker/src/queries/rust/patterns.scm +18 -0
  89. package/packages/chunker/src/queries/rust/symbols.scm +73 -0
  90. package/packages/chunker/src/queries/typescript/calls.scm +21 -0
  91. package/packages/chunker/src/queries/typescript/entry-points.scm +48 -0
  92. package/packages/chunker/src/queries/typescript/imports.scm +35 -0
  93. package/packages/chunker/src/queries/typescript/patterns.scm +47 -0
  94. package/packages/chunker/src/queries/typescript/symbols.scm +79 -0
  95. package/packages/chunker/wasm/tree-sitter-go.wasm +0 -0
  96. package/packages/chunker/wasm/tree-sitter-java.wasm +0 -0
  97. package/packages/chunker/wasm/tree-sitter-javascript.wasm +0 -0
  98. package/packages/chunker/wasm/tree-sitter-python.wasm +0 -0
  99. package/packages/chunker/wasm/tree-sitter-rust.wasm +0 -0
  100. package/packages/chunker/wasm/tree-sitter-typescript.wasm +0 -0
  101. package/packages/chunker/wasm/tree-sitter.wasm +0 -0
  102. package/packages/cli/dist/commands/analyze.d.ts +6 -3
  103. package/packages/cli/dist/commands/analyze.js +2 -3
  104. package/packages/cli/dist/commands/context-cmds.d.ts +6 -3
  105. package/packages/cli/dist/commands/context-cmds.js +1 -1
  106. package/packages/cli/dist/commands/environment.d.ts +6 -3
  107. package/packages/cli/dist/commands/environment.js +1 -2
  108. package/packages/cli/dist/commands/execution.d.ts +6 -3
  109. package/packages/cli/dist/commands/execution.js +1 -1
  110. package/packages/cli/dist/commands/graph.d.ts +6 -3
  111. package/packages/cli/dist/commands/graph.js +5 -6
  112. package/packages/cli/dist/commands/init/adapters.d.ts +28 -0
  113. package/packages/cli/dist/commands/init/adapters.js +1 -0
  114. package/packages/cli/dist/commands/init/config.d.ts +10 -0
  115. package/packages/cli/dist/commands/init/config.js +3 -0
  116. package/packages/cli/dist/commands/init/constants.d.ts +18 -0
  117. package/packages/cli/dist/commands/init/constants.js +1 -0
  118. package/packages/cli/dist/commands/init/curated.d.ts +7 -0
  119. package/packages/cli/dist/commands/init/curated.js +1 -0
  120. package/packages/cli/dist/commands/init/global.d.ts +34 -0
  121. package/packages/cli/dist/commands/init/global.js +5 -0
  122. package/packages/cli/dist/commands/init/index.d.ts +28 -0
  123. package/packages/cli/dist/commands/init/index.js +5 -0
  124. package/packages/cli/dist/commands/init/scaffold.d.ts +23 -0
  125. package/packages/cli/dist/commands/init/scaffold.js +1 -0
  126. package/packages/cli/dist/commands/init/templates.d.ts +9 -0
  127. package/packages/cli/dist/commands/init/templates.js +165 -0
  128. package/packages/cli/dist/commands/knowledge.d.ts +6 -3
  129. package/packages/cli/dist/commands/knowledge.js +1 -1
  130. package/packages/cli/dist/commands/search.d.ts +6 -3
  131. package/packages/cli/dist/commands/search.js +1 -8
  132. package/packages/cli/dist/commands/system.d.ts +6 -3
  133. package/packages/cli/dist/commands/system.js +4 -7
  134. package/packages/cli/dist/commands/workspace.d.ts +6 -3
  135. package/packages/cli/dist/commands/workspace.js +1 -2
  136. package/packages/cli/dist/context.d.ts +7 -5
  137. package/packages/cli/dist/context.js +1 -1
  138. package/packages/cli/dist/helpers.d.ts +51 -48
  139. package/packages/cli/dist/helpers.js +5 -5
  140. package/packages/cli/dist/index.d.ts +4 -2
  141. package/packages/cli/dist/index.js +2 -2
  142. package/packages/cli/dist/kb-init.d.ts +48 -51
  143. package/packages/cli/dist/kb-init.js +1 -1
  144. package/packages/cli/dist/types.d.ts +8 -6
  145. package/packages/cli/dist/types.js +1 -0
  146. package/packages/core/dist/constants.d.ts +58 -34
  147. package/packages/core/dist/constants.js +1 -1
  148. package/packages/core/dist/content-detector.d.ts +8 -8
  149. package/packages/core/dist/content-detector.js +1 -1
  150. package/packages/core/dist/errors.d.ts +15 -13
  151. package/packages/core/dist/errors.js +1 -1
  152. package/packages/core/dist/global-registry.d.ts +62 -0
  153. package/packages/core/dist/global-registry.js +1 -0
  154. package/packages/core/dist/index.d.ts +7 -6
  155. package/packages/core/dist/index.js +1 -1
  156. package/packages/core/dist/logger.d.ts +19 -8
  157. package/packages/core/dist/logger.js +1 -1
  158. package/packages/core/dist/types.d.ts +107 -92
  159. package/packages/core/dist/types.js +1 -0
  160. package/packages/embeddings/dist/embedder.interface.d.ts +22 -20
  161. package/packages/embeddings/dist/embedder.interface.js +1 -0
  162. package/packages/embeddings/dist/index.d.ts +3 -3
  163. package/packages/embeddings/dist/index.js +1 -1
  164. package/packages/embeddings/dist/onnx-embedder.d.ts +21 -23
  165. package/packages/embeddings/dist/onnx-embedder.js +1 -1
  166. package/packages/enterprise-bridge/dist/cache.d.ts +28 -0
  167. package/packages/enterprise-bridge/dist/cache.js +1 -0
  168. package/packages/enterprise-bridge/dist/er-client.d.ts +37 -0
  169. package/packages/enterprise-bridge/dist/er-client.js +1 -0
  170. package/packages/enterprise-bridge/dist/evolution-collector.d.ts +62 -0
  171. package/packages/enterprise-bridge/dist/evolution-collector.js +1 -0
  172. package/packages/enterprise-bridge/dist/index.d.ts +8 -0
  173. package/packages/enterprise-bridge/dist/index.js +1 -0
  174. package/packages/enterprise-bridge/dist/policy-store.d.ts +45 -0
  175. package/packages/enterprise-bridge/dist/policy-store.js +1 -0
  176. package/packages/enterprise-bridge/dist/push-adapter.d.ts +23 -0
  177. package/packages/enterprise-bridge/dist/push-adapter.js +1 -0
  178. package/packages/enterprise-bridge/dist/result-merger.d.ts +14 -0
  179. package/packages/enterprise-bridge/dist/result-merger.js +1 -0
  180. package/packages/enterprise-bridge/dist/types.d.ts +81 -0
  181. package/packages/enterprise-bridge/dist/types.js +1 -0
  182. package/packages/indexer/dist/file-hasher.d.ts +5 -3
  183. package/packages/indexer/dist/file-hasher.js +1 -1
  184. package/packages/indexer/dist/filesystem-crawler.d.ts +23 -21
  185. package/packages/indexer/dist/filesystem-crawler.js +1 -1
  186. package/packages/indexer/dist/graph-extractor.d.ts +9 -13
  187. package/packages/indexer/dist/graph-extractor.js +1 -1
  188. package/packages/indexer/dist/incremental-indexer.d.ts +49 -44
  189. package/packages/indexer/dist/incremental-indexer.js +1 -1
  190. package/packages/indexer/dist/index.d.ts +5 -5
  191. package/packages/indexer/dist/index.js +1 -1
  192. package/packages/server/dist/api.d.ts +3 -8
  193. package/packages/server/dist/api.js +1 -1
  194. package/packages/server/dist/config.d.ts +6 -3
  195. package/packages/server/dist/config.js +1 -1
  196. package/packages/server/dist/cross-workspace.d.ts +43 -0
  197. package/packages/server/dist/cross-workspace.js +1 -0
  198. package/packages/server/dist/curated-manager.d.ts +80 -78
  199. package/packages/server/dist/curated-manager.js +5 -10
  200. package/packages/server/dist/index.d.ts +1 -2
  201. package/packages/server/dist/index.js +1 -1
  202. package/packages/server/dist/replay-interceptor.d.ts +6 -7
  203. package/packages/server/dist/replay-interceptor.js +1 -1
  204. package/packages/server/dist/resources/resources.d.ts +7 -4
  205. package/packages/server/dist/resources/resources.js +2 -2
  206. package/packages/server/dist/server.d.ts +37 -25
  207. package/packages/server/dist/server.js +1 -1
  208. package/packages/server/dist/tools/analyze.tools.d.ts +14 -11
  209. package/packages/server/dist/tools/analyze.tools.js +1 -3
  210. package/packages/server/dist/tools/audit.tool.d.ts +8 -5
  211. package/packages/server/dist/tools/audit.tool.js +1 -4
  212. package/packages/server/dist/tools/bridge.tools.d.ts +34 -0
  213. package/packages/server/dist/tools/bridge.tools.js +15 -0
  214. package/packages/server/dist/tools/evolution.tools.d.ts +7 -0
  215. package/packages/server/dist/tools/evolution.tools.js +5 -0
  216. package/packages/server/dist/tools/forge.tools.d.ts +13 -12
  217. package/packages/server/dist/tools/forge.tools.js +10 -13
  218. package/packages/server/dist/tools/forget.tool.d.ts +7 -4
  219. package/packages/server/dist/tools/forget.tool.js +1 -7
  220. package/packages/server/dist/tools/graph.tool.d.ts +7 -4
  221. package/packages/server/dist/tools/graph.tool.js +4 -5
  222. package/packages/server/dist/tools/list.tool.d.ts +7 -4
  223. package/packages/server/dist/tools/list.tool.js +2 -8
  224. package/packages/server/dist/tools/lookup.tool.d.ts +7 -4
  225. package/packages/server/dist/tools/lookup.tool.js +2 -9
  226. package/packages/server/dist/tools/onboard.tool.d.ts +8 -5
  227. package/packages/server/dist/tools/onboard.tool.js +2 -2
  228. package/packages/server/dist/tools/policy.tools.d.ts +7 -0
  229. package/packages/server/dist/tools/policy.tools.js +2 -0
  230. package/packages/server/dist/tools/produce.tool.d.ts +6 -3
  231. package/packages/server/dist/tools/produce.tool.js +2 -2
  232. package/packages/server/dist/tools/read.tool.d.ts +7 -4
  233. package/packages/server/dist/tools/read.tool.js +2 -6
  234. package/packages/server/dist/tools/reindex.tool.d.ts +10 -7
  235. package/packages/server/dist/tools/reindex.tool.js +3 -2
  236. package/packages/server/dist/tools/remember.tool.d.ts +8 -4
  237. package/packages/server/dist/tools/remember.tool.js +3 -5
  238. package/packages/server/dist/tools/replay.tool.d.ts +6 -3
  239. package/packages/server/dist/tools/replay.tool.js +2 -6
  240. package/packages/server/dist/tools/search.tool.d.ts +10 -5
  241. package/packages/server/dist/tools/search.tool.js +6 -22
  242. package/packages/server/dist/tools/status.tool.d.ts +12 -4
  243. package/packages/server/dist/tools/status.tool.js +2 -3
  244. package/packages/server/dist/tools/toolkit.tools.d.ts +36 -35
  245. package/packages/server/dist/tools/toolkit.tools.js +20 -24
  246. package/packages/server/dist/tools/update.tool.d.ts +7 -4
  247. package/packages/server/dist/tools/update.tool.js +1 -6
  248. package/packages/server/dist/tools/utility.tools.d.ts +15 -15
  249. package/packages/server/dist/tools/utility.tools.js +10 -23
  250. package/packages/server/dist/version-check.d.ts +5 -2
  251. package/packages/server/dist/version-check.js +1 -1
  252. package/packages/store/dist/graph-store.interface.d.ts +89 -87
  253. package/packages/store/dist/graph-store.interface.js +1 -0
  254. package/packages/store/dist/index.d.ts +6 -6
  255. package/packages/store/dist/index.js +1 -1
  256. package/packages/store/dist/lance-store.d.ts +37 -31
  257. package/packages/store/dist/lance-store.js +1 -1
  258. package/packages/store/dist/sqlite-graph-store.d.ts +43 -47
  259. package/packages/store/dist/sqlite-graph-store.js +13 -13
  260. package/packages/store/dist/store-factory.d.ts +11 -8
  261. package/packages/store/dist/store-factory.js +1 -1
  262. package/packages/store/dist/store.interface.d.ts +47 -47
  263. package/packages/store/dist/store.interface.js +1 -0
  264. package/packages/tools/dist/audit.d.ts +61 -62
  265. package/packages/tools/dist/audit.js +4 -5
  266. package/packages/tools/dist/batch.d.ts +20 -18
  267. package/packages/tools/dist/batch.js +1 -1
  268. package/packages/tools/dist/changelog.d.ts +29 -27
  269. package/packages/tools/dist/changelog.js +2 -2
  270. package/packages/tools/dist/check.d.ts +42 -39
  271. package/packages/tools/dist/check.js +2 -2
  272. package/packages/tools/dist/checkpoint.d.ts +17 -15
  273. package/packages/tools/dist/checkpoint.js +1 -2
  274. package/packages/tools/dist/codemod.d.ts +35 -33
  275. package/packages/tools/dist/codemod.js +2 -2
  276. package/packages/tools/dist/compact.d.ts +34 -38
  277. package/packages/tools/dist/compact.js +2 -2
  278. package/packages/tools/dist/data-transform.d.ts +10 -8
  279. package/packages/tools/dist/data-transform.js +1 -1
  280. package/packages/tools/dist/dead-symbols.d.ts +29 -26
  281. package/packages/tools/dist/dead-symbols.js +2 -2
  282. package/packages/tools/dist/delegate.d.ts +26 -24
  283. package/packages/tools/dist/delegate.js +1 -5
  284. package/packages/tools/dist/diff-parse.d.ts +24 -22
  285. package/packages/tools/dist/diff-parse.js +3 -3
  286. package/packages/tools/dist/digest.d.ts +43 -46
  287. package/packages/tools/dist/digest.js +4 -5
  288. package/packages/tools/dist/dogfood-log.d.ts +49 -0
  289. package/packages/tools/dist/dogfood-log.js +2 -0
  290. package/packages/tools/dist/encode.d.ts +11 -9
  291. package/packages/tools/dist/encode.js +1 -1
  292. package/packages/tools/dist/env-info.d.ts +25 -23
  293. package/packages/tools/dist/env-info.js +1 -1
  294. package/packages/tools/dist/eval.d.ts +13 -11
  295. package/packages/tools/dist/eval.js +2 -3
  296. package/packages/tools/dist/evidence-map.d.ts +64 -62
  297. package/packages/tools/dist/evidence-map.js +2 -3
  298. package/packages/tools/dist/file-cache.d.ts +41 -0
  299. package/packages/tools/dist/file-cache.js +3 -0
  300. package/packages/tools/dist/file-summary.d.ts +50 -30
  301. package/packages/tools/dist/file-summary.js +2 -2
  302. package/packages/tools/dist/file-walk.d.ts +6 -4
  303. package/packages/tools/dist/file-walk.js +1 -1
  304. package/packages/tools/dist/find-examples.d.ts +26 -22
  305. package/packages/tools/dist/find-examples.js +3 -3
  306. package/packages/tools/dist/find.d.ts +39 -41
  307. package/packages/tools/dist/find.js +1 -1
  308. package/packages/tools/dist/forge-classify.d.ts +35 -39
  309. package/packages/tools/dist/forge-classify.js +2 -2
  310. package/packages/tools/dist/forge-ground.d.ts +58 -61
  311. package/packages/tools/dist/forge-ground.js +1 -1
  312. package/packages/tools/dist/git-context.d.ts +22 -20
  313. package/packages/tools/dist/git-context.js +3 -3
  314. package/packages/tools/dist/graph-query.d.ts +75 -79
  315. package/packages/tools/dist/graph-query.js +1 -1
  316. package/packages/tools/dist/guide.d.ts +14 -12
  317. package/packages/tools/dist/guide.js +1 -1
  318. package/packages/tools/dist/health.d.ts +13 -11
  319. package/packages/tools/dist/health.js +2 -2
  320. package/packages/tools/dist/http-request.d.ts +20 -18
  321. package/packages/tools/dist/http-request.js +1 -1
  322. package/packages/tools/dist/index.d.ts +55 -53
  323. package/packages/tools/dist/index.js +1 -1
  324. package/packages/tools/dist/lane.d.ts +28 -26
  325. package/packages/tools/dist/lane.js +6 -7
  326. package/packages/tools/dist/measure.d.ts +34 -30
  327. package/packages/tools/dist/measure.js +2 -2
  328. package/packages/tools/dist/onboard.d.ts +29 -27
  329. package/packages/tools/dist/onboard.js +17 -41
  330. package/packages/tools/dist/parse-output.d.ts +48 -46
  331. package/packages/tools/dist/parse-output.js +2 -2
  332. package/packages/tools/dist/path-resolver.d.ts +4 -2
  333. package/packages/tools/dist/path-resolver.js +1 -1
  334. package/packages/tools/dist/process-manager.d.ts +18 -16
  335. package/packages/tools/dist/process-manager.js +1 -1
  336. package/packages/tools/dist/queue.d.ts +28 -26
  337. package/packages/tools/dist/queue.js +1 -2
  338. package/packages/tools/dist/regex-test.d.ts +26 -24
  339. package/packages/tools/dist/regex-test.js +1 -1
  340. package/packages/tools/dist/rename.d.ts +28 -26
  341. package/packages/tools/dist/rename.js +2 -2
  342. package/packages/tools/dist/replay.d.ts +33 -31
  343. package/packages/tools/dist/replay.js +4 -6
  344. package/packages/tools/dist/response-envelope.d.ts +32 -30
  345. package/packages/tools/dist/response-envelope.js +1 -1
  346. package/packages/tools/dist/schema-validate.d.ts +15 -13
  347. package/packages/tools/dist/schema-validate.js +1 -1
  348. package/packages/tools/dist/scope-map.d.ts +45 -48
  349. package/packages/tools/dist/scope-map.js +1 -1
  350. package/packages/tools/dist/snippet.d.ts +26 -25
  351. package/packages/tools/dist/snippet.js +1 -1
  352. package/packages/tools/dist/stash.d.ts +13 -11
  353. package/packages/tools/dist/stash.js +1 -2
  354. package/packages/tools/dist/stratum-card.d.ts +27 -28
  355. package/packages/tools/dist/stratum-card.js +3 -5
  356. package/packages/tools/dist/symbol.d.ts +31 -26
  357. package/packages/tools/dist/symbol.js +3 -3
  358. package/packages/tools/dist/test-run.d.ts +19 -16
  359. package/packages/tools/dist/test-run.js +2 -2
  360. package/packages/tools/dist/text-utils.d.ts +6 -4
  361. package/packages/tools/dist/text-utils.js +2 -2
  362. package/packages/tools/dist/time-utils.d.ts +15 -13
  363. package/packages/tools/dist/time-utils.js +1 -1
  364. package/packages/tools/dist/trace.d.ts +26 -21
  365. package/packages/tools/dist/trace.js +2 -2
  366. package/packages/tools/dist/truncation.d.ts +6 -4
  367. package/packages/tools/dist/truncation.js +6 -13
  368. package/packages/tools/dist/watch.d.ts +28 -26
  369. package/packages/tools/dist/watch.js +1 -1
  370. package/packages/tools/dist/web-fetch.d.ts +35 -33
  371. package/packages/tools/dist/web-fetch.js +6 -12
  372. package/packages/tools/dist/web-search.d.ts +16 -14
  373. package/packages/tools/dist/web-search.js +1 -1
  374. package/packages/tools/dist/workset.d.ts +19 -17
  375. package/packages/tools/dist/workset.js +1 -2
  376. package/packages/tui/dist/App-CYLNJLr6.js +2 -0
  377. package/packages/tui/dist/App.d.ts +11 -6
  378. package/packages/tui/dist/App.js +1 -450
  379. package/packages/tui/dist/CuratedPanel-sYdZAICX.js +2 -0
  380. package/packages/tui/dist/LogPanel-DtMnoyXT.js +3 -0
  381. package/packages/tui/dist/SearchPanel-DREo6zgt.js +2 -0
  382. package/packages/tui/dist/StatusPanel-2ex8fLOO.js +2 -0
  383. package/packages/tui/dist/chunk-D6axbAb-.js +2 -0
  384. package/packages/tui/dist/devtools-DUyj952l.js +7 -0
  385. package/packages/tui/dist/embedder.interface-D4ew0HPW.d.ts +28 -0
  386. package/packages/tui/dist/index-B9VpfVPP.d.ts +13 -0
  387. package/packages/tui/dist/index.d.ts +3 -19
  388. package/packages/tui/dist/index.js +1 -476
  389. package/packages/tui/dist/jsx-runtime-Cof-kwFn.js +316 -0
  390. package/packages/tui/dist/panels/CuratedPanel.d.ts +11 -6
  391. package/packages/tui/dist/panels/CuratedPanel.js +1 -371
  392. package/packages/tui/dist/panels/LogPanel.d.ts +7 -3
  393. package/packages/tui/dist/panels/LogPanel.js +1 -449
  394. package/packages/tui/dist/panels/SearchPanel.d.ts +14 -8
  395. package/packages/tui/dist/panels/SearchPanel.js +1 -372
  396. package/packages/tui/dist/panels/StatusPanel.d.ts +11 -6
  397. package/packages/tui/dist/panels/StatusPanel.js +1 -371
  398. package/packages/tui/dist/store.interface-CnY6SPOH.d.ts +150 -0
  399. package/scaffold/adapters/claude-code.mjs +20 -0
  400. package/scaffold/adapters/copilot.mjs +320 -0
  401. package/scaffold/copilot/agents/Architect-Reviewer-Alpha.agent.md +21 -0
  402. package/scaffold/copilot/agents/Architect-Reviewer-Beta.agent.md +21 -0
  403. package/scaffold/copilot/agents/Documenter.agent.md +42 -0
  404. package/scaffold/copilot/agents/Orchestrator.agent.md +104 -0
  405. package/scaffold/copilot/agents/Planner.agent.md +54 -0
  406. package/scaffold/copilot/agents/Refactor.agent.md +36 -0
  407. package/scaffold/copilot/agents/Researcher-Alpha.agent.md +20 -0
  408. package/scaffold/copilot/agents/Researcher-Beta.agent.md +20 -0
  409. package/scaffold/copilot/agents/Researcher-Delta.agent.md +20 -0
  410. package/scaffold/copilot/agents/Researcher-Gamma.agent.md +20 -0
  411. package/scaffold/definitions/agents.mjs +165 -0
  412. package/scaffold/definitions/bodies.mjs +292 -0
  413. package/scaffold/definitions/hooks.mjs +43 -0
  414. package/scaffold/definitions/models.mjs +56 -0
  415. package/scaffold/definitions/plugins.mjs +24 -0
  416. package/scaffold/definitions/prompts.mjs +145 -0
  417. package/scaffold/definitions/protocols.mjs +322 -0
  418. package/scaffold/definitions/tools.mjs +176 -0
  419. package/scaffold/general/agents/Architect-Reviewer-Alpha.agent.md +21 -0
  420. package/scaffold/general/agents/Architect-Reviewer-Beta.agent.md +21 -0
  421. package/scaffold/general/agents/Code-Reviewer-Alpha.agent.md +12 -0
  422. package/scaffold/general/agents/Code-Reviewer-Beta.agent.md +12 -0
  423. package/scaffold/general/agents/Debugger.agent.md +31 -0
  424. package/scaffold/general/agents/Documenter.agent.md +42 -0
  425. package/scaffold/general/agents/Explorer.agent.md +50 -0
  426. package/scaffold/general/agents/Frontend.agent.md +29 -0
  427. package/scaffold/general/agents/Implementer.agent.md +31 -0
  428. package/scaffold/general/agents/Orchestrator.agent.md +104 -0
  429. package/scaffold/general/agents/Planner.agent.md +55 -0
  430. package/scaffold/general/agents/README.md +57 -0
  431. package/scaffold/general/agents/Refactor.agent.md +36 -0
  432. package/scaffold/general/agents/Researcher-Alpha.agent.md +20 -0
  433. package/scaffold/general/agents/Researcher-Beta.agent.md +20 -0
  434. package/scaffold/general/agents/Researcher-Delta.agent.md +20 -0
  435. package/scaffold/general/agents/Researcher-Gamma.agent.md +20 -0
  436. package/scaffold/general/agents/Security.agent.md +42 -0
  437. package/scaffold/general/agents/_shared/adr-protocol.md +91 -0
  438. package/scaffold/general/agents/_shared/architect-reviewer-base.md +50 -0
  439. package/scaffold/general/agents/_shared/code-agent-base.md +88 -0
  440. package/scaffold/general/agents/_shared/code-reviewer-base.md +54 -0
  441. package/scaffold/general/agents/_shared/decision-protocol.md +27 -0
  442. package/scaffold/general/agents/_shared/forge-protocol.md +46 -0
  443. package/scaffold/general/agents/_shared/researcher-base.md +61 -0
  444. package/scaffold/general/agents/templates/adr-template.md +27 -0
  445. package/scaffold/general/agents/templates/execution-state.md +25 -0
  446. package/scaffold/general/prompts/ask.prompt.md +20 -0
  447. package/scaffold/general/prompts/debug.prompt.md +25 -0
  448. package/scaffold/general/prompts/design.prompt.md +22 -0
  449. package/scaffold/general/prompts/implement.prompt.md +26 -0
  450. package/scaffold/general/prompts/plan.prompt.md +24 -0
  451. package/scaffold/general/prompts/review.prompt.md +31 -0
  452. package/scaffold/generate.mjs +74 -0
  453. package/skills/adr-skill/SKILL.md +329 -0
  454. package/skills/adr-skill/assets/templates/adr-madr.md +89 -0
  455. package/skills/adr-skill/assets/templates/adr-readme.md +20 -0
  456. package/skills/adr-skill/assets/templates/adr-simple.md +46 -0
  457. package/skills/adr-skill/references/adr-conventions.md +95 -0
  458. package/skills/adr-skill/references/examples.md +193 -0
  459. package/skills/adr-skill/references/review-checklist.md +77 -0
  460. package/skills/adr-skill/references/template-variants.md +52 -0
  461. package/skills/adr-skill/scripts/bootstrap_adr.js +259 -0
  462. package/skills/adr-skill/scripts/new_adr.js +391 -0
  463. package/skills/adr-skill/scripts/set_adr_status.js +169 -0
  464. package/skills/brainstorming/SKILL.md +259 -0
  465. package/skills/brainstorming/scripts/frame-template.html +365 -0
  466. package/skills/brainstorming/scripts/helper.js +216 -0
  467. package/skills/brainstorming/scripts/server.cjs +9 -0
  468. package/skills/brainstorming/scripts/server.src.cjs +249 -0
  469. package/skills/brainstorming/spec-document-reviewer-prompt.md +49 -0
  470. package/skills/brainstorming/visual-companion.md +430 -0
  471. package/skills/c4-architecture/SKILL.md +295 -0
  472. package/skills/c4-architecture/references/advanced-patterns.md +552 -0
  473. package/skills/c4-architecture/references/c4-syntax.md +492 -0
  474. package/skills/c4-architecture/references/common-mistakes.md +437 -0
  475. package/skills/knowledge-base/SKILL.md +100 -10
  476. package/skills/lesson-learned/SKILL.md +105 -0
  477. package/skills/lesson-learned/references/anti-patterns.md +55 -0
  478. package/skills/lesson-learned/references/se-principles.md +109 -0
  479. package/skills/requirements-clarity/SKILL.md +324 -0
  480. package/skills/session-handoff/SKILL.md +189 -0
  481. package/skills/session-handoff/references/handoff-template.md +139 -0
  482. package/skills/session-handoff/references/resume-checklist.md +80 -0
  483. package/skills/session-handoff/scripts/check_staleness.js +269 -0
  484. package/skills/session-handoff/scripts/create_handoff.js +299 -0
  485. package/skills/session-handoff/scripts/list_handoffs.js +113 -0
  486. package/skills/session-handoff/scripts/validate_handoff.js +241 -0
  487. package/packages/chunker/dist/treesitter-chunker.d.ts +0 -47
  488. package/packages/chunker/dist/treesitter-chunker.js +0 -8
  489. package/packages/cli/dist/commands/init.d.ts +0 -10
  490. package/packages/cli/dist/commands/init.js +0 -308
@@ -1,10 +1,3 @@
1
- import{z as p}from"zod";function d(r,s){r.registerTool("lookup",{description:"Look up all indexed chunks for a specific file path. Returns all chunks sorted by position.",inputSchema:{path:p.string().describe('Relative file path to look up (e.g., "src/index.ts")')}},async({path:n})=>{try{const e=await s.getBySourcePath(n);if(e.length===0)return{content:[{type:"text",text:`No indexed content found for: ${n}`}]};e.sort((t,o)=>t.chunkIndex-o.chunkIndex);const c=`## ${n}
2
- **Chunks**: ${e.length} | **Type**: ${e[0].contentType}
3
- `,i=e.map(t=>{const o=t.startLine?` (lines ${t.startLine}-${t.endLine})`:"";return`### Chunk ${t.chunkIndex+1}/${t.totalChunks}${o}
4
- ${t.content}`}).join(`
1
+ import{createLogger as e,serializeError as t}from"../../../core/dist/index.js";import{z as n}from"zod";const r=e(`tools`);function i(e,i){e.registerTool(`lookup`,{description:`Look up all indexed chunks for a specific file path. Returns all chunks sorted by position.`,inputSchema:{path:n.string().describe(`Relative file path to look up (e.g., "src/index.ts")`)}},async({path:e})=>{try{let t=await i.getBySourcePath(e);return t.length===0?{content:[{type:`text`,text:`No indexed content found for: ${e}`}]}:(t.sort((e,t)=>e.chunkIndex-t.chunkIndex),{content:[{type:`text`,text:`${`## ${e}\n**Chunks**: ${t.length} | **Type**: ${t[0].contentType}\n`}\n${t.map(e=>{let t=e.startLine?` (lines ${e.startLine}-${e.endLine})`:``;return`### Chunk ${e.chunkIndex+1}/${e.totalChunks}${t}\n${e.content}`}).join(`
5
2
 
6
- `);return{content:[{type:"text",text:`${c}
7
- ${i}
8
-
9
- ---
10
- _Next: Use \`search\` to find related content, or \`analyze_dependencies\` to see what this file imports._`}]}}catch(e){return console.error("[KB] Lookup failed:",e),{content:[{type:"text",text:`Lookup failed: ${e.message}`}],isError:!0}}})}export{d as registerLookupTool};
3
+ `)}\n\n---\n_Next: Use \`search\` to find related content, or \`analyze_dependencies\` to see what this file imports._`}]})}catch(e){return r.error(`Lookup failed`,t(e)),{content:[{type:`text`,text:`Lookup failed: ${e instanceof Error?e.message:String(e)}`}],isError:!0}}})}export{i as registerLookupTool};
@@ -1,5 +1,8 @@
1
- import type { IEmbedder } from '@kb/embeddings';
2
- import type { IKnowledgeStore } from '@kb/store';
3
- import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
4
- export declare function registerOnboardTool(server: McpServer, store: IKnowledgeStore, embedder: IEmbedder): void;
5
- //# sourceMappingURL=onboard.tool.d.ts.map
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import { IEmbedder } from "@kb/embeddings";
3
+ import { IKnowledgeStore } from "@kb/store";
4
+
5
+ //#region packages/server/src/tools/onboard.tool.d.ts
6
+ declare function registerOnboardTool(server: McpServer, store: IKnowledgeStore, embedder: IEmbedder): void;
7
+ //#endregion
8
+ export { registerOnboardTool };
@@ -1,2 +1,2 @@
1
- import{createHash as m}from"node:crypto";import{onboard as g}from"../../../tools/dist/index.js";import{z as l}from"zod";async function f(c,p,d){for(const t of d.steps)if(!(t.status!=="success"||!t.output))try{const r=m("sha256").update(d.path).digest("hex").slice(0,12),u=`produced/onboard/${t.name}/${r}.md`,e=m("sha256").update(t.output).digest("hex").slice(0,16),s=new Date().toISOString(),a=t.output.length>2e3?t.output.split(/(?=^## )/m).filter(i=>i.trim().length>0):[t.output],n=a.map((i,h)=>({id:m("sha256").update(`${u}::${h}`).digest("hex").slice(0,16),content:i.trim(),sourcePath:u,contentType:"produced-knowledge",chunkIndex:h,totalChunks:a.length,startLine:0,endLine:0,fileHash:e,indexedAt:s,origin:"produced",tags:["onboard",t.name],category:"analysis",version:1})),o=await p.embedBatch(n.map(i=>i.content));await c.upsert(n,o)}catch(r){console.error(`[KB] Auto-persist onboard/${t.name} failed:`,r)}}function w(c,p,d){c.registerTool("onboard",{description:"First-time codebase onboarding: runs all analysis tools (structure, dependencies, entry-points, symbols, patterns, diagram) in one command. Results are auto-persisted to KB. Use mode=generate to also write structured output to .ai/kb/ directory.",inputSchema:{path:l.string().describe("Root path of the codebase to onboard"),mode:l.enum(["memory","generate"]).default("memory").describe("Output mode: memory = KB vector store only; generate = also write to .ai/kb/ directory"),out_dir:l.string().optional().describe("Custom output directory for generate mode (default: <path>/.ai/kb)")}},async({path:t,mode:r,out_dir:u})=>{try{console.error(`[KB] Starting onboard for: ${t} (mode: ${r})`);const e=await g({path:t,mode:r,outDir:u});f(p,d,e);const s=["## Onboard Complete","",`**Path:** \`${e.path}\``,`**Mode:** ${e.mode}`,`**Duration:** ${e.totalDurationMs}ms`,""];e.outDir&&(s.push(`**Output directory:** \`${e.outDir}\``),s.push("")),s.push("### Analysis Results","");const a=[],n=[];for(const o of e.steps)o.status==="success"?a.push(`- \u2713 **${o.name}** (${o.durationMs}ms) \u2014 ${o.output.length} chars`):n.push(`- \u2717 **${o.name}** \u2014 ${o.error}`);s.push(...a),n.length>0&&s.push("","### Failed","",...n),s.push("","---","");for(const o of e.steps)o.status==="success"&&s.push(`### ${o.name}`,"",o.output,"","---","");return s.push("_All results auto-saved to KB.",e.mode==="generate"?` Files written to \`${e.outDir}\`.`:""," Next: Use `search` to query the knowledge, or `remember` to add custom insights._"),{content:[{type:"text",text:s.join(`
2
- `)}]}}catch(e){return console.error("[KB] Onboard failed:",e),{content:[{type:"text",text:`Onboard failed: ${e.message}`}],isError:!0}}})}export{w as registerOnboardTool};
1
+ import{createHash as e}from"node:crypto";import{createLogger as t,serializeError as n}from"../../../core/dist/index.js";import{onboard as r}from"../../../tools/dist/index.js";import{z as i}from"zod";const a=t(`tools`);async function o(t,r,i){for(let o of i.steps)if(!(o.status!==`success`||!o.output))try{let n=e(`sha256`).update(i.path).digest(`hex`).slice(0,12),a=`produced/onboard/${o.name}/${n}.md`,s=e(`sha256`).update(o.output).digest(`hex`).slice(0,16),c=new Date().toISOString(),l=o.output.length>2e3?o.output.split(/(?=^## )/m).filter(e=>e.trim().length>0):[o.output],u=l.map((t,n)=>({id:e(`sha256`).update(`${a}::${n}`).digest(`hex`).slice(0,16),content:t.trim(),sourcePath:a,contentType:`produced-knowledge`,chunkIndex:n,totalChunks:l.length,startLine:0,endLine:0,fileHash:s,indexedAt:c,origin:`produced`,tags:[`onboard`,o.name],category:`analysis`,version:1})),d=await r.embedBatch(u.map(e=>e.content));await t.upsert(u,d)}catch(e){a.warn(`Auto-persist onboard step failed`,{stepName:o.name,...n(e)})}}function s(e,t,s){e.registerTool(`onboard`,{description:`First-time codebase onboarding: runs all analysis tools (structure, dependencies, entry-points, symbols, patterns, diagram) in one command. Results are auto-persisted to KB. Use mode=generate to also write structured output to .ai/kb/ directory.`,inputSchema:{path:i.string().describe(`Root path of the codebase to onboard`),mode:i.enum([`memory`,`generate`]).default(`memory`).describe(`Output mode: memory = KB vector store only; generate = also write to .ai/kb/ directory`),out_dir:i.string().optional().describe(`Custom output directory for generate mode (default: <path>/.ai/kb)`)}},async({path:e,mode:i,out_dir:c})=>{try{a.info(`Starting onboard`,{path:e,mode:i});let n=await r({path:e,mode:i,outDir:c});o(t,s,n);let l=[`## Onboard Complete`,``,`**Path:** \`${n.path}\``,`**Mode:** ${n.mode}`,`**Duration:** ${n.totalDurationMs}ms`,``];n.outDir&&(l.push(`**Output directory:** \`${n.outDir}\``),l.push(``)),l.push(`### Analysis Results`,``);let u=[],d=[];for(let e of n.steps)e.status===`success`?u.push(`- **${e.name}** (${e.durationMs}ms) ${e.output.length} chars`):d.push(`- **${e.name}** ${e.error}`);l.push(...u),d.length>0&&l.push(``,`### Failed`,``,...d),l.push(``,`---`,``);for(let e of n.steps)e.status===`success`&&l.push(`### ${e.name}`,``,e.output,``,`---`,``);return l.push(`_All results auto-saved to KB.`,n.mode===`generate`?` Files written to \`${n.outDir}\`.`:``," Next: Use `search` to query the knowledge, or `remember` to add custom insights._"),{content:[{type:`text`,text:l.join(`
2
+ `)}]}}catch(e){return a.error(`Onboard failed`,n(e)),{content:[{type:`text`,text:`Onboard failed: ${e instanceof Error?e.message:String(e)}`}],isError:!0}}})}export{s as registerOnboardTool};
@@ -0,0 +1,7 @@
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import { PolicyStore } from "@kb/enterprise-bridge";
3
+
4
+ //#region packages/server/src/tools/policy.tools.d.ts
5
+ declare function registerErUpdatePolicyTool(server: McpServer, policyStore: PolicyStore): void;
6
+ //#endregion
7
+ export { registerErUpdatePolicyTool };
@@ -0,0 +1,2 @@
1
+ import{createLogger as e,serializeError as t}from"../../../core/dist/index.js";import{z as n}from"zod";const r=e(`tools`);function i(e,i){e.registerTool(`er_update_policy`,{description:`Manage ER push classification rules. Supports listing, updating, creating, and deleting rules that determine when knowledge should be pushed to Enterprise RAG.`,inputSchema:{action:n.enum([`list`,`get`,`update`,`create`,`delete`]).describe(`Action to perform on classification rules`),rule_id:n.string().optional().describe(`Rule ID (required for get, update, delete)`),changes:n.object({patterns:n.array(n.string()).optional(),category:n.string().optional(),pushWeight:n.number().min(0).max(1).optional(),description:n.string().optional(),examples:n.array(n.string()).optional(),enabled:n.boolean().optional()}).optional().describe(`Changes to apply (for update action)`),new_rule:n.object({id:n.string().regex(/^[a-z][a-z0-9-]*$/),patterns:n.array(n.string()).min(1),category:n.string(),pushWeight:n.number().min(0).max(1),description:n.string(),examples:n.array(n.string()).default([]),enabled:n.boolean().default(!0)}).optional().describe(`New rule definition (for create action)`)}},async({action:e,rule_id:n,changes:a,new_rule:o})=>{try{if(e===`list`){let e=i.getRules();return{content:[{type:`text`,text:`## Classification Rules\n\n${e.map(e=>`- **${e.id}** (${e.enabled?`enabled`:`disabled`}) — ${e.description}\n Category: ${e.category} | Weight: ${e.pushWeight} | Patterns: ${e.patterns.join(`, `)}`).join(`
2
+ `)}\n\n---\n_${e.length} rules total. Use \`action: "update"\` to modify a rule._`}]}}if(e===`get`){if(!n)return{content:[{type:`text`,text:'`rule_id` is required for "get" action.'}],isError:!0};let e=i.getRule(n);return e?{content:[{type:`text`,text:`## Rule: ${e.id}\n\n${JSON.stringify(e,null,2)}`}]}:{content:[{type:`text`,text:`Rule "${n}" not found.`}],isError:!0}}if(e===`update`){if(!n||!a)return{content:[{type:`text`,text:'`rule_id` and `changes` are required for "update" action.'}],isError:!0};let e=i.updateRule(n,a);return e?{content:[{type:`text`,text:`Updated rule **${n}**.\n\n${JSON.stringify(e,null,2)}\n\n---\n_Next: Use \`action: "list"\` to verify all rules._`}]}:{content:[{type:`text`,text:`Rule "${n}" not found.`}],isError:!0}}if(e===`create`){if(!o)return{content:[{type:`text`,text:'`new_rule` is required for "create" action.'}],isError:!0};let e=i.addRule(o);return{content:[{type:`text`,text:`Created rule **${e.id}**.\n\n${JSON.stringify(e,null,2)}\n\n---\n_Next: Test classification with \`remember\` and check signals._`}]}}return e===`delete`?n?i.deleteRule(n)?{content:[{type:`text`,text:`Deleted rule **${n}**.\n\n---\n_Next: Use \`action: "list"\` to verify._`}]}:{content:[{type:`text`,text:`Rule "${n}" not found.`}],isError:!0}:{content:[{type:`text`,text:'`rule_id` is required for "delete" action.'}],isError:!0}:{content:[{type:`text`,text:`Unknown action: ${e}`}],isError:!0}}catch(e){return r.error(`Policy update failed`,t(e)),{content:[{type:`text`,text:`Policy update failed. Check server logs for details.`}],isError:!0}}})}export{i as registerErUpdatePolicyTool};
@@ -1,3 +1,6 @@
1
- import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
- export declare function registerProduceKnowledgeTool(server: McpServer): void;
3
- //# sourceMappingURL=produce.tool.d.ts.map
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+
3
+ //#region packages/server/src/tools/produce.tool.d.ts
4
+ declare function registerProduceKnowledgeTool(server: McpServer): void;
5
+ //#endregion
6
+ export { registerProduceKnowledgeTool };
@@ -1,4 +1,4 @@
1
- import{DependencyAnalyzer as c,DiagramGenerator as d,EntryPointAnalyzer as l,KnowledgeProducer as u,PatternAnalyzer as p,StructureAnalyzer as y,SymbolAnalyzer as m}from"../../../analyzers/dist/index.js";import{z as n}from"zod";function h(o){const s={structure:new y,dependencies:new c,symbols:new m,patterns:new p,entryPoints:new l,diagrams:new d},r=new u(s);o.registerTool("produce_knowledge",{description:"Run automated codebase analysis and produce synthesis instructions. Executes Tier 1 deterministic analyzers, then returns structured baselines and instructions for you to synthesize knowledge using remember.",inputSchema:{scope:n.string().optional().describe("Root path to analyze (defaults to workspace root)"),aspects:n.array(n.enum(["all","structure","dependencies","symbols","patterns","entry-points","diagrams"])).default(["all"]).describe("Which analysis aspects to run")}},async({scope:i,aspects:t})=>{try{const e=i??".";console.error(`[KB] Running knowledge production for: ${e}, aspects: ${t.join(", ")}`);const a=await r.runExtraction(e,t);return{content:[{type:"text",text:r.buildSynthesisInstructions(a,t)+`
1
+ import{DependencyAnalyzer as e,DiagramGenerator as t,EntryPointAnalyzer as n,KnowledgeProducer as r,PatternAnalyzer as i,StructureAnalyzer as a,SymbolAnalyzer as o}from"../../../analyzers/dist/index.js";import{createLogger as s,serializeError as c}from"../../../core/dist/index.js";import{z as l}from"zod";const u=s(`tools`);function d(s){let d=new r({structure:new a,dependencies:new e,symbols:new o,patterns:new i,entryPoints:new n,diagrams:new t});s.registerTool(`produce_knowledge`,{description:`Run automated codebase analysis and produce synthesis instructions. Executes Tier 1 deterministic analyzers, then returns structured baselines and instructions for you to synthesize knowledge using remember.`,inputSchema:{scope:l.string().optional().describe(`Root path to analyze (defaults to workspace root)`),aspects:l.array(l.enum([`all`,`structure`,`dependencies`,`symbols`,`patterns`,`entry-points`,`diagrams`])).default([`all`]).describe(`Which analysis aspects to run`)}},async({scope:e,aspects:t})=>{try{let n=e??`.`;u.info(`Running knowledge production`,{rootPath:n,aspects:t});let r=await d.runExtraction(n,t);return{content:[{type:`text`,text:d.buildSynthesisInstructions(r,t)+`
2
2
 
3
3
  ---
4
- _Next: Review the baselines above and use \`remember\` to store synthesized knowledge entries._`}]}}catch(e){return console.error("[KB] Knowledge production failed:",e),{content:[{type:"text",text:`Knowledge production failed: ${e.message}`}],isError:!0}}})}export{h as registerProduceKnowledgeTool};
4
+ _Next: Review the baselines above and use \`remember\` to store synthesized knowledge entries._`}]}}catch(e){return u.error(`Knowledge production failed`,c(e)),{content:[{type:`text`,text:`Knowledge production failed. Check server logs for details.`}],isError:!0}}})}export{d as registerProduceKnowledgeTool};
@@ -1,4 +1,7 @@
1
- import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
- import type { CuratedKnowledgeManager } from '../curated-manager.js';
3
- export declare function registerReadTool(server: McpServer, curated: CuratedKnowledgeManager): void;
4
- //# sourceMappingURL=read.tool.d.ts.map
1
+ import { CuratedKnowledgeManager } from "../curated-manager.js";
2
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
3
+
4
+ //#region packages/server/src/tools/read.tool.d.ts
5
+ declare function registerReadTool(server: McpServer, curated: CuratedKnowledgeManager): void;
6
+ //#endregion
7
+ export { registerReadTool };
@@ -1,6 +1,2 @@
1
- import{z as o}from"zod";function i(r,a){r.registerTool("read",{description:"Read the full content of a specific curated knowledge entry by its path. Use list first to discover available entries.",inputSchema:{path:o.string().describe('Relative path within curated/ (e.g., "decisions/use-lancedb.md")')}},async({path:t})=>{try{const e=await a.read(t);return{content:[{type:"text",text:`${[`## ${e.title}`,`- **Path**: curated/${t}`,`- **Category**: ${e.category}`,e.tags.length?`- **Tags**: ${e.tags.join(", ")}`:null,`- **Version**: ${e.version}`,`- **Created**: ${e.created}`,e.updated!==e.created?`- **Updated**: ${e.updated}`:null,""].filter(n=>n!==null).join(`
2
- `)}
3
- ${e.content}
4
-
5
- ---
6
- _Next: Use \`update\` to modify this entry, or \`search\` to find related entries._`}]}}catch(e){return console.error("[KB] Read failed:",e),{content:[{type:"text",text:`Read failed: ${e.message}`}],isError:!0}}})}export{i as registerReadTool};
1
+ import{createLogger as e,serializeError as t}from"../../../core/dist/index.js";import{z as n}from"zod";const r=e(`tools`);function i(e,i){e.registerTool(`read`,{description:`Read the full content of a specific curated knowledge entry by its path. Use list first to discover available entries.`,inputSchema:{path:n.string().describe(`Relative path within .ai/curated/ (e.g., "decisions/use-lancedb.md")`)}},async({path:e})=>{try{let t=await i.read(e);return{content:[{type:`text`,text:`${[`## ${t.title}`,`- **Path**: .ai/curated/${e}`,`- **Category**: ${t.category}`,t.tags.length?`- **Tags**: ${t.tags.join(`, `)}`:null,`- **Version**: ${t.version}`,`- **Created**: ${t.created}`,t.updated===t.created?null:`- **Updated**: ${t.updated}`,``].filter(e=>e!==null).join(`
2
+ `)}\n${t.content}\n\n---\n_Next: Use \`update\` to modify this entry, or \`search\` to find related entries._`}]}}catch(e){return r.error(`Read failed`,t(e)),{content:[{type:`text`,text:`Read failed. Check server logs for details.`}],isError:!0}}})}export{i as registerReadTool};
@@ -1,7 +1,10 @@
1
- import type { KBConfig } from '@kb/core';
2
- import type { IncrementalIndexer } from '@kb/indexer';
3
- import type { IKnowledgeStore } from '@kb/store';
4
- import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
5
- import type { CuratedKnowledgeManager } from '../curated-manager.js';
6
- export declare function registerReindexTool(server: McpServer, indexer: IncrementalIndexer, config: KBConfig, curated: CuratedKnowledgeManager, store?: IKnowledgeStore): void;
7
- //# sourceMappingURL=reindex.tool.d.ts.map
1
+ import { CuratedKnowledgeManager } from "../curated-manager.js";
2
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
3
+ import { KBConfig } from "@kb/core";
4
+ import { IncrementalIndexer } from "@kb/indexer";
5
+ import { IKnowledgeStore } from "@kb/store";
6
+
7
+ //#region packages/server/src/tools/reindex.tool.d.ts
8
+ declare function registerReindexTool(server: McpServer, indexer: IncrementalIndexer, config: KBConfig, curated: CuratedKnowledgeManager, store?: IKnowledgeStore): void;
9
+ //#endregion
10
+ export { registerReindexTool };
@@ -1,2 +1,3 @@
1
- import{z as u}from"zod";function f(l,i,o,c,d){l.registerTool("reindex",{description:"Trigger re-indexing of the knowledge base. Can do incremental (only changed files) or full re-index.",inputSchema:{full:u.boolean().default(!1).describe("If true, force full re-index ignoring file hashes")}},async({full:a})=>{try{console.error(`[KB] Starting ${a?"full":"incremental"} re-index...`);const r=e=>s=>{s.phase==="chunking"&&s.currentFile&&console.error(`[KB] ${e} [${s.filesProcessed+1}/${s.filesTotal}] ${s.currentFile}`)},t=a?await i.reindexAll(o,r("Reindex")):await i.index(o,r("Index")),n=["## Re-index Complete","",`- **Files Processed**: ${t.filesProcessed}`,`- **Files Skipped** (unchanged): ${t.filesSkipped}`,`- **Chunks Created**: ${t.chunksCreated}`,`- **Files Removed**: ${t.filesRemoved}`,`- **Duration**: ${(t.durationMs/1e3).toFixed(1)}s`];if(d)try{await d.createFtsIndex()}catch(e){n.push("",`- **FTS Index Failed**: ${e.message}`)}try{const e=await c.reindexAll();n.push("",`- **Curated Entries Re-indexed**: ${e.indexed}`),e.errors.length>0&&n.push(`- **Curated Errors**: ${e.errors.length}`),console.error(`[KB] Curated re-index: ${e.indexed} entries`)}catch(e){n.push("",`- **Curated Re-index Failed**: ${e.message}`),console.error("[KB] Curated re-index failed:",e)}return{content:[{type:"text",text:n.join(`
2
- `)+"\n\n---\n_Next: Use `search` to query the refreshed index, or `status` to verify index stats._"}]}}catch(r){return console.error("[KB] Reindex failed:",r),{content:[{type:"text",text:`Reindex failed: ${r.message}`}],isError:!0}}})}export{f as registerReindexTool};
1
+ import{createLogger as e,serializeError as t}from"../../../core/dist/index.js";import{z as n}from"zod";const r=e(`tools`);function i(e,i,a,o,s){e.registerTool(`reindex`,{description:`Trigger re-indexing of the knowledge base. Can do incremental (only changed files) or full re-index.`,inputSchema:{full:n.boolean().default(!1).describe(`If true, force full re-index ignoring file hashes`)}},async({full:e})=>{try{if(i.isIndexing)return{content:[{type:`text`,text:`## Reindex Already in Progress
2
+
3
+ A reindex operation is currently running. Search and other tools continue to work with existing data. Use \`status({})\` to check when it completes.`}]};r.info(`Starting background re-index`,{mode:e?`full`:`incremental`});let n=e=>t=>{t.phase===`chunking`&&t.currentFile&&r.debug(`Re-index progress`,{prefix:e,current:t.filesProcessed+1,total:t.filesTotal,file:t.currentFile})};return(e?i.reindexAll(a,n(`Reindex`)):i.index(a,n(`Index`))).then(async e=>{if(r.info(`Background re-index complete`,{filesProcessed:e.filesProcessed,chunksCreated:e.chunksCreated,durationMs:e.durationMs}),s)try{await s.createFtsIndex(),r.info(`FTS index rebuilt after reindex`)}catch(e){r.warn(`FTS index rebuild failed`,t(e))}try{let e=await o.reindexAll();r.info(`Curated re-index complete`,{indexed:e.indexed})}catch(e){r.warn(`Curated re-index failed`,t(e))}}).catch(e=>{r.error(`Background reindex failed`,t(e))}),{content:[{type:`text`,text:`## Reindex Started (Background)\n\n- **Mode**: ${e?`Full`:`Incremental`}\n- Search and other tools continue to work with existing data during reindex.\n- Completion will be logged. Use \`status({})\` to check index stats afterward.\n\n---\n_Next: Continue working — the reindex runs in the background._`}]}}catch(e){return r.error(`Reindex failed`,t(e)),{content:[{type:`text`,text:`Reindex failed. Check server logs for details.`}],isError:!0}}})}export{i as registerReindexTool};
@@ -1,4 +1,8 @@
1
- import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
- import type { CuratedKnowledgeManager } from '../curated-manager.js';
3
- export declare function registerRememberTool(server: McpServer, curated: CuratedKnowledgeManager): void;
4
- //# sourceMappingURL=remember.tool.d.ts.map
1
+ import { CuratedKnowledgeManager } from "../curated-manager.js";
2
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
3
+ import { EvolutionCollector, PolicyStore } from "@kb/enterprise-bridge";
4
+
5
+ //#region packages/server/src/tools/remember.tool.d.ts
6
+ declare function registerRememberTool(server: McpServer, curated: CuratedKnowledgeManager, policyStore?: PolicyStore, evolutionCollector?: EvolutionCollector): void;
7
+ //#endregion
8
+ export { registerRememberTool };
@@ -1,6 +1,4 @@
1
- import{z as e}from"zod";function d(n,o){n.registerTool("remember",{description:"Store a new piece of curated knowledge. Use this to persist decisions, patterns, conventions, or any insight worth remembering across sessions.",inputSchema:{title:e.string().min(3).max(120).describe("Short descriptive title for the knowledge entry"),content:e.string().min(10).describe("The markdown content to store"),category:e.string().regex(/^[a-z][a-z0-9-]*$/).describe('Category slug (e.g., "decisions", "patterns", "conventions", "api-contracts")'),tags:e.array(e.string()).default([]).describe("Optional tags for filtering")}},async({title:t,content:s,category:i,tags:a})=>{try{const r=await o.remember(t,s,i,a);return{content:[{type:"text",text:`Remembered: **${t}**
1
+ import{createLogger as e,serializeError as t}from"../../../core/dist/index.js";import{z as n}from"zod";const r=e(`tools`);function i(e,i,a,o){e.registerTool(`remember`,{description:`Store a new piece of curated knowledge. Use this to persist decisions, patterns, conventions, or any insight worth remembering across sessions.`,inputSchema:{title:n.string().min(3).max(120).describe(`Short descriptive title for the knowledge entry`),content:n.string().min(10).max(1e5).describe(`The markdown content to store`),category:n.string().regex(/^[a-z][a-z0-9-]*$/).describe(`Category slug (e.g., "decisions", "patterns", "conventions", "api-contracts")`),tags:n.array(n.string()).default([]).describe(`Optional tags for filtering`)}},async({title:e,content:n,category:s,tags:c})=>{try{let t=await i.remember(e,n,s,c),r=``;if(a){let t=a.classify(e,n,c);o&&o.recordClassification(e,t.matchingRules.map(e=>e.ruleId),t.pushRecommended),t.matchingRules.length>0&&(r=`\n\n### Classification Signals\n${t.matchingRules.map(e=>` - **${e.ruleId}** (${e.category}, weight: ${e.pushWeight}) — matched: ${e.matchedPatterns.join(`, `)}`).join(`
2
+ `)}\n- **Push recommended**: ${t.pushRecommended?`yes`:`no`} (max weight: ${t.maxPushWeight})`,t.pushRecommended&&(r+=`
2
3
 
3
- Stored at \`curated/${r.path}\` and indexed for semantic search.
4
-
5
- ---
6
- _Next: Use \`search\` to verify the entry is findable, or \`list\` to see all curated entries._`}]}}catch(r){return console.error("[KB] Remember failed:",r),{content:[{type:"text",text:`Remember failed: ${r.message}`}],isError:!0}}})}export{d as registerRememberTool};
4
+ > 💡 This entry matches push rules. Consider \`er_push\` to share with Enterprise RAG.`))}return{content:[{type:`text`,text:`Remembered: **${e}**\n\nStored at \`.ai/curated/${t.path}\` and indexed for semantic search.${r}\n\n---\n_Next: Use \`search\` to verify the entry is findable, or \`list\` to see all curated entries._`}]}}catch(e){return r.error(`Remember failed`,t(e)),{content:[{type:`text`,text:`Remember failed. Check server logs for details.`}],isError:!0}}})}export{i as registerRememberTool};
@@ -1,3 +1,6 @@
1
- import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
- export declare function registerReplayTool(server: McpServer): void;
3
- //# sourceMappingURL=replay.tool.d.ts.map
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+
3
+ //#region packages/server/src/tools/replay.tool.d.ts
4
+ declare function registerReplayTool(server: McpServer): void;
5
+ //#endregion
6
+ export { registerReplayTool };
@@ -1,7 +1,3 @@
1
- import{replayClear as m,replayList as y,replayTrim as d}from"../../../tools/dist/index.js";import{z as o}from"zod";function h(r){r.registerTool("replay",{description:"View or clear the audit trail of recent MCP tool and CLI invocations. Shows tool name, duration, status, and input/output summaries.",inputSchema:{action:o.enum(["list","clear"]).default("list").describe('Action: "list" (default) to view entries, "clear" to wipe the log'),last:o.number().optional().describe("Number of entries to return (default: 20, list only)"),tool:o.string().optional().describe("Filter by tool name (list only)"),source:o.enum(["mcp","cli"]).optional().describe('Filter by source: "mcp" or "cli" (list only)'),since:o.string().optional().describe("ISO timestamp \u2014 only show entries after this time (list only)")}},async({action:n,last:i,tool:s,source:l,since:a})=>{try{if(n==="clear")return m(),{content:[{type:"text",text:"Replay log cleared."}]};const e=y({last:i,tool:s,source:l,since:a});if(e.length===0)return{content:[{type:"text",text:"No replay entries found. Activity is logged when tools are invoked via MCP or CLI."}]};const c=e.map(t=>{const p=t.ts.split("T")[1]?.split(".")[0]??t.ts,u=t.status==="ok"?"\u2713":"\u2717";return`${p} ${u} ${t.tool} (${t.durationMs}ms) [${t.source}]
2
- in: ${t.input}
3
- out: ${t.output}`});return d(),{content:[{type:"text",text:`**Replay Log** (${e.length} entries)
1
+ import{createLogger as e,serializeError as t}from"../../../core/dist/index.js";import{replayClear as n,replayList as r,replayTrim as i}from"../../../tools/dist/index.js";import{z as a}from"zod";const o=e(`tools`);function s(e){e.registerTool(`replay`,{description:`View or clear the audit trail of recent MCP tool and CLI invocations. Shows tool name, duration, status, and input/output summaries.`,inputSchema:{action:a.enum([`list`,`clear`]).default(`list`).describe(`Action: "list" (default) to view entries, "clear" to wipe the log`),last:a.number().optional().describe(`Number of entries to return (default: 20, list only)`),tool:a.string().optional().describe(`Filter by tool name (list only)`),source:a.enum([`mcp`,`cli`]).optional().describe(`Filter by source: "mcp" or "cli" (list only)`),since:a.string().optional().describe(`ISO timestamp only show entries after this time (list only)`)}},async({action:e,last:a,tool:s,source:c,since:l})=>{try{if(e===`clear`)return n(),{content:[{type:`text`,text:`Replay log cleared.`}]};let t=r({last:a,tool:s,source:c,since:l});if(t.length===0)return{content:[{type:`text`,text:`No replay entries found. Activity is logged when tools are invoked via MCP or CLI.`}]};let o=t.map(e=>`${e.ts.split(`T`)[1]?.split(`.`)[0]??e.ts} ${e.status===`ok`?`✓`:`✗`} ${e.tool} (${e.durationMs}ms) [${e.source}]\n in: ${e.input}\n out: ${e.output}`);return i(),{content:[{type:`text`,text:`**Replay Log** (${t.length} entries)\n\n${o.join(`
4
2
 
5
- ${c.join(`
6
-
7
- `)}`}]}}catch(e){return console.error("[KB] Replay failed:",e),{content:[{type:"text",text:`Replay failed: ${e.message}`}],isError:!0}}})}export{h as registerReplayTool};
3
+ `)}`}]}}catch(e){return o.error(`Replay failed`,t(e)),{content:[{type:`text`,text:`Replay failed. Check server logs for details.`}],isError:!0}}})}export{s as registerReplayTool};
@@ -1,5 +1,10 @@
1
- import type { IEmbedder } from '@kb/embeddings';
2
- import type { IGraphStore, IKnowledgeStore } from '@kb/store';
3
- import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
4
- export declare function registerSearchTool(server: McpServer, embedder: IEmbedder, store: IKnowledgeStore, graphStore?: IGraphStore): void;
5
- //# sourceMappingURL=search.tool.d.ts.map
1
+ import { BridgeComponents } from "./bridge.tools.js";
2
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
3
+ import { IEmbedder } from "@kb/embeddings";
4
+ import { EvolutionCollector } from "@kb/enterprise-bridge";
5
+ import { IGraphStore, IKnowledgeStore } from "@kb/store";
6
+
7
+ //#region packages/server/src/tools/search.tool.d.ts
8
+ declare function registerSearchTool(server: McpServer, embedder: IEmbedder, store: IKnowledgeStore, graphStore?: IGraphStore, bridge?: BridgeComponents, evolutionCollector?: EvolutionCollector): void;
9
+ //#endregion
10
+ export { registerSearchTool };
@@ -1,25 +1,9 @@
1
- import{stat as O}from"node:fs/promises";import{graphAugmentSearch as A,truncateToTokenBudget as D}from"../../../tools/dist/index.js";import{z as g}from"zod";function K(p,y,a=60){const s=new Map;for(let e=0;e<p.length;e++){const n=p[e];s.set(n.record.id,{record:n.record,score:1/(a+e+1)})}for(let e=0;e<y.length;e++){const n=y[e],d=s.get(n.record.id);d?d.score+=1/(a+e+1):s.set(n.record.id,{record:n.record,score:1/(a+e+1)})}return[...s.values()].sort((e,n)=>n.score-e.score).map(({record:e,score:n})=>({record:e,score:n}))}function N(p,y){const a=y.toLowerCase().split(/\s+/).filter(s=>s.length>=2);return a.length<2?p:p.map(s=>{const e=s.record.content.toLowerCase(),n=a.map(i=>{const h=[];let o=e.indexOf(i);for(;o!==-1;)h.push(o),o=e.indexOf(i,o+1);return h});if(n.some(i=>i.length===0))return s;let d=e.length;for(const i of n[0]){let h=i,o=i+a[0].length;for(let f=1;f<n.length;f++){let S=n[f][0],w=Math.abs(S-i);for(let b=1;b<n[f].length;b++){const _=Math.abs(n[f][b]-i);_<w&&(w=_,S=n[f][b])}h=Math.min(h,S),o=Math.max(o,S+a[f].length)}d=Math.min(d,o-h)}const r=1+.25/(1+d/200);return{record:s.record,score:s.score*r}}).sort((s,e)=>e.score-s.score)}function E(p,y,a=8){const s=new Set(y.toLowerCase().split(/\s+/).filter(r=>r.length>=2)),e=new Map,n=p.length;for(const r of p){const i=new Set(r.record.content.split(/[^a-zA-Z0-9_]+/).filter(o=>o.length>=3&&!P.has(o.toLowerCase())));for(const o of i){const f=o.toLowerCase();/[_A-Z]/.test(o)&&e.set(`__id__${f}`,1)}const h=new Set(r.record.content.toLowerCase().split(/[^a-zA-Z0-9_]+/).filter(o=>o.length>=3&&!P.has(o)));for(const o of h)e.set(o,(e.get(o)??0)+1)}const d=[];for(const[r,i]of e){if(r.startsWith("__id__")||s.has(r)||i>n*.8)continue;const h=Math.log(n/i),o=e.has(`__id__${r}`)?1:0,f=r.length>8?.5:0;d.push({term:r,score:h+o+f})}return d.sort((r,i)=>i.score-r.score).slice(0,a).map(r=>r.term)}const P=new Set(["the","and","for","are","but","not","you","all","can","had","her","was","one","our","out","has","have","from","this","that","with","they","been","said","each","which","their","will","other","about","many","then","them","these","some","would","make","like","into","could","time","very","when","come","just","know","take","people","also","back","after","only","more","than","over","such","import","export","const","function","return","true","false","null","undefined","string","number","boolean","void","type","interface"]);async function G(p,y){try{const a=await p.getStats();if(!a.lastIndexedAt)return;const s=new Date(a.lastIndexedAt).getTime(),e=Date.now(),n=[...new Set(y.map(r=>r.record.sourcePath))].slice(0,5);let d=0;for(const r of n)try{(await O(r)).mtimeMs>s&&d++}catch{d++}if(d>0){const r=e-s,i=Math.floor(r/6e4),h=i<1?"<1 min":`${i} min`;return`> \u26A0\uFE0F **Index may be stale** \u2014 ${d} file(s) modified since last index (${h} ago). Use \`reindex\` to refresh.`}}catch{}}function Q(p,y,a,s){p.registerTool("search",{description:"Search the knowledge base with hybrid vector + keyword matching (BM25 + RRF fusion). Best for finding code, docs, and prior decisions. Supports semantic, keyword, and hybrid modes.",inputSchema:{query:g.string().describe("Natural language search query"),limit:g.number().min(1).max(20).default(5).describe("Maximum results to return"),search_mode:g.enum(["hybrid","semantic","keyword"]).default("hybrid").describe("Search strategy: hybrid (vector + FTS + RRF fusion, default), semantic (vector only), keyword (FTS only)"),content_type:g.enum(["markdown","code-typescript","code-javascript","code-python","config-json","config-yaml","config-toml","config-dotenv","infrastructure","documentation","test","script","curated-knowledge","produced-knowledge","other"]).optional().describe("Filter by content type"),source_type:g.enum(["source","documentation","test","config"]).optional().describe('Coarse filter: "source" (code only), "documentation" (md, curated), "test", "config". Overrides content_type if both set.'),origin:g.enum(["indexed","curated","produced"]).optional().describe("Filter by knowledge origin"),category:g.string().optional().describe("Filter by category (e.g., decisions, patterns, conventions)"),tags:g.array(g.string()).optional().describe("Filter by tags (returns results matching ANY of the specified tags)"),min_score:g.number().min(0).max(1).default(.25).describe("Minimum similarity score"),graph_hops:g.number().min(0).max(3).default(0).describe("Number of graph hops to augment results with (0 = no graph context, 1-3 = enrich results with connected entities)"),max_tokens:g.number().min(100).max(5e4).optional().describe("Maximum token budget for the response. When set, output is truncated to fit."),dedup:g.enum(["file","chunk"]).default("chunk").describe('Deduplication mode: "chunk" (default, show all matching chunks) or "file" (collapse chunks from same file into single result with merged line ranges)')}},async({query:e,limit:n,search_mode:d,content_type:r,source_type:i,origin:h,category:o,tags:f,min_score:S,graph_hops:w,max_tokens:b,dedup:_})=>{try{const x={limit:n,minScore:S,contentType:r,sourceType:i,origin:h,category:o,tags:f};let l;if(d==="keyword")l=await a.ftsSearch(e,x),l=l.slice(0,n);else if(d==="semantic"){const u=await y.embedQuery(e);l=await a.search(u,x)}else{const u=await y.embedQuery(e),[c,t]=await Promise.all([a.search(u,{...x,limit:n*2}),a.ftsSearch(e,{...x,limit:n*2}).catch(()=>[])]);l=K(c,t).slice(0,n)}if(l.length>1&&(l=N(l,e)),_==="file"&&l.length>1){const u=new Map;for(const c of l){const t=c.record.sourcePath,m=u.get(t);m?(c.score>m.best.score&&(m.best=c),m.ranges.push({start:c.record.startLine,end:c.record.endLine})):u.set(t,{best:c,ranges:[{start:c.record.startLine,end:c.record.endLine}]})}l=[...u.values()].sort((c,t)=>t.best.score-c.best.score).map(({best:c,ranges:t})=>({record:{...c.record,content:t.length>1?`${c.record.content}
2
-
3
- _Matched ${t.length} sections: ${t.sort((m,k)=>m.start-k.start).map(m=>`L${m.start}-${m.end}`).join(", ")}_`:c.record.content},score:c.score}))}if(l.length===0)return{content:[{type:"text",text:"No results found for the given query."}]};let M,R;if(w>0&&!s&&(R="> **Note:** `graph_hops` was set but no graph store is available. Graph augmentation skipped."),w>0&&s)try{const u=l.map(t=>({recordId:t.record.id,score:t.score,sourcePath:t.record.sourcePath})),c=await A(s,u,{hops:w,maxPerHit:5});M=new Map;for(const t of c)if(t.graphContext.nodes.length>0){const m=t.graphContext.nodes.slice(0,5).map(v=>` - **${v.name}** (${v.type})`).join(`
4
- `),k=t.graphContext.edges.slice(0,5).map(v=>` - ${v.fromId} \u2014[${v.type}]\u2192 ${v.toId}`).join(`
5
- `),j=[`- **Graph Context** (${w} hop${w>1?"s":""}):`];m&&j.push(` Entities:
6
- ${m}`),k&&j.push(` Relationships:
7
- ${k}`),M.set(t.recordId,j.join(`
8
- `))}}catch(u){console.error("[KB] Graph augmentation failed (non-fatal):",u),R="> **Note:** Graph augmentation failed. Results shown without graph context."}const F=l.map((u,c)=>{const t=u.record,m=`### Result ${c+1} (score: ${u.score.toFixed(3)})`,k=[`- **Source**: ${t.sourcePath}`,t.headingPath?`- **Section**: ${t.headingPath}`:null,`- **Type**: ${t.contentType}`,t.startLine?`- **Lines**: ${t.startLine}-${t.endLine}`:null,t.origin!=="indexed"?`- **Origin**: ${t.origin}`:null,t.category?`- **Category**: ${t.category}`:null,t.tags?.length?`- **Tags**: ${t.tags.join(", ")}`:null,M?.get(t.id)??null].filter(Boolean).join(`
9
- `);return`${m}
10
- ${k}
11
-
12
- ${t.content}`}).join(`
1
+ import{fanOutFtsSearch as e,fanOutSearch as t,openWorkspaceStores as n,resolveWorkspaces as r}from"../cross-workspace.js";import{stat as i}from"node:fs/promises";import{CONTENT_TYPES as a,KNOWLEDGE_ORIGINS as o,SOURCE_TYPES as s,computePartitionKey as c,createLogger as l,serializeError as u}from"../../../core/dist/index.js";import{graphAugmentSearch as d,truncateToTokenBudget as f}from"../../../tools/dist/index.js";import{z as p}from"zod";import{mergeResults as m}from"../../../enterprise-bridge/dist/index.js";const h=l(`tools`);async function g(e,t,n,r,i){if(!e||t>=e.config.fallbackThreshold&&n.length>0)return{results:n,triggered:!1,cacheHit:!1};let a=!1;try{let t=e.cache.get(r);return t?a=!0:(t=await e.client.search(r,i),t.length>0&&e.cache.set(r,t)),t.length>0?{results:m(n,t,i).map(e=>({record:{id:`er:${e.sourcePath}`,content:e.content,sourcePath:e.source===`er`?`[ER] ${e.sourcePath}`:e.sourcePath,startLine:e.startLine??0,endLine:e.endLine??0,contentType:e.contentType??`documentation`,headingPath:e.headingPath,origin:e.source===`er`?`curated`:e.origin??`indexed`,category:e.category,tags:e.tags??[],chunkIndex:0,totalChunks:1,fileHash:``,indexedAt:new Date().toISOString(),version:1},score:e.score})),triggered:!0,cacheHit:a}:{results:n,triggered:!0,cacheHit:a}}catch(e){return h.warn(`ER fallback failed`,u(e)),{results:n,triggered:!0,cacheHit:a}}}function _(e,t,n=60){let r=new Map;for(let t=0;t<e.length;t++){let i=e[t];r.set(i.record.id,{record:i.record,score:1/(n+t+1)})}for(let e=0;e<t.length;e++){let i=t[e],a=r.get(i.record.id);a?a.score+=1/(n+e+1):r.set(i.record.id,{record:i.record,score:1/(n+e+1)})}return[...r.values()].sort((e,t)=>t.score-e.score).map(({record:e,score:t})=>({record:e,score:t}))}function v(e,t){let n=t.toLowerCase().split(/\s+/).filter(e=>e.length>=2);return n.length<2?e:e.map(e=>{let t=e.record.content.toLowerCase(),r=n.map(e=>{let n=[],r=t.indexOf(e);for(;r!==-1;)n.push(r),r=t.indexOf(e,r+1);return n});if(r.some(e=>e.length===0))return e;let i=t.length;for(let e of r[0]){let t=e,a=e+n[0].length;for(let i=1;i<r.length;i++){let o=r[i][0],s=Math.abs(o-e);for(let t=1;t<r[i].length;t++){let n=Math.abs(r[i][t]-e);n<s&&(s=n,o=r[i][t])}t=Math.min(t,o),a=Math.max(a,o+n[i].length)}i=Math.min(i,a-t)}let a=1+.25/(1+i/200);return{record:e.record,score:e.score*a}}).sort((e,t)=>t.score-e.score)}function y(e,t,n=8){let r=new Set(t.toLowerCase().split(/\s+/).filter(e=>e.length>=2)),i=new Map,a=e.length;for(let t of e){let e=new Set(t.record.content.split(/[^a-zA-Z0-9_]+/).filter(e=>e.length>=3&&!b.has(e.toLowerCase())));for(let t of e){let e=t.toLowerCase();/[_A-Z]/.test(t)&&i.set(`__id__${e}`,1)}let n=new Set(t.record.content.toLowerCase().split(/[^a-zA-Z0-9_]+/).filter(e=>e.length>=3&&!b.has(e)));for(let e of n)i.set(e,(i.get(e)??0)+1)}let o=[];for(let[e,t]of i){if(e.startsWith(`__id__`)||r.has(e)||t>a*.8)continue;let n=Math.log(a/t),s=i.has(`__id__${e}`)?1:0,c=e.length>8?.5:0;o.push({term:e,score:n+s+c})}return o.sort((e,t)=>t.score-e.score).slice(0,n).map(e=>e.term)}const b=new Set(`the.and.for.are.but.not.you.all.can.had.her.was.one.our.out.has.have.from.this.that.with.they.been.said.each.which.their.will.other.about.many.then.them.these.some.would.make.like.into.could.time.very.when.come.just.know.take.people.also.back.after.only.more.than.over.such.import.export.const.function.return.true.false.null.undefined.string.number.boolean.void.type.interface`.split(`.`));async function x(e,t){try{let n=await e.getStats();if(!n.lastIndexedAt)return;let r=new Date(n.lastIndexedAt).getTime(),a=Date.now(),o=[...new Set(t.map(e=>e.record.sourcePath))].filter(e=>!e.startsWith(`[ER]`)).slice(0,5);if(o.length===0)return;let s=0;for(let e of o)try{(await i(e)).mtimeMs>r&&s++}catch{s++}if(s>0){let e=a-r,t=Math.floor(e/6e4),n=t<1?`<1 min`:`${t} min`;return`> ⚠️ **Index may be stale** ${s} file(s) modified since last index (${n} ago). Use \`reindex\` to refresh.`}}catch{}}function S(i,l,m,b,S,C){i.registerTool(`search`,{description:`Search the knowledge base with hybrid vector + keyword matching (BM25 + RRF fusion). Best for finding code, docs, and prior decisions. Supports semantic, keyword, and hybrid modes.`,inputSchema:{query:p.string().max(5e3).describe(`Natural language search query`),limit:p.number().min(1).max(20).default(5).describe(`Maximum results to return`),search_mode:p.enum([`hybrid`,`semantic`,`keyword`]).default(`hybrid`).describe(`Search strategy: hybrid (vector + FTS + RRF fusion, default), semantic (vector only), keyword (FTS only)`),content_type:p.enum(a).optional().describe(`Filter by content type`),source_type:p.enum(s).optional().describe(`Coarse filter: "source" (code only), "documentation" (md, curated), "test", "config". Overrides content_type if both set.`),origin:p.enum(o).optional().describe(`Filter by knowledge origin`),category:p.string().optional().describe(`Filter by category (e.g., decisions, patterns, conventions)`),tags:p.array(p.string()).optional().describe(`Filter by tags (returns results matching ANY of the specified tags)`),min_score:p.number().min(0).max(1).default(.25).describe(`Minimum similarity score`),graph_hops:p.number().min(0).max(3).default(0).describe(`Number of graph hops to augment results with (0 = no graph context, 1-3 = enrich results with connected entities)`),max_tokens:p.number().min(100).max(5e4).optional().describe(`Maximum token budget for the response. When set, output is truncated to fit.`),dedup:p.enum([`file`,`chunk`]).default(`chunk`).describe(`Deduplication mode: "chunk" (default, show all matching chunks) or "file" (collapse chunks from same file into single result with merged line ranges)`),workspaces:p.array(p.string()).optional().describe(`Cross-workspace search: partition names or folder basenames to include. Use ["*"] for all registered workspaces. Only works in global install mode.`)}},async({query:i,limit:a,search_mode:o,content_type:s,source_type:p,origin:w,category:T,tags:E,min_score:D,graph_hops:O,max_tokens:k,dedup:A,workspaces:j})=>{try{let M={limit:a,minScore:D,contentType:s,sourceType:p,origin:w,category:T,tags:E},N,P=!1,F=!1;if(o===`keyword`)N=await m.ftsSearch(i,M),N=N.slice(0,a);else if(o===`semantic`){let e=await l.embedQuery(i);N=await m.search(e,M);let t=await g(S,N[0]?.score??0,N,i,a);N=t.results,P=t.triggered,F=t.cacheHit}else{let e=await l.embedQuery(i),[t,n]=await Promise.all([m.search(e,{...M,limit:a*2}),m.ftsSearch(i,{...M,limit:a*2}).catch(()=>[])]);N=_(t,n).slice(0,a);let r=await g(S,t[0]?.score??0,N,i,a);N=r.results,P=r.triggered,F=r.cacheHit}C&&C.recordSearch(i,P,F),N.length>1&&(N=v(N,i));let I=``;if(j&&j.length>0){let s=r(j,c(process.cwd()));if(s.length>0){let{stores:r,closeAll:c}=await n(s);try{let n;n=o===`keyword`?await e(r,i,{...M,limit:a}):await t(r,await l.embedQuery(i),{...M,limit:a});for(let e of n)N.push({record:{...e.record,sourcePath:`[${e.workspace}] ${e.record.sourcePath}`},score:e.score});N=N.sort((e,t)=>t.score-e.score).slice(0,a),I=` + ${s.length} workspace(s)`}finally{await c()}}}if(A===`file`&&N.length>1){let e=new Map;for(let t of N){let n=t.record.sourcePath,r=e.get(n);r?(t.score>r.best.score&&(r.best=t),r.ranges.push({start:t.record.startLine,end:t.record.endLine})):e.set(n,{best:t,ranges:[{start:t.record.startLine,end:t.record.endLine}]})}N=[...e.values()].sort((e,t)=>t.best.score-e.best.score).map(({best:e,ranges:t})=>({record:{...e.record,content:t.length>1?`${e.record.content}\n\n_Matched ${t.length} sections: ${t.sort((e,t)=>e.start-t.start).map(e=>`L${e.start}-${e.end}`).join(`, `)}_`:e.record.content},score:e.score}))}if(N.length===0)return{content:[{type:`text`,text:`No results found for the given query.`}]};let L,R;if(O>0&&!b&&(R="> **Note:** `graph_hops` was set but no graph store is available. Graph augmentation skipped."),O>0&&b)try{let e=await d(b,N.map(e=>({recordId:e.record.id,score:e.score,sourcePath:e.record.sourcePath})),{hops:O,maxPerHit:5});L=new Map;for(let t of e)if(t.graphContext.nodes.length>0){let e=t.graphContext.nodes.slice(0,5).map(e=>` - **${e.name}** (${e.type})`).join(`
2
+ `),n=t.graphContext.edges.slice(0,5).map(e=>` - ${e.fromId} —[${e.type}]→ ${e.toId}`).join(`
3
+ `),r=[`- **Graph Context** (${O} hop${O>1?`s`:``}):`];e&&r.push(` Entities:\n${e}`),n&&r.push(` Relationships:\n${n}`),L.set(t.recordId,r.join(`
4
+ `))}}catch(e){h.warn(`Graph augmentation failed`,u(e)),R=`> **Note:** Graph augmentation failed. Results shown without graph context.`}let z=N.map((e,t)=>{let n=e.record;return`${`### Result ${t+1} (score: ${e.score.toFixed(3)})`}\n${[`- **Source**: ${n.sourcePath}`,n.headingPath?`- **Section**: ${n.headingPath}`:null,`- **Type**: ${n.contentType}`,n.startLine?`- **Lines**: ${n.startLine}-${n.endLine}`:null,n.origin===`indexed`?null:`- **Origin**: ${n.origin}`,n.category?`- **Category**: ${n.category}`:null,n.tags?.length?`- **Tags**: ${n.tags.join(`, `)}`:null,L?.get(n.id)??null].filter(Boolean).join(`
5
+ `)}\n\n${n.content}`}).join(`
13
6
 
14
7
  ---
15
8
 
16
- `),I=d==="hybrid"?"hybrid (vector + keyword RRF)":d==="keyword"?"keyword (FTS)":"semantic (vector)",L=E(l,e),B=L.length>0?`
17
- _Distinctive terms: ${L.map(u=>`\`${u}\``).join(", ")}_`:"",C=await G(a,l),$=[];if(l.length===0)$.push("`reindex` \u2014 no results found, index may be stale"),$.push("`find` \u2014 try federated search with glob/regex");else{const u=l[0]?.record.sourcePath;u&&$.push(`\`lookup\` \u2014 see all chunks from \`${u}\``),$.push("`symbol` \u2014 resolve a specific symbol from the results"),$.push("`compact` \u2014 compress a result file for focused reading")}let T=[R?`${R}
18
-
19
- `:"",C?`${C}
20
-
21
- `:"",F,`
22
-
23
- ---
24
- _Search mode: ${I} | ${l.length} results_${B}`,`
25
- _Next: ${$.join(" | ")}_`].join("");return b&&(T=D(T,b)),{content:[{type:"text",text:T}]}}catch(x){return console.error("[KB] Search failed:",x),{content:[{type:"text",text:`Search failed: ${x.message}`}],isError:!0}}})}export{Q as registerSearchTool};
9
+ `),B=(o===`hybrid`?`hybrid (vector + keyword RRF)`:o===`keyword`?`keyword (FTS)`:`semantic (vector)`)+I,V=y(N,i),H=V.length>0?`\n_Distinctive terms: ${V.map(e=>`\`${e}\``).join(`, `)}_`:``,U=await x(m,N),W=[];if(N.length===0)W.push("`reindex` — no results found, index may be stale"),W.push("`find` — try federated search with glob/regex");else{let e=N[0]?.record.sourcePath;e&&W.push(`\`lookup\` — see all chunks from \`${e}\``),W.push("`symbol` — resolve a specific symbol from the results"),W.push("`compact` — compress a result file for focused reading")}let G=[R?`${R}\n\n`:``,U?`${U}\n\n`:``,z,`\n\n---\n_Search mode: ${B} | ${N.length} results_${H}`,`\n_Next: ${W.join(` | `)}_`].join(``);return k&&(G=f(G,k)),{content:[{type:`text`,text:G}]}}catch(e){return h.error(`Search failed`,u(e)),{content:[{type:`text`,text:`Search failed: ${e instanceof Error?e.message:String(e)}`}],isError:!0}}})}export{S as registerSearchTool};
@@ -1,4 +1,12 @@
1
- import type { IGraphStore, IKnowledgeStore } from '@kb/store';
2
- import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
3
- export declare function registerStatusTool(server: McpServer, store: IKnowledgeStore, graphStore?: IGraphStore): void;
4
- //# sourceMappingURL=status.tool.d.ts.map
1
+ import { CuratedKnowledgeManager } from "../curated-manager.js";
2
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
3
+ import { IGraphStore, IKnowledgeStore } from "@kb/store";
4
+
5
+ //#region packages/server/src/tools/status.tool.d.ts
6
+ interface OnboardState {
7
+ onboardComplete: boolean;
8
+ onboardTimestamp?: string;
9
+ }
10
+ declare function registerStatusTool(server: McpServer, store: IKnowledgeStore, graphStore?: IGraphStore, curated?: CuratedKnowledgeManager, onboardState?: OnboardState): void;
11
+ //#endregion
12
+ export { OnboardState, registerStatusTool };
@@ -1,3 +1,2 @@
1
- import{TreeSitterRuntime as d}from"../../../chunker/dist/index.js";function u(i,n,a){i.registerTool("status",{description:"Get the current status and statistics of the knowledge base index."},async()=>{try{const e=await n.getStats(),r=await n.listSourcePaths(),o=["## Knowledge Base Status","",`- **Total Records**: ${e.totalRecords}`,`- **Total Files**: ${e.totalFiles}`,`- **Last Indexed**: ${e.lastIndexedAt??"Never"}`,"","### Content Types",...Object.entries(e.contentTypeBreakdown).map(([t,s])=>`- ${t}: ${s}`),"","### Indexed Files",...r.slice(0,50).map(t=>`- ${t}`),r.length>50?`
2
- ... and ${r.length-50} more files`:""];if(a)try{const t=await a.getStats();o.push("","### Knowledge Graph",`- **Nodes**: ${t.nodeCount}`,`- **Edges**: ${t.edgeCount}`,...Object.entries(t.nodeTypes).map(([s,c])=>` - ${s}: ${c}`))}catch{o.push("","### Knowledge Graph","- Graph store unavailable")}return o.push("","### Runtime",`- **Tree-sitter**: ${d.get()?"\u2705 Available":"\u26A0 Unavailable (regex fallback)"}`),{content:[{type:"text",text:o.join(`
3
- `)+"\n\n---\n_Next: Use `search` to query indexed content, `graph(stats)` to explore the knowledge graph, or `reindex` to refresh the index._"}]}}catch(e){return console.error("[KB] Status failed:",e),{content:[{type:"text",text:`Status check failed: ${e.message}`}],isError:!0}}})}export{u as registerStatusTool};
1
+ import{existsSync as e}from"node:fs";import{resolve as t}from"node:path";import{WasmRuntime as n}from"../../../chunker/dist/index.js";import{KB_PATHS as r,createLogger as i,serializeError as a}from"../../../core/dist/index.js";const o=i(`tools`);function s(i,s,c,l,u){i.registerTool(`status`,{description:`Get the current status and statistics of the knowledge base index.`},async()=>{try{let i=await s.getStats(),a=await s.listSourcePaths(),o=[`## Knowledge Base Status`,``,`- **Total Records**: ${i.totalRecords}`,`- **Total Files**: ${i.totalFiles}`,`- **Last Indexed**: ${i.lastIndexedAt??`Never`}`,``,`### Content Types`,...Object.entries(i.contentTypeBreakdown).map(([e,t])=>`- ${e}: ${t}`),``,`### Indexed Files`,...a.slice(0,50).map(e=>`- ${e}`),a.length>50?`\n... and ${a.length-50} more files`:``];if(c)try{let e=await c.getStats();o.push(``,`### Knowledge Graph`,`- **Nodes**: ${e.nodeCount}`,`- **Edges**: ${e.edgeCount}`,...Object.entries(e.nodeTypes).map(([e,t])=>` - ${e}: ${t}`))}catch{o.push(``,`### Knowledge Graph`,`- Graph store unavailable`)}let d=e(t(process.cwd(),r.aiKb)),f=u?.onboardComplete??d;if(o.push(``,`### Onboard Status`,f?`- ✅ Complete${u?.onboardTimestamp?` (last: ${u.onboardTimestamp})`:``}`:'- ❌ Not run — call `onboard({ path: "." })` to analyze the codebase'),l)try{let e=await l.list();o.push(``,`### Curated Knowledge`,e.length>0?`- ${e.length} entries`:"- Empty — use `remember()` to persist decisions")}catch{o.push(``,`### Curated Knowledge`,`- Unable to read curated entries`)}if(i.lastIndexedAt){let e=new Date(i.lastIndexedAt),t=(Date.now()-e.getTime())/(1e3*60*60);o.push(``,`### Index Freshness`,t>24?`- ⚠ Last indexed ${Math.floor(t)}h ago — may be stale. Run \`reindex({})\``:`- ✅ Last indexed ${t<1?`less than 1h`:`${Math.floor(t)}h`} ago`)}return o.push(``,`### Runtime`,`- **Tree-sitter (WASM)**: ${n.get()?`✅ Available (AST analysis)`:`⚠ Unavailable (regex fallback)`}`),{content:[{type:`text`,text:o.join(`
2
+ `)+"\n\n---\n_Next: Use `search` to query indexed content, `graph(stats)` to explore the knowledge graph, or `reindex` to refresh the index._"}]}}catch(e){return o.error(`Status failed`,a(e)),{content:[{type:`text`,text:`Status check failed: ${e instanceof Error?e.message:String(e)}`}],isError:!0}}})}export{s as registerStatusTool};
@@ -1,35 +1,36 @@
1
- /**
2
- * MCP tool registrations for @kb/tools capabilities.
3
- */
4
- import type { IEmbedder } from '@kb/embeddings';
5
- import type { IKnowledgeStore } from '@kb/store';
6
- import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
7
- export declare function registerCompactTool(server: McpServer, embedder: IEmbedder): void;
8
- export declare function registerScopeMapTool(server: McpServer, embedder: IEmbedder, store: IKnowledgeStore): void;
9
- export declare function registerFindTool(server: McpServer, embedder: IEmbedder, store: IKnowledgeStore): void;
10
- export declare function registerParseOutputTool(server: McpServer): void;
11
- export declare function registerWorksetTool(server: McpServer): void;
12
- export declare function registerCheckTool(server: McpServer): void;
13
- export declare function registerBatchTool(server: McpServer, embedder: IEmbedder, store: IKnowledgeStore): void;
14
- export declare function registerSymbolTool(server: McpServer, embedder: IEmbedder, store: IKnowledgeStore): void;
15
- export declare function registerEvalTool(server: McpServer): void;
16
- export declare function registerTestRunTool(server: McpServer): void;
17
- export declare function registerStashTool(server: McpServer): void;
18
- export declare function registerGitContextTool(server: McpServer): void;
19
- export declare function registerDiffParseTool(server: McpServer): void;
20
- export declare function registerRenameTool(server: McpServer): void;
21
- export declare function registerCodemodTool(server: McpServer): void;
22
- export declare function registerFileSummaryTool(server: McpServer): void;
23
- export declare function registerCheckpointTool(server: McpServer): void;
24
- export declare function registerDataTransformTool(server: McpServer): void;
25
- export declare function registerTraceTool(server: McpServer, embedder: IEmbedder, store: IKnowledgeStore): void;
26
- export declare function registerProcessTool(server: McpServer): void;
27
- export declare function registerWatchTool(server: McpServer): void;
28
- export declare function registerDeadSymbolsTool(server: McpServer, embedder: IEmbedder, store: IKnowledgeStore): void;
29
- export declare function registerDelegateTool(server: McpServer): void;
30
- export declare function registerLaneTool(server: McpServer): void;
31
- export declare function registerHealthTool(server: McpServer): void;
32
- export declare function registerQueueTool(server: McpServer): void;
33
- export declare function registerWebFetchTool(server: McpServer): void;
34
- export declare function registerGuideTool(server: McpServer): void;
35
- //# sourceMappingURL=toolkit.tools.d.ts.map
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import { IEmbedder } from "@kb/embeddings";
3
+ import { IKnowledgeStore } from "@kb/store";
4
+ import { FileCache } from "@kb/tools";
5
+
6
+ //#region packages/server/src/tools/toolkit.tools.d.ts
7
+ declare function registerCompactTool(server: McpServer, embedder: IEmbedder, cache: FileCache): void;
8
+ declare function registerScopeMapTool(server: McpServer, embedder: IEmbedder, store: IKnowledgeStore): void;
9
+ declare function registerFindTool(server: McpServer, embedder: IEmbedder, store: IKnowledgeStore): void;
10
+ declare function registerParseOutputTool(server: McpServer): void;
11
+ declare function registerWorksetTool(server: McpServer): void;
12
+ declare function registerCheckTool(server: McpServer): void;
13
+ declare function registerBatchTool(server: McpServer, embedder: IEmbedder, store: IKnowledgeStore): void;
14
+ declare function registerSymbolTool(server: McpServer, embedder: IEmbedder, store: IKnowledgeStore): void;
15
+ declare function registerEvalTool(server: McpServer): void;
16
+ declare function registerTestRunTool(server: McpServer): void;
17
+ declare function registerStashTool(server: McpServer): void;
18
+ declare function registerGitContextTool(server: McpServer): void;
19
+ declare function registerDiffParseTool(server: McpServer): void;
20
+ declare function registerRenameTool(server: McpServer): void;
21
+ declare function registerCodemodTool(server: McpServer): void;
22
+ declare function registerFileSummaryTool(server: McpServer, cache: FileCache): void;
23
+ declare function registerCheckpointTool(server: McpServer): void;
24
+ declare function registerDataTransformTool(server: McpServer): void;
25
+ declare function registerTraceTool(server: McpServer, embedder: IEmbedder, store: IKnowledgeStore): void;
26
+ declare function registerProcessTool(server: McpServer): void;
27
+ declare function registerWatchTool(server: McpServer): void;
28
+ declare function registerDeadSymbolsTool(server: McpServer, embedder: IEmbedder, store: IKnowledgeStore): void;
29
+ declare function registerDelegateTool(server: McpServer): void;
30
+ declare function registerLaneTool(server: McpServer): void;
31
+ declare function registerHealthTool(server: McpServer): void;
32
+ declare function registerQueueTool(server: McpServer): void;
33
+ declare function registerWebFetchTool(server: McpServer): void;
34
+ declare function registerGuideTool(server: McpServer): void;
35
+ //#endregion
36
+ export { registerBatchTool, registerCheckTool, registerCheckpointTool, registerCodemodTool, registerCompactTool, registerDataTransformTool, registerDeadSymbolsTool, registerDelegateTool, registerDiffParseTool, registerEvalTool, registerFileSummaryTool, registerFindTool, registerGitContextTool, registerGuideTool, registerHealthTool, registerLaneTool, registerParseOutputTool, registerProcessTool, registerQueueTool, registerRenameTool, registerScopeMapTool, registerStashTool, registerSymbolTool, registerTestRunTool, registerTraceTool, registerWatchTool, registerWebFetchTool, registerWorksetTool };