@vpxa/kb 0.1.13 → 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 +8 -2
  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 -35
  10. package/packages/analyzers/dist/entry-point-analyzer.js +5 -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 +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 +8 -3
  66. package/packages/cli/dist/commands/init.js +120 -123
  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 -7
  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 -5
  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 +8 -7
  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 +107 -91
  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 -3
  145. package/packages/server/dist/tools/audit.tool.d.ts +8 -4
  146. package/packages/server/dist/tools/audit.tool.js +2 -4
  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 -22
  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 -24
  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 -46
  198. package/packages/store/dist/store.interface.js +1 -0
  199. package/packages/tools/dist/audit.d.ts +61 -61
  200. package/packages/tools/dist/audit.js +5 -5
  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 +42 -38
  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 -37
  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 -25
  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 +14 -11
  250. package/packages/tools/dist/guide.js +2 -1
  251. package/packages/tools/dist/health.d.ts +13 -10
  252. package/packages/tools/dist/health.js +3 -2
  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 -53
  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 +4 -1
  266. package/packages/tools/dist/path-resolver.js +2 -1
  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 +32 -29
  276. package/packages/tools/dist/replay.js +5 -6
  277. package/packages/tools/dist/response-envelope.d.ts +32 -29
  278. package/packages/tools/dist/response-envelope.js +2 -1
  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 -47
  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 +6 -3
  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 +22 -9
@@ -1,80 +1,83 @@
1
+ //#region packages/tools/src/parse-output.d.ts
1
2
  /**
2
3
  * kb_parse_output — Structured parsers for common build tool output.
3
4
  *
4
5
  * Converts noisy text output from tsc, vitest, biome, and git status
5
6
  * into structured JSON that LLM agents can act on directly.
6
7
  */
7
- export interface ParsedError {
8
- file: string;
9
- line?: number;
10
- column?: number;
11
- severity: 'error' | 'warning' | 'info';
12
- code?: string;
13
- message: string;
8
+ interface ParsedError {
9
+ file: string;
10
+ line?: number;
11
+ column?: number;
12
+ severity: 'error' | 'warning' | 'info';
13
+ code?: string;
14
+ message: string;
14
15
  }
15
- export interface ParsedTestResult {
16
- name: string;
17
- file?: string;
18
- status: 'pass' | 'fail' | 'skip';
19
- duration?: number;
20
- error?: string;
16
+ interface ParsedTestResult {
17
+ name: string;
18
+ file?: string;
19
+ status: 'pass' | 'fail' | 'skip';
20
+ duration?: number;
21
+ error?: string;
21
22
  }
22
- export interface ParsedTestSummary {
23
- tests: ParsedTestResult[];
24
- passed: number;
25
- failed: number;
26
- skipped: number;
27
- duration?: number;
28
- suites?: number;
23
+ interface ParsedTestSummary {
24
+ tests: ParsedTestResult[];
25
+ passed: number;
26
+ failed: number;
27
+ skipped: number;
28
+ duration?: number;
29
+ suites?: number;
29
30
  }
30
- export interface ParsedGitStatus {
31
- staged: Array<{
32
- status: string;
33
- file: string;
34
- }>;
35
- unstaged: Array<{
36
- status: string;
37
- file: string;
38
- }>;
39
- untracked: string[];
40
- branch?: string;
31
+ interface ParsedGitStatus {
32
+ staged: Array<{
33
+ status: string;
34
+ file: string;
35
+ }>;
36
+ unstaged: Array<{
37
+ status: string;
38
+ file: string;
39
+ }>;
40
+ untracked: string[];
41
+ branch?: string;
41
42
  }
42
- export type ParsedOutput = {
43
- tool: 'tsc';
44
- errors: ParsedError[];
43
+ type ParsedOutput = {
44
+ tool: 'tsc';
45
+ errors: ParsedError[];
45
46
  } | {
46
- tool: 'vitest';
47
- summary: ParsedTestSummary;
47
+ tool: 'vitest';
48
+ summary: ParsedTestSummary;
48
49
  } | {
49
- tool: 'biome';
50
- errors: ParsedError[];
50
+ tool: 'biome';
51
+ errors: ParsedError[];
51
52
  } | {
52
- tool: 'git-status';
53
- status: ParsedGitStatus;
53
+ tool: 'git-status';
54
+ status: ParsedGitStatus;
54
55
  };
55
56
  /**
56
57
  * Parse `tsc` output into structured errors.
57
58
  *
58
59
  * Example line: `src/foo.ts(10,5): error TS2339: Property 'x' does not exist`
59
60
  */
60
- export declare function parseTsc(output: string): ParsedError[];
61
+ declare function parseTsc(output: string): ParsedError[];
61
62
  /**
62
63
  * Parse vitest run output into structured test results.
63
64
  */
64
- export declare function parseVitest(output: string): ParsedTestSummary;
65
+ declare function parseVitest(output: string): ParsedTestSummary;
65
66
  /**
66
67
  * Parse biome check/lint output into structured errors.
67
68
  *
68
69
  * Example: `src/foo.ts:10:5 lint/suspicious/noDoubleEquals ━━━`
69
70
  * ` × Use === instead of ==`
70
71
  */
71
- export declare function parseBiome(output: string): ParsedError[];
72
+ declare function parseBiome(output: string): ParsedError[];
72
73
  /**
73
74
  * Parse `git status --porcelain=v1 -b` output into structured status.
74
75
  */
75
- export declare function parseGitStatus(output: string): ParsedGitStatus;
76
+ declare function parseGitStatus(output: string): ParsedGitStatus;
76
77
  /**
77
78
  * Auto-detect the tool from output content and parse accordingly.
78
79
  */
79
- export declare function parseOutput(output: string, tool?: string): ParsedOutput;
80
+ declare function parseOutput(output: string, tool?: string): ParsedOutput;
81
+ //#endregion
82
+ export { ParsedError, ParsedGitStatus, ParsedOutput, ParsedTestResult, ParsedTestSummary, parseBiome, parseGitStatus, parseOutput, parseTsc, parseVitest };
80
83
  //# sourceMappingURL=parse-output.d.ts.map
@@ -1,2 +1,3 @@
1
- function h(s){const t=[],a=/^(.+?)\((\d+),(\d+)\):\s+(error|warning)\s+(TS\d+):\s+(.+)$/gm;for(const e of s.matchAll(a))t.push({file:e[1],line:Number.parseInt(e[2],10),column:Number.parseInt(e[3],10),severity:e[4],code:e[5],message:e[6]});if(t.length===0){const e=/^(.+?):(\d+):(\d+)\s+-\s+(error|warning)\s+(TS\d+):\s+(.+)$/gm;for(const i of s.matchAll(e))t.push({file:i[1],line:Number.parseInt(i[2],10),column:Number.parseInt(i[3],10),severity:i[4],code:i[5],message:i[6]})}return t}function x(s){const t=[],a=/^\s*([✓✕×-])\s+(.+?)(?:\s+(\d+)ms)?$/gm;for(const r of s.matchAll(a)){const g=r[1],f=g==="\u2713"?"pass":g==="-"?"skip":"fail";t.push({name:r[2].trim(),status:f,duration:r[3]?Number.parseInt(r[3],10):void 0})}const e=/^\s*([✓✕×])\s+(\S+\.test\.\w+)\s+\((\d+)\s+tests?\)\s*(\d+ms)?$/gm;for(const r of s.matchAll(e)){const f=r[1]==="\u2713"?"pass":"fail";t.push({name:r[2],file:r[2],status:f,duration:r[4]?Number.parseInt(r[4],10):void 0})}const n=/Tests\s+(?:(\d+)\s+passed)?(?:\s*\|\s*)?(?:(\d+)\s+failed)?(?:\s*\|\s*)?(?:(\d+)\s+skipped)?\s*\((\d+)\)/.exec(s),c=n?Number.parseInt(n[1]??"0",10):t.filter(r=>r.status==="pass").length,o=n?Number.parseInt(n[2]??"0",10):t.filter(r=>r.status==="fail").length,d=n?Number.parseInt(n[3]??"0",10):t.filter(r=>r.status==="skip").length,u=/Duration\s+(\d+(?:\.\d+)?)(?:ms|s)/.exec(s),m=u?u[0].includes("s")&&!u[0].includes("ms")?Number.parseFloat(u[1])*1e3:Number.parseFloat(u[1]):void 0,p=/Test Files\s+(\d+)\s+passed/.exec(s);return{tests:t,passed:c,failed:o,skipped:d,duration:m,suites:p?Number.parseInt(p[1],10):void 0}}function P(s){const t=[],a=/^(.+?):(\d+):(\d+)\s+([\w/]+)\s+━+$/gm;for(const e of s.matchAll(a)){const i=e[1],n=Number.parseInt(e[2],10),c=Number.parseInt(e[3],10),o=e[4],d=s.slice((e.index??0)+e[0].length,(e.index??0)+e[0].length+500),l=/^\s*[×!i]\s+(.+)$/m.exec(d),u=l?l[1].trim():o,m=o.includes("lint")?"warning":"error";t.push({file:i,line:n,column:c,severity:m,code:o,message:u})}return t}function y(s){const t=[],a=[],e=[];let i;for(const n of s.split(`
2
- `)){if(!n)continue;if(n.startsWith("## ")){i=n.slice(3).split("...")[0];continue}const c=n[0],o=n[1],d=n.slice(3).trim();c==="?"&&o==="?"?e.push(d):(c!==" "&&c!=="?"&&t.push({status:b(c),file:d}),o!==" "&&o!=="?"&&a.push({status:b(o),file:d}))}return{staged:t,unstaged:a,untracked:e,branch:i}}function b(s){return{M:"modified",A:"added",D:"deleted",R:"renamed",C:"copied",U:"unmerged"}[s]??s}function w(s,t){const a=t??R(s);switch(a){case"tsc":return{tool:"tsc",errors:h(s)};case"vitest":return{tool:"vitest",summary:x(s)};case"biome":return{tool:"biome",errors:P(s)};case"git-status":return{tool:"git-status",status:y(s)};default:throw new Error(`Unknown tool: ${a}. Supported: tsc, vitest, biome, git-status`)}}function R(s){return s.includes("error TS")||/\(\d+,\d+\):\s+error/.test(s)?"tsc":s.includes("vitest")||s.includes("Test Files")||s.includes("\u2713")?"vitest":s.includes("biome")||/\w+\/\w+\s+━+/.test(s)?"biome":/^##\s/.test(s)||/^[MADRCU?! ]{2}\s/.test(s)?"git-status":"unknown"}export{P as parseBiome,y as parseGitStatus,w as parseOutput,h as parseTsc,x as parseVitest};
1
+ function e(e){let t=[];for(let n of e.matchAll(/^(.+?)\((\d+),(\d+)\):\s+(error|warning)\s+(TS\d+):\s+(.+)$/gm))t.push({file:n[1],line:Number.parseInt(n[2],10),column:Number.parseInt(n[3],10),severity:n[4],code:n[5],message:n[6]});if(t.length===0)for(let n of e.matchAll(/^(.+?):(\d+):(\d+)\s+-\s+(error|warning)\s+(TS\d+):\s+(.+)$/gm))t.push({file:n[1],line:Number.parseInt(n[2],10),column:Number.parseInt(n[3],10),severity:n[4],code:n[5],message:n[6]});return t}function t(e){let t=[];for(let n of e.matchAll(/^\s*([✓✕×-])\s+(.+?)(?:\s+(\d+)ms)?$/gm)){let e=n[1],r=e===`✓`?`pass`:e===`-`?`skip`:`fail`;t.push({name:n[2].trim(),status:r,duration:n[3]?Number.parseInt(n[3],10):void 0})}for(let n of e.matchAll(/^\s*([✓✕×])\s+(\S+\.test\.\w+)\s+\((\d+)\s+tests?\)\s*(\d+ms)?$/gm)){let e=n[1]===`✓`?`pass`:`fail`;t.push({name:n[2],file:n[2],status:e,duration:n[4]?Number.parseInt(n[4],10):void 0})}let n=/Tests\s+(?:(\d+)\s+passed)?(?:\s*\|\s*)?(?:(\d+)\s+failed)?(?:\s*\|\s*)?(?:(\d+)\s+skipped)?\s*\((\d+)\)/.exec(e),r=n?Number.parseInt(n[1]??`0`,10):t.filter(e=>e.status===`pass`).length,i=n?Number.parseInt(n[2]??`0`,10):t.filter(e=>e.status===`fail`).length,a=n?Number.parseInt(n[3]??`0`,10):t.filter(e=>e.status===`skip`).length,o=/Duration\s+(\d+(?:\.\d+)?)(?:ms|s)/.exec(e),s=o?o[0].includes(`s`)&&!o[0].includes(`ms`)?Number.parseFloat(o[1])*1e3:Number.parseFloat(o[1]):void 0,c=/Test Files\s+(\d+)\s+passed/.exec(e);return{tests:t,passed:r,failed:i,skipped:a,duration:s,suites:c?Number.parseInt(c[1],10):void 0}}function n(e){let t=[];for(let n of e.matchAll(/^(.+?):(\d+):(\d+)\s+([\w/]+)\s+━+$/gm)){let r=n[1],i=Number.parseInt(n[2],10),a=Number.parseInt(n[3],10),o=n[4],s=e.slice((n.index??0)+n[0].length,(n.index??0)+n[0].length+500),c=/^\s*[×!i]\s+(.+)$/m.exec(s),l=c?c[1].trim():o,u=o.includes(`lint`)?`warning`:`error`;t.push({file:r,line:i,column:a,severity:u,code:o,message:l})}return t}function r(e){let t=[],n=[],r=[],a;for(let o of e.split(`
2
+ `)){if(!o)continue;if(o.startsWith(`## `)){a=o.slice(3).split(`...`)[0];continue}let e=o[0],s=o[1],c=o.slice(3).trim();e===`?`&&s===`?`?r.push(c):(e!==` `&&e!==`?`&&t.push({status:i(e),file:c}),s!==` `&&s!==`?`&&n.push({status:i(s),file:c}))}return{staged:t,unstaged:n,untracked:r,branch:a}}function i(e){return{M:`modified`,A:`added`,D:`deleted`,R:`renamed`,C:`copied`,U:`unmerged`}[e]??e}function a(i,a){let s=a??o(i);switch(s){case`tsc`:return{tool:`tsc`,errors:e(i)};case`vitest`:return{tool:`vitest`,summary:t(i)};case`biome`:return{tool:`biome`,errors:n(i)};case`git-status`:return{tool:`git-status`,status:r(i)};default:throw Error(`Unknown tool: ${s}. Supported: tsc, vitest, biome, git-status`)}}function o(e){return e.includes(`error TS`)||/\(\d+,\d+\):\s+error/.test(e)?`tsc`:e.includes(`vitest`)||e.includes(`Test Files`)||e.includes(`✓`)?`vitest`:e.includes(`biome`)||/\w+\/\w+\s+━+/.test(e)?`biome`:/^##\s/.test(e)||/^[MADRCU?! ]{2}\s/.test(e)?`git-status`:`unknown`}export{n as parseBiome,r as parseGitStatus,a as parseOutput,e as parseTsc,t as parseVitest};
3
+ //# sourceMappingURL=parse-output.js.map
@@ -1,3 +1,4 @@
1
+ //#region packages/tools/src/path-resolver.d.ts
1
2
  /**
2
3
  * Shared path resolver for MCP tools (E-014).
3
4
  * Provides consistent path resolution across all tools.
@@ -8,5 +9,7 @@
8
9
  * - Relative paths are resolved against the server's cwd
9
10
  * - '.' and empty/undefined default to cwd
10
11
  */
11
- export declare function resolvePath(input?: string): string;
12
+ declare function resolvePath(input?: string): string;
13
+ //#endregion
14
+ export { resolvePath };
12
15
  //# sourceMappingURL=path-resolver.d.ts.map
@@ -1 +1,2 @@
1
- import{isAbsolute as e,resolve as s}from"node:path";function t(r){return!r||r==="."?process.cwd():e(r)?r:s(process.cwd(),r)}export{t as resolvePath};
1
+ import{isAbsolute as e,resolve as t}from"node:path";function n(n){return!n||n===`.`?process.cwd():e(n)?n:t(process.cwd(),n)}export{n as resolvePath};
2
+ //# sourceMappingURL=path-resolver.js.map
@@ -1,18 +1,21 @@
1
- export interface ManagedProcess {
2
- id: string;
3
- command: string;
4
- args: string[];
5
- pid?: number;
6
- status: 'running' | 'stopped' | 'error';
7
- startedAt: string;
8
- exitCode?: number;
9
- logs: string[];
1
+ //#region packages/tools/src/process-manager.d.ts
2
+ interface ManagedProcess {
3
+ id: string;
4
+ command: string;
5
+ args: string[];
6
+ pid?: number;
7
+ status: 'running' | 'stopped' | 'error';
8
+ startedAt: string;
9
+ exitCode?: number;
10
+ logs: string[];
10
11
  }
11
- export declare function processStart(id: string, command: string, args?: string[], options?: {
12
- cwd?: string;
12
+ declare function processStart(id: string, command: string, args?: string[], options?: {
13
+ cwd?: string;
13
14
  }): ManagedProcess;
14
- export declare function processStop(id: string): ManagedProcess | undefined;
15
- export declare function processStatus(id: string): ManagedProcess | undefined;
16
- export declare function processList(): ManagedProcess[];
17
- export declare function processLogs(id: string, tail?: number): string[];
15
+ declare function processStop(id: string): ManagedProcess | undefined;
16
+ declare function processStatus(id: string): ManagedProcess | undefined;
17
+ declare function processList(): ManagedProcess[];
18
+ declare function processLogs(id: string, tail?: number): string[];
19
+ //#endregion
20
+ export { ManagedProcess, processList, processLogs, processStart, processStatus, processStop };
18
21
  //# sourceMappingURL=process-manager.d.ts.map
@@ -1 +1,2 @@
1
- import{spawn as d}from"node:child_process";const t=new Map,p=200;function f(s,r,n=[],c){if(t.has(s))throw new Error(`Process "${s}" is already running. Stop it first.`);const o=d(r,n,{cwd:c?.cwd??process.cwd(),shell:!0,stdio:["ignore","pipe","pipe"]}),e={id:s,command:r,args:n,pid:o.pid??void 0,status:"running",startedAt:new Date().toISOString(),logs:[]},g=i=>{const a=i.toString().split(/\r?\n/).filter(Boolean);e.logs.push(...a),e.logs.length>p&&(e.logs=e.logs.slice(-p))};return o.stdout?.on("data",g),o.stderr?.on("data",g),o.on("exit",i=>{e.status=i===0?"stopped":"error",e.exitCode=i??void 0}),o.on("error",i=>{e.status="error",e.logs.push(`[error] ${i.message}`)}),t.set(s,{proc:o,info:e}),e}function l(s){const r=t.get(s);if(r)return r.proc.kill("SIGTERM"),r.info.status="stopped",t.delete(s),r.info}function M(s){return t.get(s)?.info}function P(){return[...t.values()].map(s=>s.info)}function w(s,r){const n=t.get(s);return n?r?n.info.logs.slice(-r):n.info.logs:[]}export{P as processList,w as processLogs,f as processStart,M as processStatus,l as processStop};
1
+ import{spawn as e}from"node:child_process";const t=new Map;function n(n,r,i=[],a){if(t.has(n))throw Error(`Process "${n}" is already running. Stop it first.`);if(t.size>=20)throw Error(`Too many managed processes (max 20). Stop some first.`);let o=/[;|&`$(){}[\]!<>\\]/,s=[r,...i].join(` `);if(o.test(s))throw Error(`Command contains disallowed shell metacharacters`);let c=e(r,i,{cwd:a?.cwd??process.cwd(),shell:!0,stdio:[`ignore`,`pipe`,`pipe`]}),l={id:n,command:r,args:i,pid:c.pid??void 0,status:`running`,startedAt:new Date().toISOString(),logs:[]},u=e=>{let t=e.toString().split(/\r?\n/).filter(Boolean);l.logs.push(...t),l.logs.length>200&&(l.logs=l.logs.slice(-200))};return c.stdout?.on(`data`,u),c.stderr?.on(`data`,u),c.on(`exit`,e=>{l.status=e===0?`stopped`:`error`,l.exitCode=e??void 0,setTimeout(()=>t.delete(n),3e4)}),c.on(`error`,e=>{l.status=`error`,l.logs.push(`[error] ${e.message}`)}),t.set(n,{proc:c,info:l}),l}function r(e){let n=t.get(e);if(!n)return;n.proc.kill(`SIGTERM`);let r=setTimeout(()=>{try{n.proc.kill(`SIGKILL`)}catch{}},5e3);return n.proc.once(`exit`,()=>clearTimeout(r)),n.info.status=`stopped`,t.delete(e),n.info}function i(e){return t.get(e)?.info}function a(){return[...t.values()].map(e=>e.info)}function o(e,n){let r=t.get(e);return r?n?r.info.logs.slice(-n):r.info.logs:[]}export{a as processList,o as processLogs,n as processStart,i as processStatus,r as processStop};
2
+ //# sourceMappingURL=process-manager.js.map
@@ -1,38 +1,41 @@
1
- export interface QueueItem {
2
- id: string;
3
- title: string;
4
- status: 'pending' | 'in-progress' | 'done' | 'failed';
5
- data?: unknown;
6
- createdAt: string;
7
- updatedAt: string;
8
- error?: string;
1
+ //#region packages/tools/src/queue.d.ts
2
+ interface QueueItem {
3
+ id: string;
4
+ title: string;
5
+ status: 'pending' | 'in-progress' | 'done' | 'failed';
6
+ data?: unknown;
7
+ createdAt: string;
8
+ updatedAt: string;
9
+ error?: string;
9
10
  }
10
- export interface QueueState {
11
- name: string;
12
- items: QueueItem[];
11
+ interface QueueState {
12
+ name: string;
13
+ items: QueueItem[];
13
14
  }
14
15
  /** Create a new named queue. */
15
- export declare function queueCreate(name: string, cwd?: string): QueueState;
16
+ declare function queueCreate(name: string, cwd?: string): QueueState;
16
17
  /** Push an item onto a queue. Creates the queue if it doesn't exist. */
17
- export declare function queuePush(name: string, title: string, data?: unknown, cwd?: string): QueueItem;
18
+ declare function queuePush(name: string, title: string, data?: unknown, cwd?: string): QueueItem;
18
19
  /** Take the next pending item from a queue and mark it in-progress. */
19
- export declare function queueNext(name: string, cwd?: string): QueueItem | null;
20
+ declare function queueNext(name: string, cwd?: string): QueueItem | null;
20
21
  /** Mark a queue item as done. */
21
- export declare function queueDone(name: string, id: string, cwd?: string): QueueItem;
22
+ declare function queueDone(name: string, id: string, cwd?: string): QueueItem;
22
23
  /** Mark a queue item as failed with an error message. */
23
- export declare function queueFail(name: string, id: string, error: string, cwd?: string): QueueItem;
24
+ declare function queueFail(name: string, id: string, error: string, cwd?: string): QueueItem;
24
25
  /** Get the current state of a queue. */
25
- export declare function queueGet(name: string, cwd?: string): QueueState | null;
26
+ declare function queueGet(name: string, cwd?: string): QueueState | null;
26
27
  /** List all queues with their item counts. */
27
- export declare function queueList(cwd?: string): Array<{
28
- name: string;
29
- pending: number;
30
- done: number;
31
- failed: number;
32
- total: number;
28
+ declare function queueList(cwd?: string): Array<{
29
+ name: string;
30
+ pending: number;
31
+ done: number;
32
+ failed: number;
33
+ total: number;
33
34
  }>;
34
35
  /** Clear completed items from a queue. */
35
- export declare function queueClear(name: string, cwd?: string): number;
36
+ declare function queueClear(name: string, cwd?: string): number;
36
37
  /** Delete a queue entirely. */
37
- export declare function queueDelete(name: string, cwd?: string): boolean;
38
+ declare function queueDelete(name: string, cwd?: string): boolean;
39
+ //#endregion
40
+ export { QueueItem, QueueState, queueClear, queueCreate, queueDelete, queueDone, queueFail, queueGet, queueList, queueNext, queuePush };
38
41
  //# sourceMappingURL=queue.d.ts.map
@@ -1,2 +1,2 @@
1
- import{existsSync as a,mkdirSync as c,readFileSync as l,writeFileSync as p}from"node:fs";import{dirname as m,resolve as q}from"node:path";const Q=".kb-state",S="queue.json";function d(e){return q(e??process.cwd(),Q,S)}function o(e){const r=d(e);return a(r)?JSON.parse(l(r,"utf-8")):{}}function g(e,r){const t=d(r),n=m(t);a(n)||c(n,{recursive:!0}),p(t,`${JSON.stringify(e,null,2)}
2
- `,"utf-8")}function h(){return`q_${Date.now().toString(36)}_${Math.random().toString(36).slice(2,6)}`}function I(e,r){const t=o(r);if(t[e])throw new Error(`Queue "${e}" already exists`);const n={name:e,items:[]};return t[e]=n,g(t,r),n}function E(e,r,t,n){const u=o(n);u[e]||(u[e]={name:e,items:[]});const s=new Date().toISOString(),i={id:h(),title:r,status:"pending",data:t,createdAt:s,updatedAt:s};return u[e].items.push(i),g(u,n),i}function $(e,r){const t=o(r),n=t[e];if(!n)throw new Error(`Queue "${e}" does not exist`);const u=n.items.find(s=>s.status==="pending");return u?(u.status="in-progress",u.updatedAt=new Date().toISOString(),g(t,r),u):null}function b(e,r,t){const n=o(t),u=n[e];if(!u)throw new Error(`Queue "${e}" does not exist`);const s=u.items.find(i=>i.id===r);if(!s)throw new Error(`Item "${r}" not found in queue "${e}"`);return s.status="done",s.updatedAt=new Date().toISOString(),g(n,t),s}function A(e,r,t,n){const u=o(n),s=u[e];if(!s)throw new Error(`Queue "${e}" does not exist`);const i=s.items.find(f=>f.id===r);if(!i)throw new Error(`Item "${r}" not found in queue "${e}"`);return i.status="failed",i.error=t,i.updatedAt=new Date().toISOString(),g(u,n),i}function D(e,r){return o(r)[e]??null}function y(e){const r=o(e);return Object.values(r).map(t=>({name:t.name,pending:t.items.filter(n=>n.status==="pending").length,done:t.items.filter(n=>n.status==="done").length,failed:t.items.filter(n=>n.status==="failed").length,total:t.items.length}))}function O(e,r){const t=o(r),n=t[e];if(!n)throw new Error(`Queue "${e}" does not exist`);const u=n.items.length;n.items=n.items.filter(i=>i.status==="pending"||i.status==="in-progress");const s=u-n.items.length;return g(t,r),s}function v(e,r){const t=o(r);return t[e]?(delete t[e],g(t,r),!0):!1}export{O as queueClear,I as queueCreate,v as queueDelete,b as queueDone,A as queueFail,D as queueGet,y as queueList,$ as queueNext,E as queuePush};
1
+ import{dirname as e,resolve as t}from"node:path";import{existsSync as n,mkdirSync as r,readFileSync as i,writeFileSync as a}from"node:fs";function o(e){return t(e??process.cwd(),`.kb-state`,`queue.json`)}function s(e){let t=o(e);if(!n(t))return{};try{return JSON.parse(i(t,`utf-8`))}catch{return{}}}function c(t,i){let s=o(i),c=e(s);n(c)||r(c,{recursive:!0}),a(s,`${JSON.stringify(t,null,2)}\n`,`utf-8`)}function l(){return`q_${Date.now().toString(36)}_${Math.random().toString(36).slice(2,6)}`}function u(e,t){let n=s(t);if(n[e])throw Error(`Queue "${e}" already exists`);let r={name:e,items:[]};return n[e]=r,c(n,t),r}function d(e,t,n,r){let i=s(r);i[e]||(i[e]={name:e,items:[]});let a=new Date().toISOString(),o={id:l(),title:t,status:`pending`,data:n,createdAt:a,updatedAt:a};return i[e].items.push(o),c(i,r),o}function f(e,t){let n=s(t),r=n[e];if(!r)throw Error(`Queue "${e}" does not exist`);let i=r.items.find(e=>e.status===`pending`);return i?(i.status=`in-progress`,i.updatedAt=new Date().toISOString(),c(n,t),i):null}function p(e,t,n){let r=s(n),i=r[e];if(!i)throw Error(`Queue "${e}" does not exist`);let a=i.items.find(e=>e.id===t);if(!a)throw Error(`Item "${t}" not found in queue "${e}"`);return a.status=`done`,a.updatedAt=new Date().toISOString(),c(r,n),a}function m(e,t,n,r){let i=s(r),a=i[e];if(!a)throw Error(`Queue "${e}" does not exist`);let o=a.items.find(e=>e.id===t);if(!o)throw Error(`Item "${t}" not found in queue "${e}"`);return o.status=`failed`,o.error=n,o.updatedAt=new Date().toISOString(),c(i,r),o}function h(e,t){return s(t)[e]??null}function g(e){let t=s(e);return Object.values(t).map(e=>({name:e.name,pending:e.items.filter(e=>e.status===`pending`).length,done:e.items.filter(e=>e.status===`done`).length,failed:e.items.filter(e=>e.status===`failed`).length,total:e.items.length}))}function _(e,t){let n=s(t),r=n[e];if(!r)throw Error(`Queue "${e}" does not exist`);let i=r.items.length;r.items=r.items.filter(e=>e.status===`pending`||e.status===`in-progress`);let a=i-r.items.length;return c(n,t),a}function v(e,t){let n=s(t);return n[e]?(delete n[e],c(n,t),!0):!1}export{_ as queueClear,u as queueCreate,v as queueDelete,p as queueDone,m as queueFail,h as queueGet,g as queueList,f as queueNext,d as queuePush};
2
+ //# sourceMappingURL=queue.js.map
@@ -1,31 +1,34 @@
1
+ //#region packages/tools/src/regex-test.d.ts
1
2
  /**
2
3
  * kb_regex_test — Test regex patterns against sample strings.
3
4
  */
4
- export interface RegexTestOptions {
5
- pattern: string;
6
- flags?: string;
7
- testStrings: string[];
8
- mode?: 'match' | 'replace' | 'split';
9
- replacement?: string;
5
+ interface RegexTestOptions {
6
+ pattern: string;
7
+ flags?: string;
8
+ testStrings: string[];
9
+ mode?: 'match' | 'replace' | 'split';
10
+ replacement?: string;
10
11
  }
11
- export interface RegexMatchInfo {
12
- full: string;
13
- groups: (string | undefined)[];
14
- index: number;
12
+ interface RegexMatchInfo {
13
+ full: string;
14
+ groups: (string | undefined)[];
15
+ index: number;
15
16
  }
16
- export interface RegexTestStringResult {
17
- input: string;
18
- matched: boolean;
19
- matches?: RegexMatchInfo[];
20
- replaced?: string;
21
- split?: string[];
17
+ interface RegexTestStringResult {
18
+ input: string;
19
+ matched: boolean;
20
+ matches?: RegexMatchInfo[];
21
+ replaced?: string;
22
+ split?: string[];
22
23
  }
23
- export interface RegexTestResult {
24
- pattern: string;
25
- flags: string;
26
- results: RegexTestStringResult[];
27
- valid: boolean;
28
- error?: string;
24
+ interface RegexTestResult {
25
+ pattern: string;
26
+ flags: string;
27
+ results: RegexTestStringResult[];
28
+ valid: boolean;
29
+ error?: string;
29
30
  }
30
- export declare function regexTest(options: RegexTestOptions): RegexTestResult;
31
+ declare function regexTest(options: RegexTestOptions): RegexTestResult;
32
+ //#endregion
33
+ export { RegexMatchInfo, RegexTestOptions, RegexTestResult, RegexTestStringResult, regexTest };
31
34
  //# sourceMappingURL=regex-test.d.ts.map
@@ -1 +1,2 @@
1
- function u(g){const{pattern:r,flags:e="",testStrings:l,mode:c="match",replacement:i=""}=g;try{const s=new RegExp(r,e),o=l.map(t=>{const n=s.test(t);switch(c){case"match":{const p=e.includes("g")?e:`${e}g`,x=[...t.matchAll(new RegExp(r,p))];return{input:t,matched:n,matches:x.map(a=>({full:a[0],groups:[...a.slice(1)],index:a.index??0}))}}case"replace":return{input:t,matched:n,replaced:t.replace(new RegExp(r,e),i)};default:return{input:t,matched:n,split:t.split(new RegExp(r,e))}}});return{pattern:r,flags:e,results:o,valid:!0}}catch(s){return{pattern:r,flags:e,results:[],valid:!1,error:s.message}}}export{u as regexTest};
1
+ function e(e){let{pattern:t,flags:n=``,testStrings:r,mode:i=`match`,replacement:a=``}=e;try{let e=new RegExp(t,n);return{pattern:t,flags:n,results:r.map(r=>{let o=e.test(r);switch(i){case`match`:{let e=n.includes(`g`)?n:`${n}g`;return{input:r,matched:o,matches:[...r.matchAll(new RegExp(t,e))].map(e=>({full:e[0],groups:[...e.slice(1)],index:e.index??0}))}}case`replace`:return{input:r,matched:o,replaced:r.replace(new RegExp(t,n),a)};default:return{input:r,matched:o,split:r.split(new RegExp(t,n))}}}),valid:!0}}catch(e){return{pattern:t,flags:n,results:[],valid:!1,error:e.message}}}export{e as regexTest};
2
+ //# sourceMappingURL=regex-test.js.map
@@ -1,29 +1,32 @@
1
- export interface RenameOptions {
2
- /** Symbol to rename */
3
- oldName: string;
4
- /** New symbol name */
5
- newName: string;
6
- /** Root directory to search in */
7
- rootPath: string;
8
- /** File extensions to process (default: .ts, .tsx, .js, .jsx) */
9
- extensions?: string[];
10
- /** Glob patterns to exclude */
11
- exclude?: string[];
12
- /** Dry run — don't write changes */
13
- dryRun?: boolean;
1
+ //#region packages/tools/src/rename.d.ts
2
+ interface RenameOptions {
3
+ /** Symbol to rename */
4
+ oldName: string;
5
+ /** New symbol name */
6
+ newName: string;
7
+ /** Root directory to search in */
8
+ rootPath: string;
9
+ /** File extensions to process (default: .ts, .tsx, .js, .jsx) */
10
+ extensions?: string[];
11
+ /** Glob patterns to exclude */
12
+ exclude?: string[];
13
+ /** Dry run — don't write changes */
14
+ dryRun?: boolean;
14
15
  }
15
- export interface RenameChange {
16
- path: string;
17
- line: number;
18
- before: string;
19
- after: string;
16
+ interface RenameChange {
17
+ path: string;
18
+ line: number;
19
+ before: string;
20
+ after: string;
20
21
  }
21
- export interface RenameResult {
22
- oldName: string;
23
- newName: string;
24
- changes: RenameChange[];
25
- filesModified: number;
26
- dryRun: boolean;
22
+ interface RenameResult {
23
+ oldName: string;
24
+ newName: string;
25
+ changes: RenameChange[];
26
+ filesModified: number;
27
+ dryRun: boolean;
27
28
  }
28
- export declare function rename(options: RenameOptions): Promise<RenameResult>;
29
+ declare function rename(options: RenameOptions): Promise<RenameResult>;
30
+ //#endregion
31
+ export { RenameChange, RenameOptions, RenameResult, rename };
29
32
  //# sourceMappingURL=rename.d.ts.map
@@ -1,2 +1,3 @@
1
- import{readFile as x,writeFile as w}from"node:fs/promises";import{relative as N}from"node:path";import{DEFAULT_TOOL_EXTENSIONS as $,walkFiles as b}from"./file-walk.js";function P(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function C(e){return e.replace(/\\/g,"/")}function E(e){return new RegExp(`(^|[^A-Za-z0-9_$])(${P(e)})(?=[^A-Za-z0-9_$]|$)`,"g")}async function A(e){const{oldName:r,newName:s,rootPath:l,extensions:p=$,exclude:d=[],dryRun:f=!1}=e;if(!r.trim())throw new Error("oldName must not be empty");const g=E(r),h=await b(l,p,d),c=[];let m=0;for(const i of h){const t=(await x(i,"utf-8")).split(/\r?\n/);let u=!1;for(let n=0;n<t.length;n++){const a=t[n];g.lastIndex=0;const o=a.replace(g,(O,R)=>(u=!0,`${R}${s}`));a!==o&&(t[n]=o,c.push({path:C(N(l,i)),line:n+1,before:a,after:o}))}u&&(m+=1,f||await w(i,t.join(`
2
- `),"utf-8"))}return{oldName:r,newName:s,changes:c,filesModified:m,dryRun:f}}export{A as rename};
1
+ import{DEFAULT_TOOL_EXTENSIONS as e,walkFiles as t}from"./file-walk.js";import{readFile as n,writeFile as r}from"node:fs/promises";import{relative as i}from"node:path";function a(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function o(e){return e.replace(/\\/g,`/`)}function s(e){return RegExp(`(^|[^A-Za-z0-9_$])(${a(e)})(?=[^A-Za-z0-9_$]|$)`,`g`)}async function c(a){let{oldName:c,newName:l,rootPath:u,extensions:d=e,exclude:f=[],dryRun:p=!1}=a;if(!c.trim())throw Error(`oldName must not be empty`);let m=s(c),h=await t(u,d,f),g=[],_=0;for(let e of h){let t=(await n(e,`utf-8`)).split(/\r?\n/),a=!1;for(let n=0;n<t.length;n++){let r=t[n];m.lastIndex=0;let s=r.replace(m,(e,t)=>(a=!0,`${t}${l}`));r!==s&&(t[n]=s,g.push({path:o(i(u,e)),line:n+1,before:r,after:s}))}a&&(_+=1,p||await r(e,t.join(`
2
+ `),`utf-8`))}return{oldName:c,newName:l,changes:g,filesModified:_,dryRun:p}}export{c as rename};
3
+ //# sourceMappingURL=rename.js.map
@@ -1,3 +1,4 @@
1
+ //#region packages/tools/src/replay.d.ts
1
2
  /**
2
3
  * Replay — append-only audit trail of tool/CLI invocations.
3
4
  *
@@ -5,52 +6,54 @@
5
6
  * to `.kb-state/replay.jsonl`. Used by `kb replay` CLI, `kb_replay` MCP tool,
6
7
  * and the TUI log panel.
7
8
  */
8
- export interface ReplayEntry {
9
- /** ISO timestamp */
10
- ts: string;
11
- /** Source: 'mcp' | 'cli' */
12
- source: 'mcp' | 'cli';
13
- /** Tool or command name */
14
- tool: string;
15
- /** Redacted input summary (first 200 chars of JSON) */
16
- input: string;
17
- /** Duration in milliseconds */
18
- durationMs: number;
19
- /** Result status */
20
- status: 'ok' | 'error';
21
- /** Short result summary (first 200 chars) */
22
- output: string;
9
+ interface ReplayEntry {
10
+ /** ISO timestamp */
11
+ ts: string;
12
+ /** Source: 'mcp' | 'cli' */
13
+ source: 'mcp' | 'cli';
14
+ /** Tool or command name */
15
+ tool: string;
16
+ /** Redacted input summary (first 200 chars of JSON) */
17
+ input: string;
18
+ /** Duration in milliseconds */
19
+ durationMs: number;
20
+ /** Result status */
21
+ status: 'ok' | 'error';
22
+ /** Short result summary (first 200 chars) */
23
+ output: string;
23
24
  }
24
- export interface ReplayOptions {
25
- /** Max entries to return (default: 20) */
26
- last?: number;
27
- /** Filter by tool name */
28
- tool?: string;
29
- /** Filter by source */
30
- source?: 'mcp' | 'cli';
31
- /** Filter entries after this ISO timestamp */
32
- since?: string;
25
+ interface ReplayOptions {
26
+ /** Max entries to return (default: 20) */
27
+ last?: number;
28
+ /** Filter by tool name */
29
+ tool?: string;
30
+ /** Filter by source */
31
+ source?: 'mcp' | 'cli';
32
+ /** Filter entries after this ISO timestamp */
33
+ since?: string;
33
34
  }
34
35
  /**
35
36
  * Append a replay entry to the audit log.
36
37
  * Creates the `.kb-state/` directory if it doesn't exist.
37
38
  */
38
- export declare function replayAppend(entry: ReplayEntry): void;
39
+ declare function replayAppend(entry: ReplayEntry): void;
39
40
  /**
40
41
  * Read replay entries with optional filters.
41
42
  */
42
- export declare function replayList(opts?: ReplayOptions): ReplayEntry[];
43
+ declare function replayList(opts?: ReplayOptions): ReplayEntry[];
43
44
  /**
44
45
  * Trim the replay log to MAX_ENTRIES, keeping the most recent.
45
46
  */
46
- export declare function replayTrim(): number;
47
+ declare function replayTrim(): number;
47
48
  /**
48
49
  * Clear the entire replay log.
49
50
  */
50
- export declare function replayClear(): void;
51
+ declare function replayClear(): void;
51
52
  /**
52
53
  * Helper: create a replay entry from a tool invocation.
53
54
  * Use as a wrapper around tool execution.
54
55
  */
55
- export declare function replayCapture(source: 'mcp' | 'cli', tool: string, input: unknown, fn: () => Promise<unknown>): Promise<unknown>;
56
+ declare function replayCapture(source: 'mcp' | 'cli', tool: string, input: unknown, fn: () => Promise<unknown>): Promise<unknown>;
57
+ //#endregion
58
+ export { ReplayEntry, ReplayOptions, replayAppend, replayCapture, replayClear, replayList, replayTrim };
56
59
  //# sourceMappingURL=replay.d.ts.map
@@ -1,6 +1,5 @@
1
- import{appendFileSync as m,mkdirSync as S,readFileSync as u,writeFileSync as l}from"node:fs";import{dirname as w,resolve as d}from"node:path";const a=5e3,p=200;function c(){return d(process.cwd(),".kb-state","replay.jsonl")}function f(t,r){return t.length<=r?t:`${t.slice(0,r-1)}\u2026`}function y(t){const r=c();S(w(r),{recursive:!0});const n={...t,input:f(t.input,p),output:f(t.output,p)};m(r,`${JSON.stringify(n)}
2
- `,"utf-8")}function E(t={}){const r=c();let n;try{n=u(r,"utf-8")}catch{return[]}const s=n.trim().split(`
3
- `).filter(Boolean);let e=[];for(const o of s)try{e.push(JSON.parse(o))}catch{}if(t.tool&&(e=e.filter(o=>o.tool===t.tool)),t.source&&(e=e.filter(o=>o.source===t.source)),t.since){const o=t.since;e=e.filter(g=>g.ts>=o)}const i=t.last??20;return e.slice(-i)}function k(){const t=c();let r;try{r=u(t,"utf-8")}catch{return 0}const n=r.trim().split(`
4
- `).filter(Boolean);if(n.length<=a)return 0;const s=n.length-a,e=n.slice(-a);return l(t,`${e.join(`
5
- `)}
6
- `,"utf-8"),s}function O(){const t=c();try{l(t,"","utf-8")}catch{}}function N(t,r,n,s){const e=Date.now();return s().then(i=>(y({ts:new Date().toISOString(),source:t,tool:r,input:typeof n=="string"?n:JSON.stringify(n),durationMs:Date.now()-e,status:"ok",output:typeof i=="string"?i:JSON.stringify(i??"")}),i)).catch(i=>{throw y({ts:new Date().toISOString(),source:t,tool:r,input:typeof n=="string"?n:JSON.stringify(n),durationMs:Date.now()-e,status:"error",output:i instanceof Error?i.message:String(i)}),i})}export{y as replayAppend,N as replayCapture,O as replayClear,E as replayList,k as replayTrim};
1
+ import{dirname as e,resolve as t}from"node:path";import{appendFileSync as n,mkdirSync as r,readFileSync as i,writeFileSync as a}from"node:fs";const o=5e3;let s=0;function c(){return t(process.cwd(),`.kb-state`,`replay.jsonl`)}function l(e,t){return e.length<=t?e:`${e.slice(0,t-1)}…`}function u(t){let i=c();r(e(i),{recursive:!0});let a={...t,input:l(t.input,200),output:l(t.output,200)};if(n(i,`${JSON.stringify(a)}\n`,`utf-8`),s++,s>=100){s=0;try{f()}catch{}}}function d(e={}){let t=c(),n;try{n=i(t,`utf-8`)}catch{return[]}let r=n.trim().split(`
2
+ `).filter(Boolean),a=[];for(let e of r)try{a.push(JSON.parse(e))}catch{}if(e.tool&&(a=a.filter(t=>t.tool===e.tool)),e.source&&(a=a.filter(t=>t.source===e.source)),e.since){let t=e.since;a=a.filter(e=>e.ts>=t)}let o=e.last??20;return a.slice(-o)}function f(){let e=c(),t;try{t=i(e,`utf-8`)}catch{return 0}let n=t.trim().split(`
3
+ `).filter(Boolean);if(n.length<=o)return 0;let r=n.length-o;return a(e,`${n.slice(-o).join(`
4
+ `)}\n`,`utf-8`),r}function p(){let e=c();try{a(e,``,`utf-8`)}catch{}}function m(e,t,n,r){let i=Date.now();return r().then(r=>(u({ts:new Date().toISOString(),source:e,tool:t,input:typeof n==`string`?n:JSON.stringify(n),durationMs:Date.now()-i,status:`ok`,output:typeof r==`string`?r:JSON.stringify(r??``)}),r)).catch(r=>{throw u({ts:new Date().toISOString(),source:e,tool:t,input:typeof n==`string`?n:JSON.stringify(n),durationMs:Date.now()-i,status:`error`,output:r instanceof Error?r.message:String(r)}),r})}export{u as replayAppend,m as replayCapture,p as replayClear,d as replayList,f as replayTrim};
5
+ //# sourceMappingURL=replay.js.map