@vpxa/kb 0.1.12 → 0.1.15

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 (383) hide show
  1. package/README.md +56 -39
  2. package/package.json +10 -7
  3. package/packages/analyzers/dist/blast-radius-analyzer.d.ts +17 -20
  4. package/packages/analyzers/dist/blast-radius-analyzer.js +6 -12
  5. package/packages/analyzers/dist/dependency-analyzer.d.ts +31 -27
  6. package/packages/analyzers/dist/dependency-analyzer.js +7 -9
  7. package/packages/analyzers/dist/diagram-generator.d.ts +12 -8
  8. package/packages/analyzers/dist/diagram-generator.js +3 -4
  9. package/packages/analyzers/dist/entry-point-analyzer.d.ts +39 -17
  10. package/packages/analyzers/dist/entry-point-analyzer.js +5 -5
  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 +29 -25
  14. package/packages/analyzers/dist/knowledge-producer.js +16 -15
  15. package/packages/analyzers/dist/pattern-analyzer.d.ts +14 -10
  16. package/packages/analyzers/dist/pattern-analyzer.js +3 -5
  17. package/packages/analyzers/dist/regex-call-graph.d.ts +6 -12
  18. package/packages/analyzers/dist/regex-call-graph.js +2 -1
  19. package/packages/analyzers/dist/structure-analyzer.d.ts +13 -9
  20. package/packages/analyzers/dist/structure-analyzer.js +3 -4
  21. package/packages/analyzers/dist/symbol-analyzer.d.ts +12 -8
  22. package/packages/analyzers/dist/symbol-analyzer.js +8 -13
  23. package/packages/analyzers/dist/ts-call-graph.d.ts +16 -13
  24. package/packages/analyzers/dist/ts-call-graph.js +2 -1
  25. package/packages/analyzers/dist/types.d.ts +82 -79
  26. package/packages/analyzers/dist/types.js +1 -0
  27. package/packages/chunker/dist/call-graph-extractor.d.ts +13 -10
  28. package/packages/chunker/dist/call-graph-extractor.js +2 -1
  29. package/packages/chunker/dist/chunker-factory.d.ts +6 -2
  30. package/packages/chunker/dist/chunker-factory.js +2 -1
  31. package/packages/chunker/dist/chunker.interface.d.ts +8 -4
  32. package/packages/chunker/dist/chunker.interface.js +1 -0
  33. package/packages/chunker/dist/code-chunker.d.ts +16 -12
  34. package/packages/chunker/dist/code-chunker.js +12 -14
  35. package/packages/chunker/dist/generic-chunker.d.ts +14 -10
  36. package/packages/chunker/dist/generic-chunker.js +6 -5
  37. package/packages/chunker/dist/index.d.ts +8 -8
  38. package/packages/chunker/dist/index.js +1 -1
  39. package/packages/chunker/dist/markdown-chunker.d.ts +16 -12
  40. package/packages/chunker/dist/markdown-chunker.js +4 -10
  41. package/packages/chunker/dist/treesitter-chunker.d.ts +28 -31
  42. package/packages/chunker/dist/treesitter-chunker.js +7 -8
  43. package/packages/cli/dist/commands/analyze.d.ts +6 -2
  44. package/packages/cli/dist/commands/analyze.js +3 -3
  45. package/packages/cli/dist/commands/context-cmds.d.ts +6 -2
  46. package/packages/cli/dist/commands/context-cmds.js +2 -1
  47. package/packages/cli/dist/commands/environment.d.ts +6 -2
  48. package/packages/cli/dist/commands/environment.js +2 -2
  49. package/packages/cli/dist/commands/execution.d.ts +6 -2
  50. package/packages/cli/dist/commands/execution.js +2 -1
  51. package/packages/cli/dist/commands/graph.d.ts +6 -2
  52. package/packages/cli/dist/commands/graph.js +6 -6
  53. package/packages/cli/dist/commands/init/adapters.d.ts +27 -0
  54. package/packages/cli/dist/commands/init/adapters.js +2 -0
  55. package/packages/cli/dist/commands/init/config.d.ts +11 -0
  56. package/packages/cli/dist/commands/init/config.js +4 -0
  57. package/packages/cli/dist/commands/init/curated.d.ts +8 -0
  58. package/packages/cli/dist/commands/init/curated.js +2 -0
  59. package/packages/cli/dist/commands/init/index.d.ts +23 -0
  60. package/packages/cli/dist/commands/init/index.js +3 -0
  61. package/packages/cli/dist/commands/init/scaffold.d.ts +24 -0
  62. package/packages/cli/dist/commands/init/scaffold.js +2 -0
  63. package/packages/cli/dist/commands/init/templates.d.ts +10 -0
  64. package/packages/cli/dist/commands/init/templates.js +302 -0
  65. package/packages/cli/dist/commands/init.d.ts +9 -3
  66. package/packages/cli/dist/commands/init.js +253 -197
  67. package/packages/cli/dist/commands/knowledge.d.ts +6 -2
  68. package/packages/cli/dist/commands/knowledge.js +2 -1
  69. package/packages/cli/dist/commands/search.d.ts +6 -2
  70. package/packages/cli/dist/commands/search.js +2 -8
  71. package/packages/cli/dist/commands/system.d.ts +6 -2
  72. package/packages/cli/dist/commands/system.js +5 -4
  73. package/packages/cli/dist/commands/workspace.d.ts +6 -2
  74. package/packages/cli/dist/commands/workspace.js +2 -2
  75. package/packages/cli/dist/context.d.ts +7 -4
  76. package/packages/cli/dist/context.js +2 -1
  77. package/packages/cli/dist/helpers.d.ts +51 -47
  78. package/packages/cli/dist/helpers.js +6 -3
  79. package/packages/cli/dist/index.d.ts +4 -1
  80. package/packages/cli/dist/index.js +3 -2
  81. package/packages/cli/dist/kb-init.d.ts +48 -50
  82. package/packages/cli/dist/kb-init.js +2 -1
  83. package/packages/cli/dist/types.d.ts +8 -5
  84. package/packages/cli/dist/types.js +1 -0
  85. package/packages/core/dist/constants.d.ts +36 -33
  86. package/packages/core/dist/constants.js +2 -1
  87. package/packages/core/dist/content-detector.d.ts +10 -5
  88. package/packages/core/dist/content-detector.js +2 -1
  89. package/packages/core/dist/errors.d.ts +15 -12
  90. package/packages/core/dist/errors.js +2 -1
  91. package/packages/core/dist/index.d.ts +6 -6
  92. package/packages/core/dist/index.js +1 -1
  93. package/packages/core/dist/logger.d.ts +16 -7
  94. package/packages/core/dist/logger.js +2 -1
  95. package/packages/core/dist/types.d.ts +108 -90
  96. package/packages/core/dist/types.js +2 -0
  97. package/packages/embeddings/dist/embedder.interface.d.ts +22 -19
  98. package/packages/embeddings/dist/embedder.interface.js +1 -0
  99. package/packages/embeddings/dist/index.d.ts +3 -3
  100. package/packages/embeddings/dist/index.js +1 -1
  101. package/packages/embeddings/dist/onnx-embedder.d.ts +21 -22
  102. package/packages/embeddings/dist/onnx-embedder.js +2 -1
  103. package/packages/enterprise-bridge/dist/cache.d.ts +29 -0
  104. package/packages/enterprise-bridge/dist/cache.js +2 -0
  105. package/packages/enterprise-bridge/dist/er-client.d.ts +38 -0
  106. package/packages/enterprise-bridge/dist/er-client.js +2 -0
  107. package/packages/enterprise-bridge/dist/evolution-collector.d.ts +63 -0
  108. package/packages/enterprise-bridge/dist/evolution-collector.js +2 -0
  109. package/packages/enterprise-bridge/dist/index.d.ts +8 -0
  110. package/packages/enterprise-bridge/dist/index.js +1 -0
  111. package/packages/enterprise-bridge/dist/policy-store.d.ts +46 -0
  112. package/packages/enterprise-bridge/dist/policy-store.js +2 -0
  113. package/packages/enterprise-bridge/dist/push-adapter.d.ts +24 -0
  114. package/packages/enterprise-bridge/dist/push-adapter.js +2 -0
  115. package/packages/enterprise-bridge/dist/result-merger.d.ts +15 -0
  116. package/packages/enterprise-bridge/dist/result-merger.js +2 -0
  117. package/packages/enterprise-bridge/dist/types.d.ts +82 -0
  118. package/packages/enterprise-bridge/dist/types.js +2 -0
  119. package/packages/indexer/dist/file-hasher.d.ts +5 -2
  120. package/packages/indexer/dist/file-hasher.js +2 -1
  121. package/packages/indexer/dist/filesystem-crawler.d.ts +23 -20
  122. package/packages/indexer/dist/filesystem-crawler.js +2 -1
  123. package/packages/indexer/dist/graph-extractor.d.ts +9 -12
  124. package/packages/indexer/dist/graph-extractor.js +2 -1
  125. package/packages/indexer/dist/incremental-indexer.d.ts +49 -43
  126. package/packages/indexer/dist/incremental-indexer.js +2 -1
  127. package/packages/indexer/dist/index.d.ts +5 -5
  128. package/packages/indexer/dist/index.js +1 -1
  129. package/packages/server/dist/api.d.ts +3 -8
  130. package/packages/server/dist/api.js +1 -1
  131. package/packages/server/dist/config.d.ts +6 -2
  132. package/packages/server/dist/config.js +2 -1
  133. package/packages/server/dist/curated-manager.d.ts +79 -76
  134. package/packages/server/dist/curated-manager.js +6 -10
  135. package/packages/server/dist/index.d.ts +1 -2
  136. package/packages/server/dist/index.js +2 -1
  137. package/packages/server/dist/replay-interceptor.d.ts +6 -6
  138. package/packages/server/dist/replay-interceptor.js +2 -1
  139. package/packages/server/dist/resources/resources.d.ts +7 -3
  140. package/packages/server/dist/resources/resources.js +3 -2
  141. package/packages/server/dist/server.d.ts +34 -24
  142. package/packages/server/dist/server.js +2 -1
  143. package/packages/server/dist/tools/analyze.tools.d.ts +14 -10
  144. package/packages/server/dist/tools/analyze.tools.js +2 -1
  145. package/packages/server/dist/tools/audit.tool.d.ts +9 -0
  146. package/packages/server/dist/tools/audit.tool.js +2 -0
  147. package/packages/server/dist/tools/bridge.tools.d.ts +35 -0
  148. package/packages/server/dist/tools/bridge.tools.js +16 -0
  149. package/packages/server/dist/tools/evolution.tools.d.ts +8 -0
  150. package/packages/server/dist/tools/evolution.tools.js +6 -0
  151. package/packages/server/dist/tools/forge.tools.d.ts +13 -11
  152. package/packages/server/dist/tools/forge.tools.js +11 -13
  153. package/packages/server/dist/tools/forget.tool.d.ts +7 -3
  154. package/packages/server/dist/tools/forget.tool.js +2 -7
  155. package/packages/server/dist/tools/graph.tool.d.ts +7 -3
  156. package/packages/server/dist/tools/graph.tool.js +5 -5
  157. package/packages/server/dist/tools/list.tool.d.ts +7 -3
  158. package/packages/server/dist/tools/list.tool.js +3 -8
  159. package/packages/server/dist/tools/lookup.tool.d.ts +7 -3
  160. package/packages/server/dist/tools/lookup.tool.js +3 -9
  161. package/packages/server/dist/tools/onboard.tool.d.ts +8 -4
  162. package/packages/server/dist/tools/onboard.tool.js +3 -2
  163. package/packages/server/dist/tools/policy.tools.d.ts +8 -0
  164. package/packages/server/dist/tools/policy.tools.js +3 -0
  165. package/packages/server/dist/tools/produce.tool.d.ts +6 -2
  166. package/packages/server/dist/tools/produce.tool.js +3 -2
  167. package/packages/server/dist/tools/read.tool.d.ts +7 -3
  168. package/packages/server/dist/tools/read.tool.js +3 -6
  169. package/packages/server/dist/tools/reindex.tool.d.ts +10 -6
  170. package/packages/server/dist/tools/reindex.tool.js +3 -2
  171. package/packages/server/dist/tools/remember.tool.d.ts +8 -3
  172. package/packages/server/dist/tools/remember.tool.js +4 -5
  173. package/packages/server/dist/tools/replay.tool.d.ts +6 -2
  174. package/packages/server/dist/tools/replay.tool.js +3 -6
  175. package/packages/server/dist/tools/search.tool.d.ts +10 -4
  176. package/packages/server/dist/tools/search.tool.js +7 -18
  177. package/packages/server/dist/tools/status.tool.d.ts +7 -3
  178. package/packages/server/dist/tools/status.tool.js +3 -3
  179. package/packages/server/dist/tools/toolkit.tools.d.ts +36 -34
  180. package/packages/server/dist/tools/toolkit.tools.js +20 -21
  181. package/packages/server/dist/tools/update.tool.d.ts +7 -3
  182. package/packages/server/dist/tools/update.tool.js +2 -6
  183. package/packages/server/dist/tools/utility.tools.d.ts +15 -14
  184. package/packages/server/dist/tools/utility.tools.js +11 -23
  185. package/packages/server/dist/version-check.d.ts +5 -1
  186. package/packages/server/dist/version-check.js +2 -1
  187. package/packages/store/dist/graph-store.interface.d.ts +89 -86
  188. package/packages/store/dist/graph-store.interface.js +1 -0
  189. package/packages/store/dist/index.d.ts +6 -6
  190. package/packages/store/dist/index.js +1 -1
  191. package/packages/store/dist/lance-store.d.ts +37 -30
  192. package/packages/store/dist/lance-store.js +2 -1
  193. package/packages/store/dist/sqlite-graph-store.d.ts +43 -46
  194. package/packages/store/dist/sqlite-graph-store.js +14 -13
  195. package/packages/store/dist/store-factory.d.ts +11 -7
  196. package/packages/store/dist/store-factory.js +2 -1
  197. package/packages/store/dist/store.interface.d.ts +47 -44
  198. package/packages/store/dist/store.interface.js +1 -0
  199. package/packages/tools/dist/audit.d.ts +66 -0
  200. package/packages/tools/dist/audit.js +7 -0
  201. package/packages/tools/dist/batch.d.ts +20 -17
  202. package/packages/tools/dist/batch.js +2 -1
  203. package/packages/tools/dist/changelog.d.ts +29 -26
  204. package/packages/tools/dist/changelog.js +3 -2
  205. package/packages/tools/dist/check.d.ts +45 -22
  206. package/packages/tools/dist/check.js +3 -2
  207. package/packages/tools/dist/checkpoint.d.ts +17 -14
  208. package/packages/tools/dist/checkpoint.js +2 -2
  209. package/packages/tools/dist/codemod.d.ts +35 -32
  210. package/packages/tools/dist/codemod.js +3 -2
  211. package/packages/tools/dist/compact.d.ts +34 -35
  212. package/packages/tools/dist/compact.js +3 -2
  213. package/packages/tools/dist/data-transform.d.ts +10 -7
  214. package/packages/tools/dist/data-transform.js +2 -1
  215. package/packages/tools/dist/dead-symbols.d.ts +29 -17
  216. package/packages/tools/dist/dead-symbols.js +3 -2
  217. package/packages/tools/dist/delegate.d.ts +26 -23
  218. package/packages/tools/dist/delegate.js +2 -5
  219. package/packages/tools/dist/diff-parse.d.ts +24 -21
  220. package/packages/tools/dist/diff-parse.js +4 -3
  221. package/packages/tools/dist/digest.d.ts +43 -45
  222. package/packages/tools/dist/digest.js +5 -5
  223. package/packages/tools/dist/encode.d.ts +11 -8
  224. package/packages/tools/dist/encode.js +2 -1
  225. package/packages/tools/dist/env-info.d.ts +25 -22
  226. package/packages/tools/dist/env-info.js +2 -1
  227. package/packages/tools/dist/eval.d.ts +13 -10
  228. package/packages/tools/dist/eval.js +3 -3
  229. package/packages/tools/dist/evidence-map.d.ts +64 -61
  230. package/packages/tools/dist/evidence-map.js +3 -3
  231. package/packages/tools/dist/file-cache.d.ts +42 -0
  232. package/packages/tools/dist/file-cache.js +4 -0
  233. package/packages/tools/dist/file-summary.d.ts +34 -29
  234. package/packages/tools/dist/file-summary.js +3 -2
  235. package/packages/tools/dist/file-walk.d.ts +6 -3
  236. package/packages/tools/dist/file-walk.js +2 -1
  237. package/packages/tools/dist/find-examples.d.ts +26 -21
  238. package/packages/tools/dist/find-examples.js +4 -3
  239. package/packages/tools/dist/find.d.ts +39 -40
  240. package/packages/tools/dist/find.js +2 -1
  241. package/packages/tools/dist/forge-classify.d.ts +35 -38
  242. package/packages/tools/dist/forge-classify.js +3 -2
  243. package/packages/tools/dist/forge-ground.d.ts +58 -60
  244. package/packages/tools/dist/forge-ground.js +2 -1
  245. package/packages/tools/dist/git-context.d.ts +22 -19
  246. package/packages/tools/dist/git-context.js +4 -3
  247. package/packages/tools/dist/graph-query.d.ts +75 -78
  248. package/packages/tools/dist/graph-query.js +2 -1
  249. package/packages/tools/dist/guide.d.ts +26 -0
  250. package/packages/tools/dist/guide.js +2 -0
  251. package/packages/tools/dist/health.d.ts +13 -10
  252. package/packages/tools/dist/health.js +3 -1
  253. package/packages/tools/dist/http-request.d.ts +20 -17
  254. package/packages/tools/dist/http-request.js +2 -1
  255. package/packages/tools/dist/index.d.ts +54 -49
  256. package/packages/tools/dist/index.js +1 -1
  257. package/packages/tools/dist/lane.d.ts +28 -25
  258. package/packages/tools/dist/lane.js +7 -7
  259. package/packages/tools/dist/measure.d.ts +32 -29
  260. package/packages/tools/dist/measure.js +3 -2
  261. package/packages/tools/dist/onboard.d.ts +29 -26
  262. package/packages/tools/dist/onboard.js +18 -41
  263. package/packages/tools/dist/parse-output.d.ts +48 -45
  264. package/packages/tools/dist/parse-output.js +3 -2
  265. package/packages/tools/dist/path-resolver.d.ts +15 -0
  266. package/packages/tools/dist/path-resolver.js +2 -0
  267. package/packages/tools/dist/process-manager.d.ts +18 -15
  268. package/packages/tools/dist/process-manager.js +2 -1
  269. package/packages/tools/dist/queue.d.ts +28 -25
  270. package/packages/tools/dist/queue.js +2 -2
  271. package/packages/tools/dist/regex-test.d.ts +26 -23
  272. package/packages/tools/dist/regex-test.js +2 -1
  273. package/packages/tools/dist/rename.d.ts +28 -25
  274. package/packages/tools/dist/rename.js +3 -2
  275. package/packages/tools/dist/replay.d.ts +33 -30
  276. package/packages/tools/dist/replay.js +5 -6
  277. package/packages/tools/dist/response-envelope.d.ts +44 -0
  278. package/packages/tools/dist/response-envelope.js +2 -0
  279. package/packages/tools/dist/schema-validate.d.ts +15 -12
  280. package/packages/tools/dist/schema-validate.js +2 -1
  281. package/packages/tools/dist/scope-map.d.ts +45 -45
  282. package/packages/tools/dist/scope-map.js +2 -1
  283. package/packages/tools/dist/snippet.d.ts +26 -24
  284. package/packages/tools/dist/snippet.js +2 -1
  285. package/packages/tools/dist/stash.d.ts +13 -10
  286. package/packages/tools/dist/stash.js +2 -2
  287. package/packages/tools/dist/stratum-card.d.ts +27 -27
  288. package/packages/tools/dist/stratum-card.js +4 -5
  289. package/packages/tools/dist/symbol.d.ts +29 -25
  290. package/packages/tools/dist/symbol.js +4 -3
  291. package/packages/tools/dist/test-run.d.ts +19 -15
  292. package/packages/tools/dist/test-run.js +3 -2
  293. package/packages/tools/dist/text-utils.d.ts +6 -3
  294. package/packages/tools/dist/text-utils.js +3 -2
  295. package/packages/tools/dist/time-utils.d.ts +15 -12
  296. package/packages/tools/dist/time-utils.js +2 -1
  297. package/packages/tools/dist/trace.d.ts +24 -20
  298. package/packages/tools/dist/trace.js +3 -2
  299. package/packages/tools/dist/truncation.d.ts +14 -2
  300. package/packages/tools/dist/truncation.js +8 -14
  301. package/packages/tools/dist/watch.d.ts +28 -25
  302. package/packages/tools/dist/watch.js +2 -1
  303. package/packages/tools/dist/web-fetch.d.ts +35 -32
  304. package/packages/tools/dist/web-fetch.js +7 -12
  305. package/packages/tools/dist/web-search.d.ts +16 -13
  306. package/packages/tools/dist/web-search.js +2 -1
  307. package/packages/tools/dist/workset.d.ts +19 -16
  308. package/packages/tools/dist/workset.js +2 -2
  309. package/packages/tui/dist/App-BAlmxCCw.js +3 -0
  310. package/packages/tui/dist/App.d.ts +11 -5
  311. package/packages/tui/dist/App.js +1 -450
  312. package/packages/tui/dist/CuratedPanel-sYdZAICX.js +3 -0
  313. package/packages/tui/dist/LogPanel-DVB8Sv46.js +4 -0
  314. package/packages/tui/dist/SearchPanel-DREo6zgt.js +3 -0
  315. package/packages/tui/dist/StatusPanel-2ex8fLOO.js +3 -0
  316. package/packages/tui/dist/chunk-D6axbAb-.js +2 -0
  317. package/packages/tui/dist/devtools-DUyj952l.js +8 -0
  318. package/packages/tui/dist/embedder.interface-D4ew0HPW.d.ts +29 -0
  319. package/packages/tui/dist/index-B9VpfVPP.d.ts +14 -0
  320. package/packages/tui/dist/index.d.ts +3 -19
  321. package/packages/tui/dist/index.js +2 -476
  322. package/packages/tui/dist/jsx-runtime-Cof-kwFn.js +317 -0
  323. package/packages/tui/dist/panels/CuratedPanel.d.ts +11 -5
  324. package/packages/tui/dist/panels/CuratedPanel.js +1 -371
  325. package/packages/tui/dist/panels/LogPanel.d.ts +7 -2
  326. package/packages/tui/dist/panels/LogPanel.js +1 -449
  327. package/packages/tui/dist/panels/SearchPanel.d.ts +14 -7
  328. package/packages/tui/dist/panels/SearchPanel.js +1 -372
  329. package/packages/tui/dist/panels/StatusPanel.d.ts +11 -5
  330. package/packages/tui/dist/panels/StatusPanel.js +1 -371
  331. package/packages/tui/dist/store.interface-CnY6SPOH.d.ts +151 -0
  332. package/scaffold/adapters/claude-code.mjs +20 -0
  333. package/scaffold/adapters/copilot.mjs +320 -0
  334. package/scaffold/copilot/agents/Architect-Reviewer-Alpha.agent.md +14 -0
  335. package/scaffold/copilot/agents/Architect-Reviewer-Beta.agent.md +14 -0
  336. package/scaffold/copilot/agents/Code-Reviewer-Alpha.agent.md +12 -0
  337. package/scaffold/copilot/agents/Code-Reviewer-Beta.agent.md +12 -0
  338. package/scaffold/copilot/agents/Debugger.agent.md +31 -0
  339. package/scaffold/copilot/agents/Documenter.agent.md +35 -0
  340. package/scaffold/copilot/agents/Explorer.agent.md +50 -0
  341. package/scaffold/copilot/agents/Frontend.agent.md +29 -0
  342. package/scaffold/copilot/agents/Implementer.agent.md +31 -0
  343. package/scaffold/copilot/agents/Orchestrator.agent.md +96 -0
  344. package/scaffold/copilot/agents/Planner.agent.md +45 -0
  345. package/scaffold/copilot/agents/README.md +57 -0
  346. package/scaffold/copilot/agents/Refactor.agent.md +30 -0
  347. package/scaffold/copilot/agents/Researcher-Alpha.agent.md +12 -0
  348. package/scaffold/copilot/agents/Researcher-Beta.agent.md +12 -0
  349. package/scaffold/copilot/agents/Researcher-Delta.agent.md +12 -0
  350. package/scaffold/copilot/agents/Researcher-Gamma.agent.md +12 -0
  351. package/scaffold/copilot/agents/Security.agent.md +42 -0
  352. package/scaffold/copilot/agents/_shared/adr-protocol.md +91 -0
  353. package/scaffold/copilot/agents/_shared/architect-reviewer-base.md +50 -0
  354. package/scaffold/copilot/agents/_shared/code-agent-base.md +70 -0
  355. package/scaffold/copilot/agents/_shared/code-reviewer-base.md +54 -0
  356. package/scaffold/copilot/agents/_shared/decision-protocol.md +27 -0
  357. package/scaffold/copilot/agents/_shared/forge-protocol.md +46 -0
  358. package/scaffold/copilot/agents/_shared/researcher-base.md +61 -0
  359. package/scaffold/copilot/agents/templates/adr-template.md +27 -0
  360. package/scaffold/copilot/agents/templates/execution-state.md +25 -0
  361. package/scaffold/copilot/prompts/ask.prompt.md +20 -0
  362. package/scaffold/copilot/prompts/debug.prompt.md +25 -0
  363. package/scaffold/copilot/prompts/design.prompt.md +22 -0
  364. package/scaffold/copilot/prompts/implement.prompt.md +26 -0
  365. package/scaffold/copilot/prompts/plan.prompt.md +24 -0
  366. package/scaffold/copilot/prompts/review.prompt.md +31 -0
  367. package/scaffold/definitions/agents.mjs +165 -0
  368. package/scaffold/definitions/bodies.mjs +292 -0
  369. package/scaffold/definitions/hooks.mjs +43 -0
  370. package/scaffold/definitions/models.mjs +56 -0
  371. package/scaffold/definitions/plugins.mjs +24 -0
  372. package/scaffold/definitions/prompts.mjs +145 -0
  373. package/scaffold/definitions/protocols.mjs +322 -0
  374. package/scaffold/definitions/tools.mjs +176 -0
  375. package/scaffold/generate.mjs +74 -0
  376. package/skills/brainstorming/SKILL.md +259 -0
  377. package/skills/brainstorming/scripts/frame-template.html +365 -0
  378. package/skills/brainstorming/scripts/helper.js +216 -0
  379. package/skills/brainstorming/scripts/server.cjs +9 -0
  380. package/skills/brainstorming/scripts/server.src.cjs +249 -0
  381. package/skills/brainstorming/spec-document-reviewer-prompt.md +49 -0
  382. package/skills/brainstorming/visual-companion.md +430 -0
  383. package/skills/knowledge-base/SKILL.md +34 -21
@@ -1,14 +1,18 @@
1
- import type { ChunkMetadata, RawChunk } from '@kb/core';
2
- import type { IChunker } from './chunker.interface.js';
3
- export declare class MarkdownChunker implements IChunker {
4
- private readonly maxChunkSize;
5
- private readonly minChunkSize;
6
- constructor(options?: {
7
- maxChunkSize?: number;
8
- minChunkSize?: number;
9
- });
10
- chunk(content: string, metadata: ChunkMetadata): RawChunk[];
11
- private splitByHeadings;
12
- private splitByParagraphs;
1
+ import { IChunker } from "./chunker.interface.js";
2
+ import { ChunkMetadata, RawChunk } from "@kb/core";
3
+
4
+ //#region packages/chunker/src/markdown-chunker.d.ts
5
+ declare class MarkdownChunker implements IChunker {
6
+ private readonly maxChunkSize;
7
+ private readonly minChunkSize;
8
+ constructor(options?: {
9
+ maxChunkSize?: number;
10
+ minChunkSize?: number;
11
+ });
12
+ chunk(content: string, metadata: ChunkMetadata): RawChunk[];
13
+ private splitByHeadings;
14
+ private splitByParagraphs;
13
15
  }
16
+ //#endregion
17
+ export { MarkdownChunker };
14
18
  //# sourceMappingURL=markdown-chunker.d.ts.map
@@ -1,10 +1,4 @@
1
- import{CHUNK_SIZES as u}from"../../core/dist/index.js";class k{maxChunkSize;minChunkSize;constructor(r){this.maxChunkSize=r?.maxChunkSize??u.markdown.max,this.minChunkSize=r?.minChunkSize??u.markdown.min}chunk(r,s){const h=this.splitByHeadings(r),t=[];for(const n of h){if(n.text.trim().length<this.minChunkSize&&t.length>0){const i=t[t.length-1];i.text+=`
2
-
3
- ${n.text}`,i.endLine=n.endLine;continue}if(n.text.length>this.maxChunkSize){const i=this.splitByParagraphs(n.text,this.maxChunkSize);let e=n.startLine;for(const a of i){const o=a.split(`
4
- `).length;t.push({text:a,sourcePath:s.sourcePath,contentType:s.contentType,headingPath:n.headingPath,chunkIndex:t.length,totalChunks:0,startLine:e,endLine:e+o-1}),e+=o}}else t.push({text:n.text,sourcePath:s.sourcePath,contentType:s.contentType,headingPath:n.headingPath,chunkIndex:t.length,totalChunks:0,startLine:n.startLine,endLine:n.endLine})}return t.map((n,i)=>({...n,chunkIndex:i,totalChunks:t.length}))}splitByHeadings(r){const s=r.split(`
5
- `),h=[];let t=null;const n=[];let i=!1;for(let e=0;e<s.length;e++){/^```/.test(s[e])&&(i=!i);const a=i?null:s[e].match(/^(#{1,6})\s+(.+)/);if(a){t&&h.push(t);const o=a[1].length,c=a[2].trim();for(;n.length>=o;)n.pop();n.push(`${"#".repeat(o)} ${c}`),t={text:s[e],headingPath:n.join(" > "),startLine:e+1,endLine:e+1}}else t?(t.text+=`
6
- ${s[e]}`,t.endLine=e+1):t={text:s[e],headingPath:"(intro)",startLine:e+1,endLine:e+1}}return t&&h.push(t),h}splitByParagraphs(r,s){const h=r.split(/\n\n+/),t=[];let n="";for(const i of h)`${n}
7
-
8
- ${i}`.length>s&&n.length>0?(t.push(n.trim()),n=i):n=n?`${n}
9
-
10
- ${i}`:i;return n.trim()&&t.push(n.trim()),t}}export{k as MarkdownChunker};
1
+ import{CHUNK_SIZES as e}from"../../core/dist/index.js";var t=class{maxChunkSize;minChunkSize;constructor(t){this.maxChunkSize=t?.maxChunkSize??e.markdown.max,this.minChunkSize=t?.minChunkSize??e.markdown.min}chunk(e,t){let n=this.splitByHeadings(e),r=[];for(let e of n){if(e.text.trim().length<this.minChunkSize&&r.length>0){let t=r[r.length-1];t.text+=`\n\n${e.text}`,t.endLine=e.endLine;continue}if(e.text.length>this.maxChunkSize){let n=this.splitByParagraphs(e.text,this.maxChunkSize),i=e.startLine;for(let a of n){let n=a.split(`
2
+ `).length;r.push({text:a,sourcePath:t.sourcePath,contentType:t.contentType,headingPath:e.headingPath,chunkIndex:r.length,totalChunks:0,startLine:i,endLine:i+n-1}),i+=n}}else r.push({text:e.text,sourcePath:t.sourcePath,contentType:t.contentType,headingPath:e.headingPath,chunkIndex:r.length,totalChunks:0,startLine:e.startLine,endLine:e.endLine})}return r.map((e,t)=>({...e,chunkIndex:t,totalChunks:r.length}))}splitByHeadings(e){let t=e.split(`
3
+ `),n=[],r=null,i=[],a=!1;for(let e=0;e<t.length;e++){/^```/.test(t[e])&&(a=!a);let o=a?null:t[e].match(/^(#{1,6})\s+(.+)/);if(o){r&&n.push(r);let a=o[1].length,s=o[2].trim();for(;i.length>=a;)i.pop();i.push(`${`#`.repeat(a)} ${s}`),r={text:t[e],headingPath:i.join(` > `),startLine:e+1,endLine:e+1}}else r?(r.text+=`\n${t[e]}`,r.endLine=e+1):r={text:t[e],headingPath:`(intro)`,startLine:e+1,endLine:e+1}}return r&&n.push(r),n}splitByParagraphs(e,t){let n=e.split(/\n\n+/),r=[],i=``;for(let e of n)`${i}\n\n${e}`.length>t&&i.length>0?(r.push(i.trim()),i=e):i=i?`${i}\n\n${e}`:e;return i.trim()&&r.push(i.trim()),r}};export{t as MarkdownChunker};
4
+ //# sourceMappingURL=markdown-chunker.js.map
@@ -1,47 +1,44 @@
1
- /**
2
- * Tree-sitter AST-based code chunker.
3
- *
4
- * Uses native tree-sitter bindings for precise declaration boundary detection.
5
- * Falls back gracefully to regex-based CodeChunker if tree-sitter or grammars
6
- * are not installed (they are optional dependencies).
7
- */
8
- import type { ChunkMetadata, RawChunk } from '@kb/core';
9
- import type { IChunker } from './chunker.interface.js';
1
+ import { IChunker } from "./chunker.interface.js";
2
+ import { ChunkMetadata, RawChunk } from "@kb/core";
3
+
4
+ //#region packages/chunker/src/treesitter-chunker.d.ts
10
5
  /**
11
6
  * Singleton runtime that loads tree-sitter parser + language grammars once.
12
7
  * Call `TreeSitterRuntime.initialize()` at startup; if it returns null,
13
8
  * tree-sitter is not available and the factory will fall back to CodeChunker.
14
9
  */
15
- export declare class TreeSitterRuntime {
16
- private static instance;
17
- private parser;
18
- private languages;
19
- static initialize(): Promise<TreeSitterRuntime | null>;
20
- static get(): TreeSitterRuntime | null;
21
- private init;
22
- /** Parse source code with the grammar for the given file extension. */
23
- parse(content: string, ext: string): any | null;
24
- /** Check if a grammar is loaded for the given file extension. */
25
- hasLanguage(ext: string): boolean;
10
+ declare class TreeSitterRuntime {
11
+ private static instance;
12
+ private parser;
13
+ private languages;
14
+ static initialize(): Promise<TreeSitterRuntime | null>;
15
+ static get(): TreeSitterRuntime | null;
16
+ private init;
17
+ /** Parse source code with the grammar for the given file extension. */
18
+ parse(content: string, ext: string): any | null;
19
+ /** Check if a grammar is loaded for the given file extension. */
20
+ hasLanguage(ext: string): boolean;
26
21
  }
27
22
  /**
28
23
  * Initialize the tree-sitter runtime. Call once at startup.
29
24
  * Returns true if tree-sitter is available, false otherwise.
30
25
  */
31
- export declare function initializeTreeSitter(): Promise<boolean>;
26
+ declare function initializeTreeSitter(): Promise<boolean>;
32
27
  /**
33
28
  * AST-based code chunker that uses tree-sitter for precise declaration
34
29
  * boundary detection. Produces cleaner chunks than the regex-based CodeChunker.
35
30
  */
36
- export declare class TreeSitterChunker implements IChunker {
37
- private readonly maxChunkSize;
38
- private readonly runtime;
39
- private readonly regexFallback;
40
- constructor(runtime: TreeSitterRuntime, options?: {
41
- maxChunkSize?: number;
42
- });
43
- chunk(content: string, metadata: ChunkMetadata): RawChunk[];
44
- private chunkFromAst;
45
- private splitByLines;
31
+ declare class TreeSitterChunker implements IChunker {
32
+ private readonly maxChunkSize;
33
+ private readonly runtime;
34
+ private readonly regexFallback;
35
+ constructor(runtime: TreeSitterRuntime, options?: {
36
+ maxChunkSize?: number;
37
+ });
38
+ chunk(content: string, metadata: ChunkMetadata): RawChunk[];
39
+ private chunkFromAst;
40
+ private splitByLines;
46
41
  }
42
+ //#endregion
43
+ export { TreeSitterChunker, TreeSitterRuntime, initializeTreeSitter };
47
44
  //# sourceMappingURL=treesitter-chunker.d.ts.map
@@ -1,8 +1,7 @@
1
- import{extname as m}from"node:path";import{CHUNK_SIZES as k}from"../../core/dist/index.js";import{CodeChunker as y}from"./code-chunker.js";const f={".ts":{package:"tree-sitter-typescript",subLanguage:"typescript"},".tsx":{package:"tree-sitter-typescript",subLanguage:"tsx"},".mts":{package:"tree-sitter-typescript",subLanguage:"typescript"},".cts":{package:"tree-sitter-typescript",subLanguage:"typescript"},".js":{package:"tree-sitter-javascript"},".jsx":{package:"tree-sitter-javascript"},".mjs":{package:"tree-sitter-javascript"},".cjs":{package:"tree-sitter-javascript"},".py":{package:"tree-sitter-python"},".go":{package:"tree-sitter-go"},".rs":{package:"tree-sitter-rust"},".java":{package:"tree-sitter-java"}},x=new Set(["function_declaration","class_declaration","interface_declaration","type_alias_declaration","enum_declaration","lexical_declaration","export_statement","variable_declaration","abstract_class_declaration","function_definition","class_definition","decorated_definition","function_declaration","method_declaration","type_declaration","function_item","impl_item","struct_item","enum_item","trait_item","mod_item","type_item","class_declaration","interface_declaration","method_declaration","enum_declaration"]);class u{static instance=null;parser=null;languages=new Map;static async initialize(){if(u.instance)return u.instance;const t=new u;return await t.init()?(u.instance=t,t):null}static get(){return u.instance}async init(){try{const t=await import("tree-sitter"),r=t.default??t;this.parser=new r;for(const[c,s]of Object.entries(f))try{const o=await import(s.package),e=o.default??o,n=s.subLanguage?e[s.subLanguage]:e;n&&this.languages.set(c,n)}catch{}const i=this.languages.size>0;return i&&console.error(`[KB] Tree-sitter initialized with ${this.languages.size} languages: ${[...this.languages.keys()].join(", ")}`),i}catch{return!1}}parse(t,r){const i=this.languages.get(r);return i?(this.parser.setLanguage(i),this.parser.parse(t)):null}hasLanguage(t){return this.languages.has(t)}}async function w(){return await u.initialize()!==null}class L{maxChunkSize;runtime;regexFallback;constructor(t,r){this.runtime=t,this.maxChunkSize=r?.maxChunkSize??k.code.max,this.regexFallback=new y(r)}chunk(t,r){const i=m(r.sourcePath).toLowerCase(),c=this.runtime.parse(t,i);if(!c)return this.regexFallback.chunk(t,r);try{return this.chunkFromAst(c,t,r)}catch{return this.regexFallback.chunk(t,r)}}chunkFromAst(t,r,i){const c=t.rootNode,s=[],o=[];for(let e=0;e<c.childCount;e++){const n=c.child(e);if(n&&x.has(n.type)){let h=n.startPosition?n.startIndex:n.startByte??0,l=n.startPosition?.row??0,a=n.previousSibling;for(;a&&(a.type==="comment"||a.type==="line_comment"||a.type==="block_comment"||a.type==="decorator");)h=a.startIndex??a.startByte??h,l=a.startPosition?.row??l,a=a.previousSibling;o.push({startByte:h,endByte:n.endIndex??n.endByte??r.length,startRow:l,endRow:n.endPosition?.row??r.split(`
2
- `).length-1})}}if(o.length===0)return this.regexFallback.chunk(r,i);if(o[0].startByte>0){const e=r.slice(0,o[0].startByte).trim();e.length>0&&s.push({text:`// File: ${i.sourcePath}
3
- ${e}`,sourcePath:i.sourcePath,contentType:i.contentType,chunkIndex:0,totalChunks:0,startLine:1,endLine:o[0].startRow+1})}for(const e of o){let n=r.slice(e.startByte,e.endByte).trim();if(n=`// File: ${i.sourcePath}
4
- `+n,n.length>this.maxChunkSize){const l=this.splitByLines(n,this.maxChunkSize);let a=e.startRow+1;for(const p of l){const g=p.split(`
5
- `).length;s.push({text:p,sourcePath:i.sourcePath,contentType:i.contentType,chunkIndex:s.length,totalChunks:0,startLine:a,endLine:a+g-1}),a+=g}}else s.push({text:n,sourcePath:i.sourcePath,contentType:i.contentType,chunkIndex:s.length,totalChunks:0,startLine:e.startRow+1,endLine:e.endRow+1})}return s.map((e,n)=>({...e,chunkIndex:n,totalChunks:s.length}))}splitByLines(t,r){const i=t.split(`
6
- `),c=[];let s=[],o=0;for(const e of i)o+e.length+1>r&&s.length>0?(c.push(s.join(`
7
- `)),s=[e],o=e.length):(s.push(e),o+=e.length+1);return s.length>0&&c.push(s.join(`
8
- `)),c}}export{L as TreeSitterChunker,u as TreeSitterRuntime,w as initializeTreeSitter};
1
+ import{CodeChunker as e}from"./code-chunker.js";import{extname as t}from"node:path";import{CHUNK_SIZES as n,createLogger as r}from"../../core/dist/index.js";const i=r(`chunker`),a={".ts":{package:`tree-sitter-typescript`,subLanguage:`typescript`},".tsx":{package:`tree-sitter-typescript`,subLanguage:`tsx`},".mts":{package:`tree-sitter-typescript`,subLanguage:`typescript`},".cts":{package:`tree-sitter-typescript`,subLanguage:`typescript`},".js":{package:`tree-sitter-javascript`},".jsx":{package:`tree-sitter-javascript`},".mjs":{package:`tree-sitter-javascript`},".cjs":{package:`tree-sitter-javascript`},".py":{package:`tree-sitter-python`},".go":{package:`tree-sitter-go`},".rs":{package:`tree-sitter-rust`},".java":{package:`tree-sitter-java`}},o=new Set(`function_declaration.class_declaration.interface_declaration.type_alias_declaration.enum_declaration.lexical_declaration.export_statement.variable_declaration.abstract_class_declaration.function_definition.class_definition.decorated_definition.function_declaration.method_declaration.type_declaration.function_item.impl_item.struct_item.enum_item.trait_item.mod_item.type_item.class_declaration.interface_declaration.method_declaration.enum_declaration`.split(`.`));var s=class e{static instance=null;parser=null;languages=new Map;static async initialize(){if(e.instance)return e.instance;let t=new e;return await t.init()?(e.instance=t,t):null}static get(){return e.instance}async init(){try{let e=await import(`tree-sitter`);this.parser=new(e.default??e);for(let[e,t]of Object.entries(a))try{let n=await import(t.package),r=n.default??n,i=t.subLanguage?r[t.subLanguage]:r;i&&this.languages.set(e,i)}catch{}let t=this.languages.size>0;return t&&i.info(`Tree-sitter initialized`,{languageCount:this.languages.size,extensions:[...this.languages.keys()]}),t}catch{return!1}}parse(e,t){let n=this.languages.get(t);return n?(this.parser.setLanguage(n),this.parser.parse(e)):null}hasLanguage(e){return this.languages.has(e)}};async function c(){return await s.initialize()!==null}var l=class{maxChunkSize;runtime;regexFallback;constructor(t,r){this.runtime=t,this.maxChunkSize=r?.maxChunkSize??n.code.max,this.regexFallback=new e(r)}chunk(e,n){let r=t(n.sourcePath).toLowerCase(),i=this.runtime.parse(e,r);if(!i)return this.regexFallback.chunk(e,n);try{return this.chunkFromAst(i,e,n)}catch{return this.regexFallback.chunk(e,n)}}chunkFromAst(e,t,n){let r=e.rootNode,i=[],a=[];for(let e=0;e<r.childCount;e++){let n=r.child(e);if(n&&o.has(n.type)){let e=n.startPosition?n.startIndex:n.startByte??0,r=n.startPosition?.row??0,i=n.previousSibling;for(;i&&(i.type===`comment`||i.type===`line_comment`||i.type===`block_comment`||i.type===`decorator`);)e=i.startIndex??i.startByte??e,r=i.startPosition?.row??r,i=i.previousSibling;a.push({startByte:e,endByte:n.endIndex??n.endByte??t.length,startRow:r,endRow:n.endPosition?.row??t.split(`
2
+ `).length-1})}}if(a.length===0)return this.regexFallback.chunk(t,n);if(a[0].startByte>0){let e=t.slice(0,a[0].startByte).trim();e.length>0&&i.push({text:`// File: ${n.sourcePath}\n${e}`,sourcePath:n.sourcePath,contentType:n.contentType,chunkIndex:0,totalChunks:0,startLine:1,endLine:a[0].startRow+1})}for(let e of a){let r=t.slice(e.startByte,e.endByte).trim();if(r=`// File: ${n.sourcePath}\n`+r,r.length>this.maxChunkSize){let t=this.splitByLines(r,this.maxChunkSize),a=e.startRow+1;for(let e of t){let t=e.split(`
3
+ `).length;i.push({text:e,sourcePath:n.sourcePath,contentType:n.contentType,chunkIndex:i.length,totalChunks:0,startLine:a,endLine:a+t-1}),a+=t}}else i.push({text:r,sourcePath:n.sourcePath,contentType:n.contentType,chunkIndex:i.length,totalChunks:0,startLine:e.startRow+1,endLine:e.endRow+1})}return i.map((e,t)=>({...e,chunkIndex:t,totalChunks:i.length}))}splitByLines(e,t){let n=e.split(`
4
+ `),r=[],i=[],a=0;for(let e of n)a+e.length+1>t&&i.length>0?(r.push(i.join(`
5
+ `)),i=[e],a=e.length):(i.push(e),a+=e.length+1);return i.length>0&&r.push(i.join(`
6
+ `)),r}};export{l as TreeSitterChunker,s as TreeSitterRuntime,c as initializeTreeSitter};
7
+ //# sourceMappingURL=treesitter-chunker.js.map
@@ -1,3 +1,7 @@
1
- import type { Command } from '../types.js';
2
- export declare const analyzeCommands: Command[];
1
+ import { Command } from "../types.js";
2
+
3
+ //#region packages/cli/src/commands/analyze.d.ts
4
+ declare const analyzeCommands: Command[];
5
+ //#endregion
6
+ export { analyzeCommands };
3
7
  //# sourceMappingURL=analyze.d.ts.map
@@ -1,3 +1,3 @@
1
- import{resolve as p}from"node:path";const d=[{name:"analyze",description:"Run analyzer output for a path",usage:"kb analyze <type> <path>",run:async r=>{const i=r.shift()?.trim()??"",a=r.shift()?.trim()??"";(!i||!a)&&(console.error("Usage: kb analyze <type> <path>"),console.error("Types: structure, deps, symbols, patterns, entry-points, blast-radius, diagram"),process.exit(1));const{BlastRadiusAnalyzer:l,DependencyAnalyzer:c,DiagramGenerator:m,EntryPointAnalyzer:n,PatternAnalyzer:e,StructureAnalyzer:t,SymbolAnalyzer:u}=await import("../../../analyzers/dist/index.js"),s=p(a);let o;switch(i){case"structure":o=await new t().analyze(s,{format:"markdown"});break;case"deps":case"dependencies":o=await new c().analyze(s,{format:"markdown"});break;case"symbols":o=await new u().analyze(s,{format:"markdown"});break;case"patterns":o=await new e().analyze(s,{format:"markdown"});break;case"entry-points":o=await new n().analyze(s,{format:"markdown"});break;case"blast-radius":o=await new l().analyze(process.cwd(),{files:[a],format:"markdown"});break;case"diagram":o=await new m().analyze(s,{diagramType:"architecture"});break;default:console.error(`Unknown analyze type: ${i}`),console.error("Types: structure, deps, symbols, patterns, entry-points, blast-radius, diagram"),process.exit(1)}console.log(o.output)}},{name:"onboard",description:"Run all analyses for first-time codebase onboarding",usage:"kb onboard <path> [--generate] [--out-dir <dir>]",run:async r=>{const{onboard:i}=await import("../../../tools/dist/index.js");let a="",l="memory",c;for(let e=0;e<r.length;e++){const t=r[e].trim();t==="--generate"?l="generate":t==="--out-dir"&&e+1<r.length?c=r[++e].trim():t.startsWith("--")||(a=t)}a||(a=process.cwd());const m=p(a);console.log(`Onboarding: ${m} (mode: ${l})`),console.log(`Running analyses...
2
- `);const n=await i({path:m,mode:l,outDir:c});for(const e of n.steps){const t=e.status==="success"?"\u2713":"\u2717",u=e.status==="success"?`${e.durationMs}ms, ${e.output.length} chars`:e.error;console.log(` ${t} ${e.name} \u2014 ${u}`)}console.log(`
3
- Total: ${n.totalDurationMs}ms`),n.outDir&&console.log(`Output written to: ${n.outDir}`)}}];export{d as analyzeCommands};
1
+ import{resolve as e}from"node:path";const t=[{name:`analyze`,description:`Run analyzer output for a path`,usage:`kb analyze <type> <path>`,run:async t=>{let n=t.shift()?.trim()??``,r=t.shift()?.trim()??``;(!n||!r)&&(console.error(`Usage: kb analyze <type> <path>`),console.error(`Types: structure, deps, symbols, patterns, entry-points, blast-radius, diagram`),process.exit(1));let{BlastRadiusAnalyzer:i,DependencyAnalyzer:a,DiagramGenerator:o,EntryPointAnalyzer:s,PatternAnalyzer:c,StructureAnalyzer:l,SymbolAnalyzer:u}=await import(`../../../analyzers/dist/index.js`),d=e(r),f;switch(n){case`structure`:f=await new l().analyze(d,{format:`markdown`});break;case`deps`:case`dependencies`:f=await new a().analyze(d,{format:`markdown`});break;case`symbols`:f=await new u().analyze(d,{format:`markdown`});break;case`patterns`:f=await new c().analyze(d,{format:`markdown`});break;case`entry-points`:f=await new s().analyze(d,{format:`markdown`});break;case`blast-radius`:f=await new i().analyze(process.cwd(),{files:[r],format:`markdown`});break;case`diagram`:f=await new o().analyze(d,{diagramType:`architecture`});break;default:console.error(`Unknown analyze type: ${n}`),console.error(`Types: structure, deps, symbols, patterns, entry-points, blast-radius, diagram`),process.exit(1)}console.log(f.output)}},{name:`onboard`,description:`Run all analyses for first-time codebase onboarding`,usage:`kb onboard <path> [--generate] [--out-dir <dir>]`,run:async t=>{let{onboard:n}=await import(`../../../tools/dist/index.js`),r=``,i=`memory`,a;for(let e=0;e<t.length;e++){let n=t[e].trim();n===`--generate`?i=`generate`:n===`--out-dir`&&e+1<t.length?a=t[++e].trim():n.startsWith(`--`)||(r=n)}r||=process.cwd();let o=e(r);console.log(`Onboarding: ${o} (mode: ${i})`),console.log(`Running analyses...
2
+ `);let s=await n({path:o,mode:i,outDir:a});for(let e of s.steps){let t=e.status===`success`?`✓`:`✗`,n=e.status===`success`?`${e.durationMs}ms, ${e.output.length} chars`:e.error;console.log(` ${t} ${e.name} ${n}`)}console.log(`\nTotal: ${s.totalDurationMs}ms`),s.outDir&&console.log(`Output written to: ${s.outDir}`)}}];export{t as analyzeCommands};
3
+ //# sourceMappingURL=analyze.js.map
@@ -1,3 +1,7 @@
1
- import type { Command } from '../types.js';
2
- export declare const contextCommands: Command[];
1
+ import { Command } from "../types.js";
2
+
3
+ //#region packages/cli/src/commands/context-cmds.d.ts
4
+ declare const contextCommands: Command[];
5
+ //#endregion
6
+ export { contextCommands };
3
7
  //# sourceMappingURL=context-cmds.d.ts.map
@@ -1 +1,2 @@
1
- import{resolve as p}from"node:path";import{checkpointLatest as d,checkpointList as u,checkpointLoad as f,checkpointSave as m,diffParse as h,fileSummary as k,gitContext as g,parseOutput as b}from"../../../tools/dist/index.js";import{extractBoolFlag as x,extractNumFlag as w,extractStrFlag as i,parseRecordString as v,printCheckpoint as c,printDiffFiles as y,printFileSummary as C,printGitContext as S,printParsedOutput as U,readStdin as a}from"../helpers.js";const P=[{name:"parse-output",description:"Parse build or tool output from stdin",usage:"kb parse-output [--tool tsc|vitest|biome|git-status]",run:async e=>{const s=i(e,"--tool","").trim()||void 0,t=await a();t.trim()||(console.error("Usage: kb parse-output [--tool tsc|vitest|biome|git-status]"),process.exit(1)),U(b(t,s))}},{name:"git",description:"Show git branch, status, recent commits, and optional diff stats",usage:"kb git [--cwd path] [--commit-count N] [--diff]",run:async e=>{const s=i(e,"--cwd","").trim()||void 0,t=w(e,"--commit-count",5),o=x(e,"--diff"),n=await g({cwd:s,commitCount:t,includeDiff:o});S(n)}},{name:"diff",description:"Parse unified diff text from stdin into structured file changes",usage:"git diff | kb diff",run:async()=>{const e=await a();e.trim()||(console.error("Usage: git diff | kb diff"),process.exit(1)),y(h({diff:e}))}},{name:"summarize",description:"Show a structural summary of a file",usage:"kb summarize <path>",run:async e=>{const s=e.shift()?.trim();s||(console.error("Usage: kb summarize <path>"),process.exit(1));const t=await k({path:p(s)});C(t)}},{name:"checkpoint",description:"Save and restore lightweight session checkpoints",usage:"kb checkpoint <save|load|list|latest> [label-or-id] [--data json] [--notes text]",run:async e=>{const s=e.shift()?.trim();switch(s||(console.error("Usage: kb checkpoint <save|load|list|latest> [label-or-id] [--data json] [--notes text]"),process.exit(1)),s){case"save":{const t=e.shift()?.trim(),o=i(e,"--data",""),n=i(e,"--notes","").trim()||void 0,r=o.trim()?"":await a();t||(console.error("Usage: kb checkpoint save <label> [--data json] [--notes text]"),process.exit(1));const l=m(t,v(o||r),{notes:n});c(l);return}case"load":{const t=e.shift()?.trim();t||(console.error("Usage: kb checkpoint load <id>"),process.exit(1));const o=f(t);if(!o){console.log(`No checkpoint found: ${t}`);return}c(o);return}case"list":{const t=u();if(t.length===0){console.log("No checkpoints saved.");return}console.log(`Checkpoints (${t.length})`),console.log("\u2500".repeat(60));for(const o of t)console.log(`${o.id}`),console.log(` Label: ${o.label}`),console.log(` Created: ${o.createdAt}`);return}case"latest":{const t=d();if(!t){console.log("No checkpoints saved.");return}c(t);return}default:console.error(`Unknown checkpoint action: ${s}`),console.error("Actions: save, load, list, latest"),process.exit(1)}}}];export{P as contextCommands};
1
+ import{extractBoolFlag as e,extractNumFlag as t,extractStrFlag as n,parseRecordString as r,printCheckpoint as i,printDiffFiles as a,printFileSummary as o,printGitContext as s,printParsedOutput as c,readStdin as l}from"../helpers.js";import{resolve as u}from"node:path";import{checkpointLatest as d,checkpointList as f,checkpointLoad as p,checkpointSave as m,diffParse as h,fileSummary as g,gitContext as _,parseOutput as v}from"../../../tools/dist/index.js";const y=[{name:`parse-output`,description:`Parse build or tool output from stdin`,usage:`kb parse-output [--tool tsc|vitest|biome|git-status]`,run:async e=>{let t=n(e,`--tool`,``).trim()||void 0,r=await l();r.trim()||(console.error(`Usage: kb parse-output [--tool tsc|vitest|biome|git-status]`),process.exit(1)),c(v(r,t))}},{name:`git`,description:`Show git branch, status, recent commits, and optional diff stats`,usage:`kb git [--cwd path] [--commit-count N] [--diff]`,run:async r=>{s(await _({cwd:n(r,`--cwd`,``).trim()||void 0,commitCount:t(r,`--commit-count`,5),includeDiff:e(r,`--diff`)}))}},{name:`diff`,description:`Parse unified diff text from stdin into structured file changes`,usage:`git diff | kb diff`,run:async()=>{let e=await l();e.trim()||(console.error(`Usage: git diff | kb diff`),process.exit(1)),a(h({diff:e}))}},{name:`summarize`,description:`Show a structural summary of a file`,usage:`kb summarize <path>`,run:async e=>{let t=e.shift()?.trim();t||(console.error(`Usage: kb summarize <path>`),process.exit(1)),o(await g({path:u(t)}))}},{name:`checkpoint`,description:`Save and restore lightweight session checkpoints`,usage:`kb checkpoint <save|load|list|latest> [label-or-id] [--data json] [--notes text]`,run:async e=>{let t=e.shift()?.trim();switch(t||(console.error(`Usage: kb checkpoint <save|load|list|latest> [label-or-id] [--data json] [--notes text]`),process.exit(1)),t){case`save`:{let t=e.shift()?.trim(),a=n(e,`--data`,``),o=n(e,`--notes`,``).trim()||void 0,s=a.trim()?``:await l();t||(console.error(`Usage: kb checkpoint save <label> [--data json] [--notes text]`),process.exit(1)),i(m(t,r(a||s),{notes:o}));return}case`load`:{let t=e.shift()?.trim();t||(console.error(`Usage: kb checkpoint load <id>`),process.exit(1));let n=p(t);if(!n){console.log(`No checkpoint found: ${t}`);return}i(n);return}case`list`:{let e=f();if(e.length===0){console.log(`No checkpoints saved.`);return}console.log(`Checkpoints (${e.length})`),console.log(`─`.repeat(60));for(let t of e)console.log(`${t.id}`),console.log(` Label: ${t.label}`),console.log(` Created: ${t.createdAt}`);return}case`latest`:{let e=d();if(!e){console.log(`No checkpoints saved.`);return}i(e);return}default:console.error(`Unknown checkpoint action: ${t}`),console.error(`Actions: save, load, list, latest`),process.exit(1)}}}];export{y as contextCommands};
2
+ //# sourceMappingURL=context-cmds.js.map
@@ -1,3 +1,7 @@
1
- import type { Command } from '../types.js';
2
- export declare const environmentCommands: Command[];
1
+ import { Command } from "../types.js";
2
+
3
+ //#region packages/cli/src/commands/environment.d.ts
4
+ declare const environmentCommands: Command[];
5
+ //#endregion
6
+ export { environmentCommands };
3
7
  //# sourceMappingURL=environment.d.ts.map
@@ -1,2 +1,2 @@
1
- import{readFile as h}from"node:fs/promises";import{resolve as d}from"node:path";import{delegate as g,delegateListModels as w,processList as $,processLogs as x,processStart as k,processStatus as y,processStop as b,watchList as S,watchStart as U,watchStop as N}from"../../../tools/dist/index.js";import{extractNumFlag as f,extractStrFlag as l,printManagedProcess as i,readStdin as v}from"../helpers.js";const L=[{name:"proc",description:"Manage in-memory child processes",usage:"kb proc <start|stop|status|list|logs> ...",run:async e=>{const s=e.shift()?.trim()??"";switch(s){case"start":{const o=e.shift()?.trim(),t=e.shift()?.trim();(!o||!t)&&(console.error("Usage: kb proc start <id> <command> [args...]"),process.exit(1)),i(k(o,t,e));return}case"stop":{const o=e.shift()?.trim();o||(console.error("Usage: kb proc stop <id>"),process.exit(1));const t=b(o);if(!t){console.log(`No managed process found: ${o}`);return}i(t);return}case"status":{const o=e.shift()?.trim();o||(console.error("Usage: kb proc status <id>"),process.exit(1));const t=y(o);if(!t){console.log(`No managed process found: ${o}`);return}i(t);return}case"list":{const o=$();if(o.length===0){console.log("No managed processes.");return}for(const t of o)i(t),console.log("");return}case"logs":{const o=f(e,"--tail",50),t=e.shift()?.trim();t||(console.error("Usage: kb proc logs <id> [--tail N]"),process.exit(1));const n=x(t,o);if(n.length===0){console.log(`No logs found for process: ${t}`);return}for(const c of n)console.log(c);return}default:console.error(`Unknown proc action: ${s}`),console.error("Actions: start, stop, status, list, logs"),process.exit(1)}}},{name:"watch",description:"Manage in-memory filesystem watchers",usage:"kb watch <start|stop|list> ...",run:async e=>{const s=e.shift()?.trim()??"";switch(s){case"start":{const o=e.shift()?.trim();o||(console.error("Usage: kb watch start <path>"),process.exit(1));const t=U({path:d(o)});console.log(`Started watcher: ${t.id}`),console.log(` Path: ${t.path}`),console.log(` Status: ${t.status}`);return}case"stop":{const o=e.shift()?.trim();o||(console.error("Usage: kb watch stop <id>"),process.exit(1));const t=N(o);console.log(t?`Stopped watcher: ${o}`:`Watcher not found: ${o}`);return}case"list":{const o=S();if(o.length===0){console.log("No active watchers.");return}for(const t of o)console.log(`${t.id}`),console.log(` Path: ${t.path}`),console.log(` Status: ${t.status}`),console.log(` Events: ${t.eventCount}`);return}default:console.error(`Unknown watch action: ${s}`),console.error("Actions: start, stop, list"),process.exit(1)}}},{name:"delegate",description:"Delegate a task to a local Ollama model",usage:"kb delegate [--model name] [--system prompt] [--temp 0.3] <prompt | --stdin>",run:async e=>{if((e[0]==="models"?e.shift():void 0)==="models"){try{const p=await w();if(p.length===0){console.log("No Ollama models available. Pull one with: ollama pull qwen2.5-coder:7b");return}for(const u of p)console.log(u)}catch{console.error("Ollama is not running. Start it with: ollama serve"),process.exit(1)}return}const o=l(e,"--model",""),t=l(e,"--system",""),n=f(e,"--temp",.3),c=l(e,"--context","");let a=e.join(" ");a||(a=await v()),a||(console.error("Usage: kb delegate [--model name] <prompt>"),process.exit(1));let m;c&&(m=await h(d(c),"utf-8"));const r=await g({prompt:a,model:o||void 0,system:t||void 0,context:m,temperature:n});r.error&&(console.error(`Error: ${r.error}`),process.exit(1)),console.log(r.response),console.error(`
2
- (${r.model}, ${r.durationMs}ms, ${r.tokenCount??"?"} tokens)`)}}];export{L as environmentCommands};
1
+ import{extractNumFlag as e,extractStrFlag as t,printManagedProcess as n,readStdin as r}from"../helpers.js";import{resolve as i}from"node:path";import{readFile as a}from"node:fs/promises";import{delegate as o,delegateListModels as s,processList as c,processLogs as l,processStart as u,processStatus as d,processStop as f,watchList as p,watchStart as m,watchStop as h}from"../../../tools/dist/index.js";const g=[{name:`proc`,description:`Manage in-memory child processes`,usage:`kb proc <start|stop|status|list|logs> ...`,run:async t=>{let r=t.shift()?.trim()??``;switch(r){case`start`:{let e=t.shift()?.trim(),r=t.shift()?.trim();(!e||!r)&&(console.error(`Usage: kb proc start <id> <command> [args...]`),process.exit(1)),n(u(e,r,t));return}case`stop`:{let e=t.shift()?.trim();e||(console.error(`Usage: kb proc stop <id>`),process.exit(1));let r=f(e);if(!r){console.log(`No managed process found: ${e}`);return}n(r);return}case`status`:{let e=t.shift()?.trim();e||(console.error(`Usage: kb proc status <id>`),process.exit(1));let r=d(e);if(!r){console.log(`No managed process found: ${e}`);return}n(r);return}case`list`:{let e=c();if(e.length===0){console.log(`No managed processes.`);return}for(let t of e)n(t),console.log(``);return}case`logs`:{let n=e(t,`--tail`,50),r=t.shift()?.trim();r||(console.error(`Usage: kb proc logs <id> [--tail N]`),process.exit(1));let i=l(r,n);if(i.length===0){console.log(`No logs found for process: ${r}`);return}for(let e of i)console.log(e);return}default:console.error(`Unknown proc action: ${r}`),console.error(`Actions: start, stop, status, list, logs`),process.exit(1)}}},{name:`watch`,description:`Manage in-memory filesystem watchers`,usage:`kb watch <start|stop|list> ...`,run:async e=>{let t=e.shift()?.trim()??``;switch(t){case`start`:{let t=e.shift()?.trim();t||(console.error(`Usage: kb watch start <path>`),process.exit(1));let n=m({path:i(t)});console.log(`Started watcher: ${n.id}`),console.log(` Path: ${n.path}`),console.log(` Status: ${n.status}`);return}case`stop`:{let t=e.shift()?.trim();t||(console.error(`Usage: kb watch stop <id>`),process.exit(1));let n=h(t);console.log(n?`Stopped watcher: ${t}`:`Watcher not found: ${t}`);return}case`list`:{let e=p();if(e.length===0){console.log(`No active watchers.`);return}for(let t of e)console.log(`${t.id}`),console.log(` Path: ${t.path}`),console.log(` Status: ${t.status}`),console.log(` Events: ${t.eventCount}`);return}default:console.error(`Unknown watch action: ${t}`),console.error(`Actions: start, stop, list`),process.exit(1)}}},{name:`delegate`,description:`Delegate a task to a local Ollama model`,usage:`kb delegate [--model name] [--system prompt] [--temp 0.3] <prompt | --stdin>`,run:async n=>{if((n[0]===`models`?n.shift():void 0)===`models`){try{let e=await s();if(e.length===0){console.log(`No Ollama models available. Pull one with: ollama pull qwen2.5-coder:7b`);return}for(let t of e)console.log(t)}catch{console.error(`Ollama is not running. Start it with: ollama serve`),process.exit(1)}return}let c=t(n,`--model`,``),l=t(n,`--system`,``),u=e(n,`--temp`,.3),d=t(n,`--context`,``),f=n.join(` `);f||=await r(),f||(console.error(`Usage: kb delegate [--model name] <prompt>`),process.exit(1));let p;d&&(p=await a(i(d),`utf-8`));let m=await o({prompt:f,model:c||void 0,system:l||void 0,context:p,temperature:u});m.error&&(console.error(`Error: ${m.error}`),process.exit(1)),console.log(m.response),console.error(`\n(${m.model}, ${m.durationMs}ms, ${m.tokenCount??`?`} tokens)`)}}];export{g as environmentCommands};
2
+ //# sourceMappingURL=environment.js.map
@@ -1,3 +1,7 @@
1
- import type { Command } from '../types.js';
2
- export declare const executionCommands: Command[];
1
+ import { Command } from "../types.js";
2
+
3
+ //#region packages/cli/src/commands/execution.d.ts
4
+ declare const executionCommands: Command[];
5
+ //#endregion
6
+ export { executionCommands };
3
7
  //# sourceMappingURL=execution.d.ts.map
@@ -1 +1,2 @@
1
- import{readFile as f}from"node:fs/promises";import{resolve as l}from"node:path";import{codemod as x,dataTransform as g,evaluate as y,rename as h,testRun as w}from"../../../tools/dist/index.js";import{extractBoolFlag as d,extractNumFlag as u,extractStrFlag as a,printTestRunResult as b,readStdin as m,splitCsv as c}from"../helpers.js";const v=[{name:"eval",description:"Evaluate JavaScript or TypeScript in a constrained VM sandbox",usage:"kb eval [code] [--lang js|ts] [--timeout ms]",run:async e=>{const t=a(e,"--lang","js"),s=u(e,"--timeout",5e3),o=e.join(" "),r=o.trim()?"":await m(),n=o||r;n.trim()||(console.error("Usage: kb eval [code] [--lang js|ts] [--timeout ms]"),process.exit(1));const i=y({code:n,lang:t==="ts"?"ts":"js",timeout:s});if(!i.success){console.error(`Eval failed in ${i.durationMs}ms: ${i.error}`),process.exitCode=1;return}console.log(`Eval succeeded in ${i.durationMs}ms`),console.log("\u2500".repeat(60)),console.log(i.output)}},{name:"test",description:"Run Vitest for all tests or a specific subset",usage:"kb test [files...] [--grep pattern] [--cwd path] [--timeout ms]",run:async e=>{const t=a(e,"--grep","").trim()||void 0,s=a(e,"--cwd","").trim()||void 0,o=u(e,"--timeout",6e4),r=e.filter(Boolean),n=await w({files:r.length>0?r:void 0,grep:t,cwd:s,timeout:o});b(n),n.passed||(process.exitCode=1)}},{name:"rename",description:"Rename a symbol across files using whole-word regex matching",usage:"kb rename <old> <new> <path> [--dry-run] [--extensions .ts,.tsx] [--exclude dist/**]",run:async e=>{const t=e.shift()?.trim()??"",s=e.shift()?.trim()??"",o=e.shift()?.trim()??"";(!t||!s||!o)&&(console.error("Usage: kb rename <old> <new> <path> [--dry-run] [--extensions .ts,.tsx] [--exclude dist/**]"),process.exit(1));const r=c(a(e,"--extensions","")),n=c(a(e,"--exclude","")),i=await h({oldName:t,newName:s,rootPath:l(o),extensions:r.length>0?r:void 0,exclude:n.length>0?n:void 0,dryRun:d(e,"--dry-run")});console.log(JSON.stringify(i,null,2))}},{name:"codemod",description:"Apply regex-based codemod rules from a JSON file across a path",usage:"kb codemod <path> --rules <file.json> [--dry-run] [--extensions .ts,.tsx] [--exclude dist/**]",run:async e=>{const t=e.shift()?.trim()??"",s=a(e,"--rules","").trim();(!t||!s)&&(console.error("Usage: kb codemod <path> --rules <file.json> [--dry-run] [--extensions .ts,.tsx] [--exclude dist/**]"),process.exit(1));const o=await f(l(s),"utf-8"),r=JSON.parse(o);if(!Array.isArray(r))throw new Error("Codemod rules file must contain a JSON array.");const n=c(a(e,"--extensions","")),i=c(a(e,"--exclude","")),p=await x({rootPath:l(t),rules:r,extensions:n.length>0?n:void 0,exclude:i.length>0?i:void 0,dryRun:d(e,"--dry-run")});console.log(JSON.stringify(p,null,2))}},{name:"transform",description:"Apply jq-like transforms to JSON from stdin",usage:"cat data.json | kb transform <expression>",run:async e=>{const t=e.join(" ").trim(),s=await m();(!t||!s.trim())&&(console.error("Usage: cat data.json | kb transform <expression>"),process.exit(1));const o=g({input:s,expression:t});console.log(o.outputString)}}];export{v as executionCommands};
1
+ import{extractBoolFlag as e,extractNumFlag as t,extractStrFlag as n,printTestRunResult as r,readStdin as i,splitCsv as a}from"../helpers.js";import{resolve as o}from"node:path";import{readFile as s}from"node:fs/promises";import{codemod as c,dataTransform as l,evaluate as u,rename as d,testRun as f}from"../../../tools/dist/index.js";const p=[{name:`eval`,description:`Evaluate JavaScript or TypeScript in a constrained VM sandbox`,usage:`kb eval [code] [--lang js|ts] [--timeout ms]`,run:async e=>{let r=n(e,`--lang`,`js`),a=t(e,`--timeout`,5e3),o=e.join(` `),s=o.trim()?``:await i(),c=o||s;c.trim()||(console.error(`Usage: kb eval [code] [--lang js|ts] [--timeout ms]`),process.exit(1));let l=u({code:c,lang:r===`ts`?`ts`:`js`,timeout:a});if(!l.success){console.error(`Eval failed in ${l.durationMs}ms: ${l.error}`),process.exitCode=1;return}console.log(`Eval succeeded in ${l.durationMs}ms`),console.log(`─`.repeat(60)),console.log(l.output)}},{name:`test`,description:`Run Vitest for all tests or a specific subset`,usage:`kb test [files...] [--grep pattern] [--cwd path] [--timeout ms]`,run:async e=>{let i=n(e,`--grep`,``).trim()||void 0,a=n(e,`--cwd`,``).trim()||void 0,o=t(e,`--timeout`,6e4),s=e.filter(Boolean),c=await f({files:s.length>0?s:void 0,grep:i,cwd:a,timeout:o});r(c),c.passed||(process.exitCode=1)}},{name:`rename`,description:`Rename a symbol across files using whole-word regex matching`,usage:`kb rename <old> <new> <path> [--dry-run] [--extensions .ts,.tsx] [--exclude dist/**]`,run:async t=>{let r=t.shift()?.trim()??``,i=t.shift()?.trim()??``,s=t.shift()?.trim()??``;(!r||!i||!s)&&(console.error(`Usage: kb rename <old> <new> <path> [--dry-run] [--extensions .ts,.tsx] [--exclude dist/**]`),process.exit(1));let c=a(n(t,`--extensions`,``)),l=a(n(t,`--exclude`,``)),u=await d({oldName:r,newName:i,rootPath:o(s),extensions:c.length>0?c:void 0,exclude:l.length>0?l:void 0,dryRun:e(t,`--dry-run`)});console.log(JSON.stringify(u,null,2))}},{name:`codemod`,description:`Apply regex-based codemod rules from a JSON file across a path`,usage:`kb codemod <path> --rules <file.json> [--dry-run] [--extensions .ts,.tsx] [--exclude dist/**]`,run:async t=>{let r=t.shift()?.trim()??``,i=n(t,`--rules`,``).trim();(!r||!i)&&(console.error(`Usage: kb codemod <path> --rules <file.json> [--dry-run] [--extensions .ts,.tsx] [--exclude dist/**]`),process.exit(1));let l=await s(o(i),`utf-8`),u;try{u=JSON.parse(l)}catch{throw Error(`Failed to parse rules file as JSON: ${i}`)}if(!Array.isArray(u))throw Error(`Codemod rules file must contain a JSON array.`);let d=a(n(t,`--extensions`,``)),f=a(n(t,`--exclude`,``)),p=await c({rootPath:o(r),rules:u,extensions:d.length>0?d:void 0,exclude:f.length>0?f:void 0,dryRun:e(t,`--dry-run`)});console.log(JSON.stringify(p,null,2))}},{name:`transform`,description:`Apply jq-like transforms to JSON from stdin`,usage:`cat data.json | kb transform <expression>`,run:async e=>{let t=e.join(` `).trim(),n=await i();(!t||!n.trim())&&(console.error(`Usage: cat data.json | kb transform <expression>`),process.exit(1));let r=l({input:n,expression:t});console.log(r.outputString)}}];export{p as executionCommands};
2
+ //# sourceMappingURL=execution.js.map
@@ -1,3 +1,7 @@
1
- import type { Command } from '../types.js';
2
- export declare const graphCommands: Command[];
1
+ import { Command } from "../types.js";
2
+
3
+ //#region packages/cli/src/commands/graph.d.ts
4
+ declare const graphCommands: Command[];
5
+ //#endregion
6
+ export { graphCommands };
3
7
  //# sourceMappingURL=graph.d.ts.map
@@ -1,7 +1,7 @@
1
- import{graphQuery as u}from"../../../tools/dist/index.js";import{ctx as $}from"../context.js";import{extractNumFlag as r,extractStrFlag as n}from"../helpers.js";const T=[{name:"graph",description:"Query the knowledge graph",usage:`kb graph <action> [options]
1
+ import{ctx as e}from"../context.js";import{extractNumFlag as t,extractStrFlag as n}from"../helpers.js";import{graphQuery as r}from"../../../tools/dist/index.js";const i=[{name:`graph`,description:`Query the knowledge graph`,usage:`kb graph <action> [options]
2
2
  Actions: stats, find-nodes, find-edges, neighbors, traverse, delete, clear
3
- Options: --type, --name, --node-id, --edge-type, --direction, --depth, --limit, --source-path`,run:async t=>{const s=t.shift()?.trim()??"";s||(console.error(`Usage: kb graph <action>
4
- Actions: stats, find-nodes, find-edges, neighbors, traverse, delete, clear`),process.exit(1));const{graphStore:a}=await $(),c=n(t,"--type",""),p=n(t,"--name",""),g=n(t,"--node-id",""),l=n(t,"--edge-type",""),f=n(t,"--direction","both"),m=r(t,"--depth",2),h=r(t,"--limit",50),y=n(t,"--source-path",""),i={stats:"stats","find-nodes":"find_nodes","find-edges":"find_edges",neighbors:"neighbors",traverse:"traverse",delete:"delete",clear:"clear"}[s];i||(console.error(`Unknown graph action: ${s}`),console.error("Actions: stats, find-nodes, find-edges, neighbors, traverse, delete, clear"),process.exit(1));const e=await u(a,{action:i,nodeType:c||void 0,namePattern:p||void 0,sourcePath:y||void 0,nodeId:g||void 0,edgeType:l||void 0,direction:f,maxDepth:m,limit:h});if(console.log(e.summary),e.nodes&&e.nodes.length>0){console.log(`
5
- Nodes:`);for(const o of e.nodes){const d=Object.keys(o.properties).length>0?` ${JSON.stringify(o.properties)}`:"";console.log(` ${o.name} (${o.type}, id: ${o.id})${d}`)}}if(e.edges&&e.edges.length>0){console.log(`
6
- Edges:`);for(const o of e.edges){const d=o.weight!==1?` (weight: ${o.weight})`:"";console.log(` ${o.fromId} --[${o.type}]--> ${o.toId}${d}`)}}e.stats&&(console.log(`
7
- Node types: ${JSON.stringify(e.stats.nodeTypes)}`),console.log(`Edge types: ${JSON.stringify(e.stats.edgeTypes)}`)),e.deleted!==void 0&&console.log(`Deleted: ${e.deleted}`)}}];export{T as graphCommands};
3
+ Options: --type, --name, --node-id, --edge-type, --direction, --depth, --limit, --source-path`,run:async i=>{let a=i.shift()?.trim()??``;a||(console.error(`Usage: kb graph <action>
4
+ Actions: stats, find-nodes, find-edges, neighbors, traverse, delete, clear`),process.exit(1));let{graphStore:o}=await e(),s=n(i,`--type`,``),c=n(i,`--name`,``),l=n(i,`--node-id`,``),u=n(i,`--edge-type`,``),d=n(i,`--direction`,`both`),f=t(i,`--depth`,2),p=t(i,`--limit`,50),m=n(i,`--source-path`,``),h={stats:`stats`,"find-nodes":`find_nodes`,"find-edges":`find_edges`,neighbors:`neighbors`,traverse:`traverse`,delete:`delete`,clear:`clear`}[a];h||(console.error(`Unknown graph action: ${a}`),console.error(`Actions: stats, find-nodes, find-edges, neighbors, traverse, delete, clear`),process.exit(1));let g=await r(o,{action:h,nodeType:s||void 0,namePattern:c||void 0,sourcePath:m||void 0,nodeId:l||void 0,edgeType:u||void 0,direction:d,maxDepth:f,limit:p});if(console.log(g.summary),g.nodes&&g.nodes.length>0){console.log(`
5
+ Nodes:`);for(let e of g.nodes){let t=Object.keys(e.properties).length>0?` ${JSON.stringify(e.properties)}`:``;console.log(` ${e.name} (${e.type}, id: ${e.id})${t}`)}}if(g.edges&&g.edges.length>0){console.log(`
6
+ Edges:`);for(let e of g.edges){let t=e.weight===1?``:` (weight: ${e.weight})`;console.log(` ${e.fromId} --[${e.type}]--> ${e.toId}${t}`)}}g.stats&&(console.log(`\nNode types: ${JSON.stringify(g.stats.nodeTypes)}`),console.log(`Edge types: ${JSON.stringify(g.stats.edgeTypes)}`)),g.deleted!==void 0&&console.log(`Deleted: ${g.deleted}`)}}];export{i as graphCommands};
7
+ //# sourceMappingURL=graph.js.map
@@ -0,0 +1,27 @@
1
+ //#region packages/cli/src/commands/init/adapters.d.ts
2
+ /**
3
+ * Init module — IDE adapter types and detection.
4
+ *
5
+ * Each IDE has different conventions for where agent files, MCP config,
6
+ * instructions, and skills live. This module defines the interface and
7
+ * provides auto-detection based on workspace markers.
8
+ */
9
+ type SupportedIde = 'copilot' | 'claude-code';
10
+ interface IdeAdapter {
11
+ /** Create the MCP server config file for this IDE. */
12
+ writeMcpConfig(cwd: string, serverName: string): void;
13
+ /** Create the main instructions file (copilot-instructions.md, CLAUDE.md). */
14
+ writeInstructions(cwd: string, serverName: string): void;
15
+ /** Create the AGENTS.md summary file. */
16
+ writeAgentsMd(cwd: string, serverName: string): void;
17
+ /** The scaffold subdirectory name to copy from. */
18
+ scaffoldDir: string;
19
+ }
20
+ /** Detect IDE from workspace directory markers. */
21
+ declare function detectIde(cwd: string): SupportedIde;
22
+ declare const copilotAdapter: IdeAdapter;
23
+ declare const claudeCodeAdapter: IdeAdapter;
24
+ declare function getAdapter(ide: SupportedIde): IdeAdapter;
25
+ //#endregion
26
+ export { IdeAdapter, SupportedIde, claudeCodeAdapter, copilotAdapter, detectIde, getAdapter };
27
+ //# sourceMappingURL=adapters.d.ts.map
@@ -0,0 +1,2 @@
1
+ import{buildAgentsMd as e,buildCopilotInstructions as t}from"./templates.js";import{existsSync as n,mkdirSync as r,writeFileSync as i}from"node:fs";import{basename as a,resolve as o}from"node:path";function s(e){return n(o(e,`.vscode`))?`copilot`:n(o(e,`.claude`))?`claude-code`:`copilot`}function c(e){return{servers:{[e]:{type:`stdio`,command:`npx`,args:[`@vpxa/kb`,`serve`]}}}}const l={scaffoldDir:`copilot`,writeMcpConfig(e,t){let r=o(e,`.vscode`),a=o(r,`mcp.json`);n(r)&&!n(a)&&(i(a,`${JSON.stringify(c(t),null,2)}\n`,`utf-8`),console.log(` Created .vscode/mcp.json`))},writeInstructions(e,s){let c=o(e,`.github`),l=o(c,`copilot-instructions.md`);n(l)||(r(c,{recursive:!0}),i(l,t(a(e),s),`utf-8`),console.log(` Created .github/copilot-instructions.md`))},writeAgentsMd(t,r){let s=o(t,`AGENTS.md`);n(s)||(i(s,e(a(t),r),`utf-8`),console.log(` Created AGENTS.md`))}},u={scaffoldDir:`claude-code`,writeMcpConfig(e,t){},writeInstructions(e,t){},writeAgentsMd(e,t){}};function d(e){switch(e){case`copilot`:return l;case`claude-code`:return u}}export{u as claudeCodeAdapter,l as copilotAdapter,s as detectIde,d as getAdapter};
2
+ //# sourceMappingURL=adapters.js.map
@@ -0,0 +1,11 @@
1
+ //#region packages/cli/src/commands/init/config.d.ts
2
+ /**
3
+ * Init module — config file creation.
4
+ * Handles kb.config.json, .gitignore, and MCP config files.
5
+ */
6
+ declare function writeKbConfig(cwd: string, force: boolean): boolean;
7
+ declare function ensureGitignore(cwd: string): void;
8
+ declare function getServerName(): string;
9
+ //#endregion
10
+ export { ensureGitignore, getServerName, writeKbConfig };
11
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1,4 @@
1
+ import{appendFileSync as e,existsSync as t,readFileSync as n,writeFileSync as r}from"node:fs";import{resolve as i}from"node:path";const a={serverName:`knowledge-base`,sources:[{path:`.`,excludePatterns:[`**/node_modules/**`,`**/dist/**`,`**/build/**`,`**/.git/**`,`**/.kb-data/**`,`**/coverage/**`,`**/*.min.js`,`**/package-lock.json`,`**/pnpm-lock.yaml`]}],indexing:{chunkSize:1500,chunkOverlap:200,minChunkSize:100},embedding:{model:`mixedbread-ai/mxbai-embed-large-v1`,dimensions:1024},store:{backend:`lancedb`,path:`.kb-data/lance`},curated:{path:`curated`}};function o(e,n){let o=i(e,`kb.config.json`);return t(o)&&!n?(console.log(`kb.config.json already exists. Use --force to overwrite.`),!1):(r(o,`${JSON.stringify(a,null,2)}\n`,`utf-8`),console.log(` Created kb.config.json`),!0)}function s(a){let o=i(a,`.gitignore`),s=[{dir:`.kb-data/`,label:`Knowledge base vector store`},{dir:`.brainstorm/`,label:`Brainstorming sessions`},{dir:`curated/`,label:`Curated knowledge entries`},{dir:`curated-archive/`,label:`Archived curated entries`}];if(t(o)){let t=n(o,`utf-8`),r=s.filter(e=>!t.includes(e.dir));r.length>0&&(e(o,`\n${r.map(e=>`# ${e.label}\n${e.dir}`).join(`
2
+ `)}\n`,`utf-8`),console.log(` Added ${r.map(e=>e.dir).join(`, `)} to .gitignore`))}else r(o,`${s.map(e=>`# ${e.label}\n${e.dir}`).join(`
3
+ `)}\n`,`utf-8`),console.log(` Created .gitignore with KB entries`)}function c(){return a.serverName}export{s as ensureGitignore,c as getServerName,o as writeKbConfig};
4
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1,8 @@
1
+ //#region packages/cli/src/commands/init/curated.d.ts
2
+ /**
3
+ * Init module — curated knowledge directories.
4
+ */
5
+ declare function createCuratedDirs(cwd: string): void;
6
+ //#endregion
7
+ export { createCuratedDirs };
8
+ //# sourceMappingURL=curated.d.ts.map
@@ -0,0 +1,2 @@
1
+ import{existsSync as e,mkdirSync as t}from"node:fs";import{resolve as n}from"node:path";const r=[`decisions`,`patterns`,`conventions`,`troubleshooting`];function i(i){let a=n(i,`curated`);e(a)||(t(a,{recursive:!0}),console.log(` Created curated/`));for(let i of r){let r=n(a,i);e(r)||t(r,{recursive:!0})}console.log(` Created curated/{${r.join(`,`)}}/`)}export{i as createCuratedDirs};
2
+ //# sourceMappingURL=curated.js.map
@@ -0,0 +1,23 @@
1
+ //#region packages/cli/src/commands/init/index.d.ts
2
+ /**
3
+ * `kb init` — scaffold a knowledge base in the current directory.
4
+ *
5
+ * Creates kb.config.json, .gitignore entry, IDE-specific config,
6
+ * agent instruction files, skills, scaffold agents/prompts,
7
+ * and curated knowledge directories.
8
+ *
9
+ * This is the main orchestrator that wires together the focused modules:
10
+ * config.ts — kb.config.json + .gitignore
11
+ * adapters.ts — IDE detection + adapter interface
12
+ * scaffold.ts — copy scaffold/skills files from package
13
+ * curated.ts — curated knowledge directories
14
+ * templates.ts — copilot-instructions.md + AGENTS.md content
15
+ */
16
+ declare function initProject(options: {
17
+ force: boolean;
18
+ }): Promise<void>;
19
+ /** Generate a JSON guide report comparing installed vs source files. */
20
+ declare function guideProject(): Promise<void>;
21
+ //#endregion
22
+ export { guideProject, initProject };
23
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,3 @@
1
+ import{detectIde as e,getAdapter as t}from"./adapters.js";import{ensureGitignore as n,getServerName as r,writeKbConfig as i}from"./config.js";import{createCuratedDirs as a}from"./curated.js";import{copyScaffold as o,copySkills as s,guideScaffold as c,guideSkills as l}from"./scaffold.js";import{dirname as u,resolve as d}from"node:path";import{fileURLToPath as f}from"node:url";const p=[`knowledge-base`,`brainstorming`];async function m(c){let l=process.cwd();if(!i(l,c.force))return;n(l);let m=r(),h=t(e(l));h.writeMcpConfig(l,m),h.writeInstructions(l,m),h.writeAgentsMd(l,m);let g=d(u(f(import.meta.url)),`..`,`..`,`..`,`..`,`..`);s(l,g,p,c.force),o(l,g,h.scaffoldDir,c.force),a(l),console.log(`
2
+ Knowledge base initialized! Next steps:`),console.log(` kb reindex Index your codebase`),console.log(` kb search Search indexed content`),console.log(` kb serve Start MCP server for IDE integration`)}async function h(){let n=process.cwd(),r=t(e(n)),i=d(u(f(import.meta.url)),`..`,`..`,`..`,`..`,`..`),a=[...l(n,i,p),...c(n,i,r.scaffoldDir)],o={summary:{total:a.length,new:a.filter(e=>e.status===`new`).length,outdated:a.filter(e=>e.status===`outdated`).length,current:a.filter(e=>e.status===`current`).length},files:a};console.log(JSON.stringify(o,null,2))}export{h as guideProject,m as initProject};
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,24 @@
1
+ //#region packages/cli/src/commands/init/scaffold.d.ts
2
+ /**
3
+ * Init module — scaffold file copying.
4
+ * Copies agent, prompt, and skill files from the package scaffold into the workspace.
5
+ */
6
+ interface GuideFileEntry {
7
+ status: 'new' | 'outdated' | 'current';
8
+ relativePath: string;
9
+ sourcePath: string;
10
+ content?: string;
11
+ }
12
+ /** Recursively copy a directory. When force=false, skip files that already exist. */
13
+ declare function copyDirectoryRecursive(srcDir: string, destDir: string, logPrefix?: string, force?: boolean): void;
14
+ /** Copy scaffold files for a given IDE into the workspace .github/ directory. */
15
+ declare function copyScaffold(cwd: string, pkgRoot: string, ide: string, force?: boolean): void;
16
+ /** Copy skill directories from the package into .github/skills/. */
17
+ declare function copySkills(cwd: string, pkgRoot: string, skillNames: string[], force?: boolean): void;
18
+ /** Generate guide report for scaffold files — compare source vs destination. */
19
+ declare function guideScaffold(cwd: string, pkgRoot: string, ide: string): GuideFileEntry[];
20
+ /** Generate guide report for skill files — compare source vs destination. */
21
+ declare function guideSkills(cwd: string, pkgRoot: string, skillNames: string[]): GuideFileEntry[];
22
+ //#endregion
23
+ export { GuideFileEntry, copyDirectoryRecursive, copyScaffold, copySkills, guideScaffold, guideSkills };
24
+ //# sourceMappingURL=scaffold.d.ts.map
@@ -0,0 +1,2 @@
1
+ import{copyFileSync as e,existsSync as t,mkdirSync as n,readFileSync as r,readdirSync as i,statSync as a}from"node:fs";import{resolve as o}from"node:path";function s(r,c,l=``,u=!1){n(c,{recursive:!0});for(let n of i(r)){let i=o(r,n),d=o(c,n),f=l?`${l}/${n}`:n;if(a(i).isDirectory())s(i,d,f,u);else if(u||!t(d)){let n=t(d)?`Updated`:`Created`;e(i,d),console.log(` ${n} .github/${f}`)}}}function c(e,n,s,l){if(t(e))for(let u of i(e)){let i=o(e,u),d=s?`${s}/${u}`:u;if(a(i).isDirectory())c(i,o(n,u),d,l);else{let e=o(n,u),a=r(i,`utf-8`);t(e)?a===r(e,`utf-8`)?l.push({status:`current`,relativePath:d,sourcePath:i}):l.push({status:`outdated`,relativePath:d,sourcePath:i,content:a}):l.push({status:`new`,relativePath:d,sourcePath:i,content:a})}}}function l(e,n,r,i=!1){let a=o(n,`scaffold`,r);for(let n of[`agents`,`prompts`]){let r=o(a,n),c=o(e,`.github`,n);t(r)&&s(r,c,``,i)}}function u(e,n,r,i=!1){for(let a of r){let r=o(n,`skills`,a);t(r)&&s(r,o(e,`.github`,`skills`,a),`skills/${a}`,i)}}function d(e,t,n){let r=[],i=o(t,`scaffold`,n);for(let t of[`agents`,`prompts`])c(o(i,t),o(e,`.github`,t),t,r);return r}function f(e,n,r){let i=[];for(let a of r){let r=o(n,`skills`,a);t(r)&&c(r,o(e,`.github`,`skills`,a),`skills/${a}`,i)}return i}export{s as copyDirectoryRecursive,l as copyScaffold,u as copySkills,d as guideScaffold,f as guideSkills};
2
+ //# sourceMappingURL=scaffold.js.map
@@ -0,0 +1,10 @@
1
+ //#region packages/cli/src/commands/init/templates.d.ts
2
+ /**
3
+ * Init module — instruction and AGENTS.md template builders.
4
+ * Content for copilot-instructions.md and AGENTS.md.
5
+ */
6
+ declare function buildCopilotInstructions(projectName: string, _serverName: string): string;
7
+ declare function buildAgentsMd(projectName: string, _serverName: string): string;
8
+ //#endregion
9
+ export { buildAgentsMd, buildCopilotInstructions };
10
+ //# sourceMappingURL=templates.d.ts.map