@vpxa/kb 0.1.13 → 0.1.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (490) hide show
  1. package/README.md +65 -12
  2. package/package.json +14 -7
  3. package/packages/analyzers/dist/blast-radius-analyzer.d.ts +17 -21
  4. package/packages/analyzers/dist/blast-radius-analyzer.js +5 -12
  5. package/packages/analyzers/dist/dependency-analyzer.d.ts +31 -28
  6. package/packages/analyzers/dist/dependency-analyzer.js +6 -9
  7. package/packages/analyzers/dist/diagram-generator.d.ts +12 -9
  8. package/packages/analyzers/dist/diagram-generator.js +2 -4
  9. package/packages/analyzers/dist/entry-point-analyzer.d.ts +39 -36
  10. package/packages/analyzers/dist/entry-point-analyzer.js +4 -6
  11. package/packages/analyzers/dist/index.d.ts +12 -14
  12. package/packages/analyzers/dist/index.js +1 -1
  13. package/packages/analyzers/dist/knowledge-producer.d.ts +34 -26
  14. package/packages/analyzers/dist/knowledge-producer.js +17 -15
  15. package/packages/analyzers/dist/pattern-analyzer.d.ts +14 -11
  16. package/packages/analyzers/dist/pattern-analyzer.js +2 -5
  17. package/packages/analyzers/dist/regex-call-graph.d.ts +6 -13
  18. package/packages/analyzers/dist/regex-call-graph.js +1 -1
  19. package/packages/analyzers/dist/structure-analyzer.d.ts +13 -10
  20. package/packages/analyzers/dist/structure-analyzer.js +2 -4
  21. package/packages/analyzers/dist/symbol-analyzer.d.ts +13 -9
  22. package/packages/analyzers/dist/symbol-analyzer.js +9 -13
  23. package/packages/analyzers/dist/ts-call-graph.d.ts +16 -14
  24. package/packages/analyzers/dist/ts-call-graph.js +1 -1
  25. package/packages/analyzers/dist/types.d.ts +82 -80
  26. package/packages/analyzers/dist/types.js +1 -0
  27. package/packages/chunker/dist/call-graph-extractor.d.ts +15 -12
  28. package/packages/chunker/dist/call-graph-extractor.js +1 -1
  29. package/packages/chunker/dist/chunker-factory.d.ts +16 -4
  30. package/packages/chunker/dist/chunker-factory.js +1 -1
  31. package/packages/chunker/dist/chunker.interface.d.ts +8 -5
  32. package/packages/chunker/dist/chunker.interface.js +1 -0
  33. package/packages/chunker/dist/code-chunker.d.ts +16 -13
  34. package/packages/chunker/dist/code-chunker.js +11 -14
  35. package/packages/chunker/dist/extractors/call-extractor.d.ts +24 -0
  36. package/packages/chunker/dist/extractors/call-extractor.js +1 -0
  37. package/packages/chunker/dist/extractors/entry-point-detector.d.ts +14 -0
  38. package/packages/chunker/dist/extractors/entry-point-detector.js +1 -0
  39. package/packages/chunker/dist/extractors/import-extractor.d.ts +14 -0
  40. package/packages/chunker/dist/extractors/import-extractor.js +1 -0
  41. package/packages/chunker/dist/extractors/pattern-detector.d.ts +14 -0
  42. package/packages/chunker/dist/extractors/pattern-detector.js +1 -0
  43. package/packages/chunker/dist/extractors/scope-resolver.d.ts +26 -0
  44. package/packages/chunker/dist/extractors/scope-resolver.js +1 -0
  45. package/packages/chunker/dist/extractors/symbol-extractor.d.ts +14 -0
  46. package/packages/chunker/dist/extractors/symbol-extractor.js +1 -0
  47. package/packages/chunker/dist/extractors/types.d.ts +36 -0
  48. package/packages/chunker/dist/extractors/types.js +1 -0
  49. package/packages/chunker/dist/generic-chunker.d.ts +14 -11
  50. package/packages/chunker/dist/generic-chunker.js +5 -5
  51. package/packages/chunker/dist/index.d.ts +19 -8
  52. package/packages/chunker/dist/index.js +1 -1
  53. package/packages/chunker/dist/markdown-chunker.d.ts +16 -13
  54. package/packages/chunker/dist/markdown-chunker.js +3 -10
  55. package/packages/chunker/dist/wasm/languages.d.ts +18 -0
  56. package/packages/chunker/dist/wasm/languages.js +1 -0
  57. package/packages/chunker/dist/wasm/query-executor.d.ts +70 -0
  58. package/packages/chunker/dist/wasm/query-executor.js +1 -0
  59. package/packages/chunker/dist/wasm/runtime.d.ts +44 -0
  60. package/packages/chunker/dist/wasm/runtime.js +1 -0
  61. package/packages/chunker/dist/wasm/types.d.ts +84 -0
  62. package/packages/chunker/dist/wasm/types.js +1 -0
  63. package/packages/chunker/dist/wasm-chunker.d.ts +23 -0
  64. package/packages/chunker/dist/wasm-chunker.js +6 -0
  65. package/packages/chunker/src/queries/go/calls.scm +11 -0
  66. package/packages/chunker/src/queries/go/entry-points.scm +20 -0
  67. package/packages/chunker/src/queries/go/imports.scm +6 -0
  68. package/packages/chunker/src/queries/go/patterns.scm +25 -0
  69. package/packages/chunker/src/queries/go/symbols.scm +26 -0
  70. package/packages/chunker/src/queries/java/calls.scm +10 -0
  71. package/packages/chunker/src/queries/java/entry-points.scm +27 -0
  72. package/packages/chunker/src/queries/java/imports.scm +11 -0
  73. package/packages/chunker/src/queries/java/patterns.scm +27 -0
  74. package/packages/chunker/src/queries/java/symbols.scm +28 -0
  75. package/packages/chunker/src/queries/javascript/calls.scm +21 -0
  76. package/packages/chunker/src/queries/javascript/entry-points.scm +31 -0
  77. package/packages/chunker/src/queries/javascript/imports.scm +32 -0
  78. package/packages/chunker/src/queries/javascript/patterns.scm +28 -0
  79. package/packages/chunker/src/queries/javascript/symbols.scm +52 -0
  80. package/packages/chunker/src/queries/python/calls.scm +11 -0
  81. package/packages/chunker/src/queries/python/entry-points.scm +21 -0
  82. package/packages/chunker/src/queries/python/imports.scm +14 -0
  83. package/packages/chunker/src/queries/python/patterns.scm +25 -0
  84. package/packages/chunker/src/queries/python/symbols.scm +17 -0
  85. package/packages/chunker/src/queries/rust/calls.scm +20 -0
  86. package/packages/chunker/src/queries/rust/entry-points.scm +7 -0
  87. package/packages/chunker/src/queries/rust/imports.scm +26 -0
  88. package/packages/chunker/src/queries/rust/patterns.scm +18 -0
  89. package/packages/chunker/src/queries/rust/symbols.scm +73 -0
  90. package/packages/chunker/src/queries/typescript/calls.scm +21 -0
  91. package/packages/chunker/src/queries/typescript/entry-points.scm +48 -0
  92. package/packages/chunker/src/queries/typescript/imports.scm +35 -0
  93. package/packages/chunker/src/queries/typescript/patterns.scm +47 -0
  94. package/packages/chunker/src/queries/typescript/symbols.scm +79 -0
  95. package/packages/chunker/wasm/tree-sitter-go.wasm +0 -0
  96. package/packages/chunker/wasm/tree-sitter-java.wasm +0 -0
  97. package/packages/chunker/wasm/tree-sitter-javascript.wasm +0 -0
  98. package/packages/chunker/wasm/tree-sitter-python.wasm +0 -0
  99. package/packages/chunker/wasm/tree-sitter-rust.wasm +0 -0
  100. package/packages/chunker/wasm/tree-sitter-typescript.wasm +0 -0
  101. package/packages/chunker/wasm/tree-sitter.wasm +0 -0
  102. package/packages/cli/dist/commands/analyze.d.ts +6 -3
  103. package/packages/cli/dist/commands/analyze.js +2 -3
  104. package/packages/cli/dist/commands/context-cmds.d.ts +6 -3
  105. package/packages/cli/dist/commands/context-cmds.js +1 -1
  106. package/packages/cli/dist/commands/environment.d.ts +6 -3
  107. package/packages/cli/dist/commands/environment.js +1 -2
  108. package/packages/cli/dist/commands/execution.d.ts +6 -3
  109. package/packages/cli/dist/commands/execution.js +1 -1
  110. package/packages/cli/dist/commands/graph.d.ts +6 -3
  111. package/packages/cli/dist/commands/graph.js +5 -6
  112. package/packages/cli/dist/commands/init/adapters.d.ts +28 -0
  113. package/packages/cli/dist/commands/init/adapters.js +1 -0
  114. package/packages/cli/dist/commands/init/config.d.ts +10 -0
  115. package/packages/cli/dist/commands/init/config.js +3 -0
  116. package/packages/cli/dist/commands/init/constants.d.ts +18 -0
  117. package/packages/cli/dist/commands/init/constants.js +1 -0
  118. package/packages/cli/dist/commands/init/curated.d.ts +7 -0
  119. package/packages/cli/dist/commands/init/curated.js +1 -0
  120. package/packages/cli/dist/commands/init/global.d.ts +34 -0
  121. package/packages/cli/dist/commands/init/global.js +5 -0
  122. package/packages/cli/dist/commands/init/index.d.ts +28 -0
  123. package/packages/cli/dist/commands/init/index.js +5 -0
  124. package/packages/cli/dist/commands/init/scaffold.d.ts +23 -0
  125. package/packages/cli/dist/commands/init/scaffold.js +1 -0
  126. package/packages/cli/dist/commands/init/templates.d.ts +9 -0
  127. package/packages/cli/dist/commands/init/templates.js +165 -0
  128. package/packages/cli/dist/commands/knowledge.d.ts +6 -3
  129. package/packages/cli/dist/commands/knowledge.js +1 -1
  130. package/packages/cli/dist/commands/search.d.ts +6 -3
  131. package/packages/cli/dist/commands/search.js +1 -8
  132. package/packages/cli/dist/commands/system.d.ts +6 -3
  133. package/packages/cli/dist/commands/system.js +4 -7
  134. package/packages/cli/dist/commands/workspace.d.ts +6 -3
  135. package/packages/cli/dist/commands/workspace.js +1 -2
  136. package/packages/cli/dist/context.d.ts +7 -5
  137. package/packages/cli/dist/context.js +1 -1
  138. package/packages/cli/dist/helpers.d.ts +51 -48
  139. package/packages/cli/dist/helpers.js +5 -5
  140. package/packages/cli/dist/index.d.ts +4 -2
  141. package/packages/cli/dist/index.js +2 -2
  142. package/packages/cli/dist/kb-init.d.ts +48 -51
  143. package/packages/cli/dist/kb-init.js +1 -1
  144. package/packages/cli/dist/types.d.ts +8 -6
  145. package/packages/cli/dist/types.js +1 -0
  146. package/packages/core/dist/constants.d.ts +58 -34
  147. package/packages/core/dist/constants.js +1 -1
  148. package/packages/core/dist/content-detector.d.ts +8 -8
  149. package/packages/core/dist/content-detector.js +1 -1
  150. package/packages/core/dist/errors.d.ts +15 -13
  151. package/packages/core/dist/errors.js +1 -1
  152. package/packages/core/dist/global-registry.d.ts +62 -0
  153. package/packages/core/dist/global-registry.js +1 -0
  154. package/packages/core/dist/index.d.ts +7 -6
  155. package/packages/core/dist/index.js +1 -1
  156. package/packages/core/dist/logger.d.ts +19 -8
  157. package/packages/core/dist/logger.js +1 -1
  158. package/packages/core/dist/types.d.ts +107 -92
  159. package/packages/core/dist/types.js +1 -0
  160. package/packages/embeddings/dist/embedder.interface.d.ts +22 -20
  161. package/packages/embeddings/dist/embedder.interface.js +1 -0
  162. package/packages/embeddings/dist/index.d.ts +3 -3
  163. package/packages/embeddings/dist/index.js +1 -1
  164. package/packages/embeddings/dist/onnx-embedder.d.ts +21 -23
  165. package/packages/embeddings/dist/onnx-embedder.js +1 -1
  166. package/packages/enterprise-bridge/dist/cache.d.ts +28 -0
  167. package/packages/enterprise-bridge/dist/cache.js +1 -0
  168. package/packages/enterprise-bridge/dist/er-client.d.ts +37 -0
  169. package/packages/enterprise-bridge/dist/er-client.js +1 -0
  170. package/packages/enterprise-bridge/dist/evolution-collector.d.ts +62 -0
  171. package/packages/enterprise-bridge/dist/evolution-collector.js +1 -0
  172. package/packages/enterprise-bridge/dist/index.d.ts +8 -0
  173. package/packages/enterprise-bridge/dist/index.js +1 -0
  174. package/packages/enterprise-bridge/dist/policy-store.d.ts +45 -0
  175. package/packages/enterprise-bridge/dist/policy-store.js +1 -0
  176. package/packages/enterprise-bridge/dist/push-adapter.d.ts +23 -0
  177. package/packages/enterprise-bridge/dist/push-adapter.js +1 -0
  178. package/packages/enterprise-bridge/dist/result-merger.d.ts +14 -0
  179. package/packages/enterprise-bridge/dist/result-merger.js +1 -0
  180. package/packages/enterprise-bridge/dist/types.d.ts +81 -0
  181. package/packages/enterprise-bridge/dist/types.js +1 -0
  182. package/packages/indexer/dist/file-hasher.d.ts +5 -3
  183. package/packages/indexer/dist/file-hasher.js +1 -1
  184. package/packages/indexer/dist/filesystem-crawler.d.ts +23 -21
  185. package/packages/indexer/dist/filesystem-crawler.js +1 -1
  186. package/packages/indexer/dist/graph-extractor.d.ts +9 -13
  187. package/packages/indexer/dist/graph-extractor.js +1 -1
  188. package/packages/indexer/dist/incremental-indexer.d.ts +49 -44
  189. package/packages/indexer/dist/incremental-indexer.js +1 -1
  190. package/packages/indexer/dist/index.d.ts +5 -5
  191. package/packages/indexer/dist/index.js +1 -1
  192. package/packages/server/dist/api.d.ts +3 -8
  193. package/packages/server/dist/api.js +1 -1
  194. package/packages/server/dist/config.d.ts +6 -3
  195. package/packages/server/dist/config.js +1 -1
  196. package/packages/server/dist/cross-workspace.d.ts +43 -0
  197. package/packages/server/dist/cross-workspace.js +1 -0
  198. package/packages/server/dist/curated-manager.d.ts +80 -78
  199. package/packages/server/dist/curated-manager.js +5 -10
  200. package/packages/server/dist/index.d.ts +1 -2
  201. package/packages/server/dist/index.js +1 -1
  202. package/packages/server/dist/replay-interceptor.d.ts +6 -7
  203. package/packages/server/dist/replay-interceptor.js +1 -1
  204. package/packages/server/dist/resources/resources.d.ts +7 -4
  205. package/packages/server/dist/resources/resources.js +2 -2
  206. package/packages/server/dist/server.d.ts +37 -25
  207. package/packages/server/dist/server.js +1 -1
  208. package/packages/server/dist/tools/analyze.tools.d.ts +14 -11
  209. package/packages/server/dist/tools/analyze.tools.js +1 -3
  210. package/packages/server/dist/tools/audit.tool.d.ts +8 -5
  211. package/packages/server/dist/tools/audit.tool.js +1 -4
  212. package/packages/server/dist/tools/bridge.tools.d.ts +34 -0
  213. package/packages/server/dist/tools/bridge.tools.js +15 -0
  214. package/packages/server/dist/tools/evolution.tools.d.ts +7 -0
  215. package/packages/server/dist/tools/evolution.tools.js +5 -0
  216. package/packages/server/dist/tools/forge.tools.d.ts +13 -12
  217. package/packages/server/dist/tools/forge.tools.js +10 -13
  218. package/packages/server/dist/tools/forget.tool.d.ts +7 -4
  219. package/packages/server/dist/tools/forget.tool.js +1 -7
  220. package/packages/server/dist/tools/graph.tool.d.ts +7 -4
  221. package/packages/server/dist/tools/graph.tool.js +4 -5
  222. package/packages/server/dist/tools/list.tool.d.ts +7 -4
  223. package/packages/server/dist/tools/list.tool.js +2 -8
  224. package/packages/server/dist/tools/lookup.tool.d.ts +7 -4
  225. package/packages/server/dist/tools/lookup.tool.js +2 -9
  226. package/packages/server/dist/tools/onboard.tool.d.ts +8 -5
  227. package/packages/server/dist/tools/onboard.tool.js +2 -2
  228. package/packages/server/dist/tools/policy.tools.d.ts +7 -0
  229. package/packages/server/dist/tools/policy.tools.js +2 -0
  230. package/packages/server/dist/tools/produce.tool.d.ts +6 -3
  231. package/packages/server/dist/tools/produce.tool.js +2 -2
  232. package/packages/server/dist/tools/read.tool.d.ts +7 -4
  233. package/packages/server/dist/tools/read.tool.js +2 -6
  234. package/packages/server/dist/tools/reindex.tool.d.ts +10 -7
  235. package/packages/server/dist/tools/reindex.tool.js +3 -2
  236. package/packages/server/dist/tools/remember.tool.d.ts +8 -4
  237. package/packages/server/dist/tools/remember.tool.js +3 -5
  238. package/packages/server/dist/tools/replay.tool.d.ts +6 -3
  239. package/packages/server/dist/tools/replay.tool.js +2 -6
  240. package/packages/server/dist/tools/search.tool.d.ts +10 -5
  241. package/packages/server/dist/tools/search.tool.js +6 -22
  242. package/packages/server/dist/tools/status.tool.d.ts +12 -4
  243. package/packages/server/dist/tools/status.tool.js +2 -3
  244. package/packages/server/dist/tools/toolkit.tools.d.ts +36 -35
  245. package/packages/server/dist/tools/toolkit.tools.js +20 -24
  246. package/packages/server/dist/tools/update.tool.d.ts +7 -4
  247. package/packages/server/dist/tools/update.tool.js +1 -6
  248. package/packages/server/dist/tools/utility.tools.d.ts +15 -15
  249. package/packages/server/dist/tools/utility.tools.js +10 -23
  250. package/packages/server/dist/version-check.d.ts +5 -2
  251. package/packages/server/dist/version-check.js +1 -1
  252. package/packages/store/dist/graph-store.interface.d.ts +89 -87
  253. package/packages/store/dist/graph-store.interface.js +1 -0
  254. package/packages/store/dist/index.d.ts +6 -6
  255. package/packages/store/dist/index.js +1 -1
  256. package/packages/store/dist/lance-store.d.ts +37 -31
  257. package/packages/store/dist/lance-store.js +1 -1
  258. package/packages/store/dist/sqlite-graph-store.d.ts +43 -47
  259. package/packages/store/dist/sqlite-graph-store.js +13 -13
  260. package/packages/store/dist/store-factory.d.ts +11 -8
  261. package/packages/store/dist/store-factory.js +1 -1
  262. package/packages/store/dist/store.interface.d.ts +47 -47
  263. package/packages/store/dist/store.interface.js +1 -0
  264. package/packages/tools/dist/audit.d.ts +61 -62
  265. package/packages/tools/dist/audit.js +4 -5
  266. package/packages/tools/dist/batch.d.ts +20 -18
  267. package/packages/tools/dist/batch.js +1 -1
  268. package/packages/tools/dist/changelog.d.ts +29 -27
  269. package/packages/tools/dist/changelog.js +2 -2
  270. package/packages/tools/dist/check.d.ts +42 -39
  271. package/packages/tools/dist/check.js +2 -2
  272. package/packages/tools/dist/checkpoint.d.ts +17 -15
  273. package/packages/tools/dist/checkpoint.js +1 -2
  274. package/packages/tools/dist/codemod.d.ts +35 -33
  275. package/packages/tools/dist/codemod.js +2 -2
  276. package/packages/tools/dist/compact.d.ts +34 -38
  277. package/packages/tools/dist/compact.js +2 -2
  278. package/packages/tools/dist/data-transform.d.ts +10 -8
  279. package/packages/tools/dist/data-transform.js +1 -1
  280. package/packages/tools/dist/dead-symbols.d.ts +29 -26
  281. package/packages/tools/dist/dead-symbols.js +2 -2
  282. package/packages/tools/dist/delegate.d.ts +26 -24
  283. package/packages/tools/dist/delegate.js +1 -5
  284. package/packages/tools/dist/diff-parse.d.ts +24 -22
  285. package/packages/tools/dist/diff-parse.js +3 -3
  286. package/packages/tools/dist/digest.d.ts +43 -46
  287. package/packages/tools/dist/digest.js +4 -5
  288. package/packages/tools/dist/dogfood-log.d.ts +49 -0
  289. package/packages/tools/dist/dogfood-log.js +2 -0
  290. package/packages/tools/dist/encode.d.ts +11 -9
  291. package/packages/tools/dist/encode.js +1 -1
  292. package/packages/tools/dist/env-info.d.ts +25 -23
  293. package/packages/tools/dist/env-info.js +1 -1
  294. package/packages/tools/dist/eval.d.ts +13 -11
  295. package/packages/tools/dist/eval.js +2 -3
  296. package/packages/tools/dist/evidence-map.d.ts +64 -62
  297. package/packages/tools/dist/evidence-map.js +2 -3
  298. package/packages/tools/dist/file-cache.d.ts +41 -0
  299. package/packages/tools/dist/file-cache.js +3 -0
  300. package/packages/tools/dist/file-summary.d.ts +50 -30
  301. package/packages/tools/dist/file-summary.js +2 -2
  302. package/packages/tools/dist/file-walk.d.ts +6 -4
  303. package/packages/tools/dist/file-walk.js +1 -1
  304. package/packages/tools/dist/find-examples.d.ts +26 -22
  305. package/packages/tools/dist/find-examples.js +3 -3
  306. package/packages/tools/dist/find.d.ts +39 -41
  307. package/packages/tools/dist/find.js +1 -1
  308. package/packages/tools/dist/forge-classify.d.ts +35 -39
  309. package/packages/tools/dist/forge-classify.js +2 -2
  310. package/packages/tools/dist/forge-ground.d.ts +58 -61
  311. package/packages/tools/dist/forge-ground.js +1 -1
  312. package/packages/tools/dist/git-context.d.ts +22 -20
  313. package/packages/tools/dist/git-context.js +3 -3
  314. package/packages/tools/dist/graph-query.d.ts +75 -79
  315. package/packages/tools/dist/graph-query.js +1 -1
  316. package/packages/tools/dist/guide.d.ts +14 -12
  317. package/packages/tools/dist/guide.js +1 -1
  318. package/packages/tools/dist/health.d.ts +13 -11
  319. package/packages/tools/dist/health.js +2 -2
  320. package/packages/tools/dist/http-request.d.ts +20 -18
  321. package/packages/tools/dist/http-request.js +1 -1
  322. package/packages/tools/dist/index.d.ts +55 -53
  323. package/packages/tools/dist/index.js +1 -1
  324. package/packages/tools/dist/lane.d.ts +28 -26
  325. package/packages/tools/dist/lane.js +6 -7
  326. package/packages/tools/dist/measure.d.ts +34 -30
  327. package/packages/tools/dist/measure.js +2 -2
  328. package/packages/tools/dist/onboard.d.ts +29 -27
  329. package/packages/tools/dist/onboard.js +17 -41
  330. package/packages/tools/dist/parse-output.d.ts +48 -46
  331. package/packages/tools/dist/parse-output.js +2 -2
  332. package/packages/tools/dist/path-resolver.d.ts +4 -2
  333. package/packages/tools/dist/path-resolver.js +1 -1
  334. package/packages/tools/dist/process-manager.d.ts +18 -16
  335. package/packages/tools/dist/process-manager.js +1 -1
  336. package/packages/tools/dist/queue.d.ts +28 -26
  337. package/packages/tools/dist/queue.js +1 -2
  338. package/packages/tools/dist/regex-test.d.ts +26 -24
  339. package/packages/tools/dist/regex-test.js +1 -1
  340. package/packages/tools/dist/rename.d.ts +28 -26
  341. package/packages/tools/dist/rename.js +2 -2
  342. package/packages/tools/dist/replay.d.ts +33 -31
  343. package/packages/tools/dist/replay.js +4 -6
  344. package/packages/tools/dist/response-envelope.d.ts +32 -30
  345. package/packages/tools/dist/response-envelope.js +1 -1
  346. package/packages/tools/dist/schema-validate.d.ts +15 -13
  347. package/packages/tools/dist/schema-validate.js +1 -1
  348. package/packages/tools/dist/scope-map.d.ts +45 -48
  349. package/packages/tools/dist/scope-map.js +1 -1
  350. package/packages/tools/dist/snippet.d.ts +26 -25
  351. package/packages/tools/dist/snippet.js +1 -1
  352. package/packages/tools/dist/stash.d.ts +13 -11
  353. package/packages/tools/dist/stash.js +1 -2
  354. package/packages/tools/dist/stratum-card.d.ts +27 -28
  355. package/packages/tools/dist/stratum-card.js +3 -5
  356. package/packages/tools/dist/symbol.d.ts +31 -26
  357. package/packages/tools/dist/symbol.js +3 -3
  358. package/packages/tools/dist/test-run.d.ts +19 -16
  359. package/packages/tools/dist/test-run.js +2 -2
  360. package/packages/tools/dist/text-utils.d.ts +6 -4
  361. package/packages/tools/dist/text-utils.js +2 -2
  362. package/packages/tools/dist/time-utils.d.ts +15 -13
  363. package/packages/tools/dist/time-utils.js +1 -1
  364. package/packages/tools/dist/trace.d.ts +26 -21
  365. package/packages/tools/dist/trace.js +2 -2
  366. package/packages/tools/dist/truncation.d.ts +6 -4
  367. package/packages/tools/dist/truncation.js +6 -13
  368. package/packages/tools/dist/watch.d.ts +28 -26
  369. package/packages/tools/dist/watch.js +1 -1
  370. package/packages/tools/dist/web-fetch.d.ts +35 -33
  371. package/packages/tools/dist/web-fetch.js +6 -12
  372. package/packages/tools/dist/web-search.d.ts +16 -14
  373. package/packages/tools/dist/web-search.js +1 -1
  374. package/packages/tools/dist/workset.d.ts +19 -17
  375. package/packages/tools/dist/workset.js +1 -2
  376. package/packages/tui/dist/App-CYLNJLr6.js +2 -0
  377. package/packages/tui/dist/App.d.ts +11 -6
  378. package/packages/tui/dist/App.js +1 -450
  379. package/packages/tui/dist/CuratedPanel-sYdZAICX.js +2 -0
  380. package/packages/tui/dist/LogPanel-DtMnoyXT.js +3 -0
  381. package/packages/tui/dist/SearchPanel-DREo6zgt.js +2 -0
  382. package/packages/tui/dist/StatusPanel-2ex8fLOO.js +2 -0
  383. package/packages/tui/dist/chunk-D6axbAb-.js +2 -0
  384. package/packages/tui/dist/devtools-DUyj952l.js +7 -0
  385. package/packages/tui/dist/embedder.interface-D4ew0HPW.d.ts +28 -0
  386. package/packages/tui/dist/index-B9VpfVPP.d.ts +13 -0
  387. package/packages/tui/dist/index.d.ts +3 -19
  388. package/packages/tui/dist/index.js +1 -476
  389. package/packages/tui/dist/jsx-runtime-Cof-kwFn.js +316 -0
  390. package/packages/tui/dist/panels/CuratedPanel.d.ts +11 -6
  391. package/packages/tui/dist/panels/CuratedPanel.js +1 -371
  392. package/packages/tui/dist/panels/LogPanel.d.ts +7 -3
  393. package/packages/tui/dist/panels/LogPanel.js +1 -449
  394. package/packages/tui/dist/panels/SearchPanel.d.ts +14 -8
  395. package/packages/tui/dist/panels/SearchPanel.js +1 -372
  396. package/packages/tui/dist/panels/StatusPanel.d.ts +11 -6
  397. package/packages/tui/dist/panels/StatusPanel.js +1 -371
  398. package/packages/tui/dist/store.interface-CnY6SPOH.d.ts +150 -0
  399. package/scaffold/adapters/claude-code.mjs +20 -0
  400. package/scaffold/adapters/copilot.mjs +320 -0
  401. package/scaffold/copilot/agents/Architect-Reviewer-Alpha.agent.md +21 -0
  402. package/scaffold/copilot/agents/Architect-Reviewer-Beta.agent.md +21 -0
  403. package/scaffold/copilot/agents/Documenter.agent.md +42 -0
  404. package/scaffold/copilot/agents/Orchestrator.agent.md +104 -0
  405. package/scaffold/copilot/agents/Planner.agent.md +54 -0
  406. package/scaffold/copilot/agents/Refactor.agent.md +36 -0
  407. package/scaffold/copilot/agents/Researcher-Alpha.agent.md +20 -0
  408. package/scaffold/copilot/agents/Researcher-Beta.agent.md +20 -0
  409. package/scaffold/copilot/agents/Researcher-Delta.agent.md +20 -0
  410. package/scaffold/copilot/agents/Researcher-Gamma.agent.md +20 -0
  411. package/scaffold/definitions/agents.mjs +165 -0
  412. package/scaffold/definitions/bodies.mjs +292 -0
  413. package/scaffold/definitions/hooks.mjs +43 -0
  414. package/scaffold/definitions/models.mjs +56 -0
  415. package/scaffold/definitions/plugins.mjs +24 -0
  416. package/scaffold/definitions/prompts.mjs +145 -0
  417. package/scaffold/definitions/protocols.mjs +322 -0
  418. package/scaffold/definitions/tools.mjs +176 -0
  419. package/scaffold/general/agents/Architect-Reviewer-Alpha.agent.md +21 -0
  420. package/scaffold/general/agents/Architect-Reviewer-Beta.agent.md +21 -0
  421. package/scaffold/general/agents/Code-Reviewer-Alpha.agent.md +12 -0
  422. package/scaffold/general/agents/Code-Reviewer-Beta.agent.md +12 -0
  423. package/scaffold/general/agents/Debugger.agent.md +31 -0
  424. package/scaffold/general/agents/Documenter.agent.md +42 -0
  425. package/scaffold/general/agents/Explorer.agent.md +50 -0
  426. package/scaffold/general/agents/Frontend.agent.md +29 -0
  427. package/scaffold/general/agents/Implementer.agent.md +31 -0
  428. package/scaffold/general/agents/Orchestrator.agent.md +104 -0
  429. package/scaffold/general/agents/Planner.agent.md +55 -0
  430. package/scaffold/general/agents/README.md +57 -0
  431. package/scaffold/general/agents/Refactor.agent.md +36 -0
  432. package/scaffold/general/agents/Researcher-Alpha.agent.md +20 -0
  433. package/scaffold/general/agents/Researcher-Beta.agent.md +20 -0
  434. package/scaffold/general/agents/Researcher-Delta.agent.md +20 -0
  435. package/scaffold/general/agents/Researcher-Gamma.agent.md +20 -0
  436. package/scaffold/general/agents/Security.agent.md +42 -0
  437. package/scaffold/general/agents/_shared/adr-protocol.md +91 -0
  438. package/scaffold/general/agents/_shared/architect-reviewer-base.md +50 -0
  439. package/scaffold/general/agents/_shared/code-agent-base.md +88 -0
  440. package/scaffold/general/agents/_shared/code-reviewer-base.md +54 -0
  441. package/scaffold/general/agents/_shared/decision-protocol.md +27 -0
  442. package/scaffold/general/agents/_shared/forge-protocol.md +46 -0
  443. package/scaffold/general/agents/_shared/researcher-base.md +61 -0
  444. package/scaffold/general/agents/templates/adr-template.md +27 -0
  445. package/scaffold/general/agents/templates/execution-state.md +25 -0
  446. package/scaffold/general/prompts/ask.prompt.md +20 -0
  447. package/scaffold/general/prompts/debug.prompt.md +25 -0
  448. package/scaffold/general/prompts/design.prompt.md +22 -0
  449. package/scaffold/general/prompts/implement.prompt.md +26 -0
  450. package/scaffold/general/prompts/plan.prompt.md +24 -0
  451. package/scaffold/general/prompts/review.prompt.md +31 -0
  452. package/scaffold/generate.mjs +74 -0
  453. package/skills/adr-skill/SKILL.md +329 -0
  454. package/skills/adr-skill/assets/templates/adr-madr.md +89 -0
  455. package/skills/adr-skill/assets/templates/adr-readme.md +20 -0
  456. package/skills/adr-skill/assets/templates/adr-simple.md +46 -0
  457. package/skills/adr-skill/references/adr-conventions.md +95 -0
  458. package/skills/adr-skill/references/examples.md +193 -0
  459. package/skills/adr-skill/references/review-checklist.md +77 -0
  460. package/skills/adr-skill/references/template-variants.md +52 -0
  461. package/skills/adr-skill/scripts/bootstrap_adr.js +259 -0
  462. package/skills/adr-skill/scripts/new_adr.js +391 -0
  463. package/skills/adr-skill/scripts/set_adr_status.js +169 -0
  464. package/skills/brainstorming/SKILL.md +259 -0
  465. package/skills/brainstorming/scripts/frame-template.html +365 -0
  466. package/skills/brainstorming/scripts/helper.js +216 -0
  467. package/skills/brainstorming/scripts/server.cjs +9 -0
  468. package/skills/brainstorming/scripts/server.src.cjs +249 -0
  469. package/skills/brainstorming/spec-document-reviewer-prompt.md +49 -0
  470. package/skills/brainstorming/visual-companion.md +430 -0
  471. package/skills/c4-architecture/SKILL.md +295 -0
  472. package/skills/c4-architecture/references/advanced-patterns.md +552 -0
  473. package/skills/c4-architecture/references/c4-syntax.md +492 -0
  474. package/skills/c4-architecture/references/common-mistakes.md +437 -0
  475. package/skills/knowledge-base/SKILL.md +100 -10
  476. package/skills/lesson-learned/SKILL.md +105 -0
  477. package/skills/lesson-learned/references/anti-patterns.md +55 -0
  478. package/skills/lesson-learned/references/se-principles.md +109 -0
  479. package/skills/requirements-clarity/SKILL.md +324 -0
  480. package/skills/session-handoff/SKILL.md +189 -0
  481. package/skills/session-handoff/references/handoff-template.md +139 -0
  482. package/skills/session-handoff/references/resume-checklist.md +80 -0
  483. package/skills/session-handoff/scripts/check_staleness.js +269 -0
  484. package/skills/session-handoff/scripts/create_handoff.js +299 -0
  485. package/skills/session-handoff/scripts/list_handoffs.js +113 -0
  486. package/skills/session-handoff/scripts/validate_handoff.js +241 -0
  487. package/packages/chunker/dist/treesitter-chunker.d.ts +0 -47
  488. package/packages/chunker/dist/treesitter-chunker.js +0 -8
  489. package/packages/cli/dist/commands/init.d.ts +0 -10
  490. package/packages/cli/dist/commands/init.js +0 -308
@@ -1,3 +1,6 @@
1
- import type { Command } from '../types.js';
2
- export declare const analyzeCommands: Command[];
3
- //# sourceMappingURL=analyze.d.ts.map
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 };
@@ -1,3 +1,2 @@
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};
@@ -1,3 +1,6 @@
1
- import type { Command } from '../types.js';
2
- export declare const contextCommands: Command[];
3
- //# sourceMappingURL=context-cmds.d.ts.map
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 };
@@ -1 +1 @@
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};
@@ -1,3 +1,6 @@
1
- import type { Command } from '../types.js';
2
- export declare const environmentCommands: Command[];
3
- //# sourceMappingURL=environment.d.ts.map
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 };
@@ -1,2 +1 @@
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};
@@ -1,3 +1,6 @@
1
- import type { Command } from '../types.js';
2
- export declare const executionCommands: Command[];
3
- //# sourceMappingURL=execution.d.ts.map
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 };
@@ -1 +1 @@
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};
@@ -1,3 +1,6 @@
1
- import type { Command } from '../types.js';
2
- export declare const graphCommands: Command[];
3
- //# sourceMappingURL=graph.d.ts.map
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 };
@@ -1,7 +1,6 @@
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};
@@ -0,0 +1,28 @@
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' | 'cursor' | 'windsurf';
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 const cursorAdapter: IdeAdapter;
25
+ declare const windsurfAdapter: IdeAdapter;
26
+ declare function getAdapter(ide: SupportedIde): IdeAdapter;
27
+ //#endregion
28
+ export { IdeAdapter, SupportedIde, claudeCodeAdapter, copilotAdapter, cursorAdapter, detectIde, getAdapter, windsurfAdapter };
@@ -0,0 +1 @@
1
+ import{MCP_SERVER_ENTRY as e}from"./constants.js";import{buildAgentsMd as t,buildCopilotInstructions as n}from"./templates.js";import{existsSync as r,mkdirSync as i,writeFileSync as a}from"node:fs";import{basename as o,resolve as s}from"node:path";function c(e){return r(s(e,`.cursor`))?`cursor`:r(s(e,`.claude`))?`claude-code`:r(s(e,`.windsurf`))?`windsurf`:`copilot`}function l(t){return{servers:{[t]:{...e}}}}function u(t){let{type:n,...r}=e;return{mcpServers:{[t]:r}}}const d={scaffoldDir:`general`,writeMcpConfig(e,t){let n=s(e,`.vscode`),i=s(n,`mcp.json`);r(n)&&!r(i)&&(a(i,`${JSON.stringify(l(t),null,2)}\n`,`utf-8`),console.log(` Created .vscode/mcp.json`))},writeInstructions(e,t){let c=s(e,`.github`),l=s(c,`copilot-instructions.md`);r(l)||(i(c,{recursive:!0}),a(l,n(o(e),t),`utf-8`),console.log(` Created .github/copilot-instructions.md`))},writeAgentsMd(e,n){let i=s(e,`AGENTS.md`);r(i)||(a(i,t(o(e),n),`utf-8`),console.log(` Created AGENTS.md`))}},f={scaffoldDir:`general`,writeMcpConfig(e,t){let n=s(e,`.mcp.json`);r(n)||(a(n,`${JSON.stringify(u(t),null,2)}\n`,`utf-8`),console.log(` Created .mcp.json`))},writeInstructions(e,i){let c=s(e,`CLAUDE.md`);if(!r(c)){let r=o(e);a(c,`${n(r,i)}\n---\n\n${t(r,i)}`,`utf-8`),console.log(` Created CLAUDE.md`)}},writeAgentsMd(e,t){}},p={scaffoldDir:`general`,writeMcpConfig(e,t){let n=s(e,`.cursor`),o=s(n,`mcp.json`);r(o)||(i(n,{recursive:!0}),a(o,`${JSON.stringify(u(t),null,2)}\n`,`utf-8`),console.log(` Created .cursor/mcp.json`))},writeInstructions(e,c){let l=s(e,`.cursor`,`rules`),u=s(l,`kb.mdc`);if(!r(u)){i(l,{recursive:!0});let r=o(e);a(u,`${n(r,c)}\n---\n\n${t(r,c)}`,`utf-8`),console.log(` Created .cursor/rules/kb.mdc`)}},writeAgentsMd(e,t){}},m={scaffoldDir:`general`,writeMcpConfig(e,t){let n=s(e,`.vscode`),o=s(n,`mcp.json`);r(o)||(i(n,{recursive:!0}),a(o,`${JSON.stringify(l(t),null,2)}\n`,`utf-8`),console.log(` Created .vscode/mcp.json (Windsurf-compatible)`))},writeInstructions(e,i){let c=s(e,`.windsurfrules`);if(!r(c)){let r=o(e);a(c,`${n(r,i)}\n---\n\n${t(r,i)}`,`utf-8`),console.log(` Created .windsurfrules`)}},writeAgentsMd(e,t){}};function h(e){switch(e){case`copilot`:return d;case`claude-code`:return f;case`cursor`:return p;case`windsurf`:return m}}export{f as claudeCodeAdapter,d as copilotAdapter,p as cursorAdapter,c as detectIde,h as getAdapter,m as windsurfAdapter};
@@ -0,0 +1,10 @@
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 };
@@ -0,0 +1,3 @@
1
+ import{SERVER_NAME as e}from"./constants.js";import{appendFileSync as t,existsSync as n,readFileSync as r,writeFileSync as i}from"node:fs";import{resolve as a}from"node:path";import{KB_PATHS as o}from"../../../../core/dist/index.js";const s={serverName:e,sources:[{path:`.`,excludePatterns:[`**/node_modules/**`,`**/dist/**`,`**/build/**`,`**/.git/**`,`**/${o.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:`${o.data}/lance`},curated:{path:o.aiCurated}};function c(e,t){let r=a(e,`kb.config.json`);return n(r)&&!t?(console.log(`kb.config.json already exists. Use --force to overwrite.`),!1):(i(r,`${JSON.stringify(s,null,2)}\n`,`utf-8`),console.log(` Created kb.config.json`),!0)}function l(e){let s=a(e,`.gitignore`),c=[{dir:`${o.data}/`,label:`Knowledge base vector store`},{dir:`${o.state}/`,label:`Knowledge base session state`},{dir:`${o.brainstorm}/`,label:`Brainstorming sessions`},{dir:`${o.handoffs}/`,label:`Handoff documents`}];if(n(s)){let e=r(s,`utf-8`),n=c.filter(t=>!e.includes(t.dir));n.length>0&&(t(s,`\n${n.map(e=>`# ${e.label}\n${e.dir}`).join(`
2
+ `)}\n`,`utf-8`),console.log(` Added ${n.map(e=>e.dir).join(`, `)} to .gitignore`))}else i(s,`${c.map(e=>`# ${e.label}\n${e.dir}`).join(`
3
+ `)}\n`,`utf-8`),console.log(` Created .gitignore with KB entries`)}function u(){return s.serverName}export{l as ensureGitignore,u as getServerName,c as writeKbConfig};
@@ -0,0 +1,18 @@
1
+ //#region packages/cli/src/commands/init/constants.d.ts
2
+ /**
3
+ * Init module — shared constants.
4
+ *
5
+ * Single source of truth for lists used by both local and global init.
6
+ */
7
+ /** The MCP server name used in all IDE configs. */
8
+ declare const SERVER_NAME = "knowledge-base";
9
+ /** The npx-based MCP server entry written into mcp.json files. */
10
+ declare const MCP_SERVER_ENTRY: {
11
+ readonly type: "stdio";
12
+ readonly command: "npx";
13
+ readonly args: readonly ["-y", "@vpxa/kb", "serve"];
14
+ };
15
+ /** Skills shipped with the KB package and installed during init. */
16
+ declare const SKILL_NAMES: readonly ["knowledge-base", "brainstorming", "session-handoff", "requirements-clarity", "lesson-learned", "c4-architecture", "adr-skill"];
17
+ //#endregion
18
+ export { MCP_SERVER_ENTRY, SERVER_NAME, SKILL_NAMES };
@@ -0,0 +1 @@
1
+ const e=`knowledge-base`,t={type:`stdio`,command:`npx`,args:[`-y`,`@vpxa/kb`,`serve`]},n=[`knowledge-base`,`brainstorming`,`session-handoff`,`requirements-clarity`,`lesson-learned`,`c4-architecture`,`adr-skill`];export{t as MCP_SERVER_ENTRY,e as SERVER_NAME,n as SKILL_NAMES};
@@ -0,0 +1,7 @@
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 };
@@ -0,0 +1 @@
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,`.ai`,`curated`);e(a)||(t(a,{recursive:!0}),console.log(` Created .ai/curated/`));for(let i of r){let r=n(a,i);e(r)||t(r,{recursive:!0})}console.log(` Created .ai/curated/{${r.join(`,`)}}/`)}export{i as createCuratedDirs};
@@ -0,0 +1,34 @@
1
+ //#region packages/cli/src/commands/init/global.d.ts
2
+ /**
3
+ * `kb init --global` — configure KB as a user-level MCP server.
4
+ *
5
+ * Auto-detects all installed IDEs, writes user-level mcp.json for each,
6
+ * installs skills to a global location, and creates the global data store.
7
+ */
8
+ /** Represents a user-level IDE config location. */
9
+ interface UserLevelIdePath {
10
+ ide: string;
11
+ configDir: string;
12
+ mcpConfigPath: string;
13
+ }
14
+ /**
15
+ * Detect all installed IDEs by checking if their user-level config directory exists.
16
+ */
17
+ declare function detectInstalledIdes(): UserLevelIdePath[];
18
+ /**
19
+ * Write or merge the KB server entry into a user-level mcp.json.
20
+ * Preserves all existing non-KB entries. Backs up existing file before writing.
21
+ */
22
+ declare function writeUserLevelMcpConfig(idePath: UserLevelIdePath, serverName: string, force?: boolean): void;
23
+ /**
24
+ * Install skills to the global user-level directory (~/.kb-data/skills/).
25
+ */
26
+ declare function installGlobalSkills(pkgRoot: string): void;
27
+ /**
28
+ * Main orchestrator for `kb init --global`.
29
+ */
30
+ declare function initGlobal(options: {
31
+ force: boolean;
32
+ }): Promise<void>;
33
+ //#endregion
34
+ export { UserLevelIdePath, detectInstalledIdes, initGlobal, installGlobalSkills, writeUserLevelMcpConfig };
@@ -0,0 +1,5 @@
1
+ import{MCP_SERVER_ENTRY as e,SERVER_NAME as t,SKILL_NAMES as n}from"./constants.js";import{copyDirectoryRecursive as r}from"./scaffold.js";import{existsSync as i,mkdirSync as a,readFileSync as o,writeFileSync as s}from"node:fs";import{dirname as c,resolve as l}from"node:path";import{fileURLToPath as u}from"node:url";import{getGlobalDataDir as d,saveRegistry as f}from"../../../../core/dist/index.js";import{homedir as p}from"node:os";function m(){let e=p(),t=process.platform,n=[];if(t===`win32`){let t=process.env.APPDATA??l(e,`AppData`,`Roaming`);n.push({ide:`VS Code`,configDir:l(t,`Code`,`User`),mcpConfigPath:l(t,`Code`,`User`,`mcp.json`)},{ide:`Cursor`,configDir:l(t,`Cursor`,`User`),mcpConfigPath:l(t,`Cursor`,`User`,`mcp.json`)},{ide:`Windsurf`,configDir:l(t,`Windsurf`,`User`),mcpConfigPath:l(t,`Windsurf`,`User`,`mcp.json`)})}else if(t===`darwin`){let t=l(e,`Library`,`Application Support`);n.push({ide:`VS Code`,configDir:l(t,`Code`,`User`),mcpConfigPath:l(t,`Code`,`User`,`mcp.json`)},{ide:`Cursor`,configDir:l(t,`Cursor`,`User`),mcpConfigPath:l(t,`Cursor`,`User`,`mcp.json`)},{ide:`Windsurf`,configDir:l(t,`Windsurf`,`User`),mcpConfigPath:l(t,`Windsurf`,`User`,`mcp.json`)})}else{let t=process.env.XDG_CONFIG_HOME??l(e,`.config`);n.push({ide:`VS Code`,configDir:l(t,`Code`,`User`),mcpConfigPath:l(t,`Code`,`User`,`mcp.json`)},{ide:`Cursor`,configDir:l(t,`Cursor`,`User`),mcpConfigPath:l(t,`Cursor`,`User`,`mcp.json`)},{ide:`Windsurf`,configDir:l(t,`Windsurf`,`User`),mcpConfigPath:l(t,`Windsurf`,`User`,`mcp.json`)})}return n.push({ide:`Claude Code`,configDir:l(e,`.claude`),mcpConfigPath:l(e,`.claude`,`mcp.json`)}),n.filter(e=>i(e.configDir))}function h(t,n,r=!1){let{mcpConfigPath:c,configDir:l}=t,u={...e},d={};if(i(c)){try{let e=o(c,`utf-8`);d=JSON.parse(e)}catch{let e=`${c}.bak`;s(e,o(c,`utf-8`),`utf-8`),console.log(` Backed up invalid ${c} to ${e}`),d={}}if((d.servers??d.mcpServers??{})[n]&&!r){console.log(` ${t.ide}: ${n} already configured (use --force to update)`);return}}let f=t.ide===`VS Code`||t.ide===`Windsurf`?`servers`:`mcpServers`,p=d[f]??{};p[n]=u,d[f]=p,a(l,{recursive:!0}),s(c,`${JSON.stringify(d,null,2)}\n`,`utf-8`),console.log(` ${t.ide}: configured ${n} in ${c}`)}function g(e){let t=l(d(),`skills`);for(let a of n){let n=l(e,`skills`,a);i(n)&&r(n,l(t,a),`skills/${a}`,!0)}console.log(` Installed ${n.length} skills to ${t}`)}async function _(e){let n=t;console.log(`Initializing global KB installation...
2
+ `);let r=d();a(r,{recursive:!0}),console.log(` Global data store: ${r}`),f({version:1,workspaces:{}}),console.log(` Created registry.json`);let i=m();if(i.length===0)console.log(`
3
+ No supported IDEs detected. You can manually add the MCP server config.`);else{console.log(`\n Detected ${i.length} IDE(s):`);for(let t of i)h(t,n,e.force)}g(l(c(u(import.meta.url)),`..`,`..`,`..`,`..`,`..`)),console.log(`
4
+ Global KB installation complete!`),console.log(`
5
+ Next steps:`),console.log(` 1. Open any workspace in your IDE`),console.log(` 2. The KB server will auto-start and index the workspace`),console.log(" 3. Run `kb init` in a workspace to add AGENTS.md and instructions")}export{m as detectInstalledIdes,_ as initGlobal,g as installGlobalSkills,h as writeUserLevelMcpConfig};
@@ -0,0 +1,28 @@
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
+ /**
20
+ * Smart init — scaffold-only if global detected, full local otherwise.
21
+ */
22
+ declare function initSmart(options: {
23
+ force: boolean;
24
+ }): Promise<void>;
25
+ /** Generate a JSON guide report comparing installed vs source files. */
26
+ declare function guideProject(): Promise<void>;
27
+ //#endregion
28
+ export { guideProject, initProject, initSmart };
@@ -0,0 +1,5 @@
1
+ import{SKILL_NAMES as e}from"./constants.js";import{detectIde as t,getAdapter as n}from"./adapters.js";import{ensureGitignore as r,getServerName as i,writeKbConfig as a}from"./config.js";import{createCuratedDirs as o}from"./curated.js";import{copyScaffold as s,copySkills as c,guideScaffold as l,guideSkills as u}from"./scaffold.js";import{dirname as d,resolve as f}from"node:path";import{fileURLToPath as p}from"node:url";import{isGlobalInstalled as m}from"../../../../core/dist/index.js";async function h(l){let u=process.cwd();if(!a(u,l.force))return;r(u);let h=i(),g=n(t(u));g.writeMcpConfig(u,h),g.writeInstructions(u,h),g.writeAgentsMd(u,h);let _=f(d(p(import.meta.url)),`..`,`..`,`..`,`..`,`..`);c(u,_,[...e],l.force),s(u,_,g.scaffoldDir,l.force),o(u),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`),m()&&console.log(`
3
+ Note: Global KB is also installed. This workspace uses its own local data store.`)}async function g(e){m()?await _(e):await h(e)}async function _(e){let a=process.cwd(),c=i(),l=n(t(a));l.writeInstructions(a,c),l.writeAgentsMd(a,c),s(a,f(d(p(import.meta.url)),`..`,`..`,`..`,`..`,`..`),l.scaffoldDir,e.force),o(a),r(a),console.log(`
4
+ Workspace scaffolded for global KB! Files added:`),console.log(` Instruction files (AGENTS.md, copilot-instructions.md, etc.)`),console.log(` .ai/curated/ directories`),console.log(` .github/agents/ & .github/prompts/`),console.log(`
5
+ The global KB server will auto-index this workspace when opened in your IDE.`)}async function v(){let r=process.cwd(),i=n(t(r)),a=f(d(p(import.meta.url)),`..`,`..`,`..`,`..`,`..`),o=[...u(r,a,[...e]),...l(r,a,i.scaffoldDir)],s={summary:{total:o.length,new:o.filter(e=>e.status===`new`).length,outdated:o.filter(e=>e.status===`outdated`).length,current:o.filter(e=>e.status===`current`).length},files:o};console.log(JSON.stringify(s,null,2))}export{v as guideProject,h as initProject,g as initSmart};
@@ -0,0 +1,23 @@
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 };
@@ -0,0 +1 @@
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};
@@ -0,0 +1,9 @@
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 };
@@ -0,0 +1,165 @@
1
+ function e(e,t){return`# ${e} — Copilot Instructions
2
+
3
+ This project has an MCP server (\`${t}\`) providing 64 tools for search, analysis, memory, and validation.
4
+ **These tools REPLACE most native IDE tools.** You MUST use them.
5
+
6
+ ## Step 0: Load KB Tools
7
+
8
+ Before doing ANYTHING else, load the KB MCP tools. They are deferred — you must load them first.
9
+ Search for tools matching the server name (e.g. \`knowledge-bas\`):
10
+ \`\`\`
11
+ tool_search_tool_regex({ pattern: "knowledge-bas" }) // loads all 64 KB tools
12
+ \`\`\`
13
+ Once loaded, KB tools appear as \`mcp_<server>_<tool>\` (e.g. \`mcp_knowledge-bas_search\`).
14
+
15
+ ## FORBIDDEN: Native Tools When KB Alternative Exists
16
+
17
+ | NEVER use this | USE THIS KB TOOL INSTEAD | Why |
18
+ |---|---|---|
19
+ | \`read_file\` to understand a file | \`file_summary({ path })\` | Structure, exports, imports — 10x fewer tokens |
20
+ | \`read_file\` to find specific code | \`compact({ path, query })\` | Server-side read + semantic extract — 5-20x reduction |
21
+ | Multiple \`read_file\` calls | \`digest({ sources })\` | Compresses multiple files into token-budgeted summary |
22
+ | \`grep_search\` / \`semantic_search\` | \`search({ query })\` | Hybrid search across all indexed + curated content |
23
+ | \`grep_search\` for a symbol name | \`symbol({ name })\` | Definition + references with scope and call context |
24
+ | \`run_in_terminal\` for find/grep | \`find({ pattern })\` or \`search()\` | No shell needed, richer results |
25
+ | \`run_in_terminal\` for tsc/lint | \`check({})\` | Typecheck + lint combined, summary output |
26
+ | \`run_in_terminal\` for test | \`test_run({})\` | Run tests with structured output |
27
+ | Manual code tracing | \`trace({ symbol, direction })\` | AST call-graph traversal |
28
+ | Line counting / wc | \`measure({ path })\` | Lines, functions, cognitive complexity |
29
+
30
+ **\`read_file\` is ONLY acceptable when you need exact line content FOR EDITING (before \`replace_string_in_file\`).**
31
+ Even then, use \`file_summary\` first to identify which lines to read.
32
+
33
+ ## Core Rules
34
+
35
+ 1. **Search before acting** — \`search({ query })\` then \`scope_map({ task })\` before ANY code change. If a prior decision exists, follow it.
36
+ 2. **Compress, don't read** — \`file_summary\` → \`compact\` → \`digest\`. NEVER raw-read a file to "understand" it.
37
+ 3. **Remember** — \`search({ query: "SESSION CHECKPOINT", origin: "curated" })\` at session start. \`remember()\` decisions at session end.
38
+ 4. **Validate** — \`check({})\` + \`test_run({})\` before presenting changes. \`blast_radius({ changed_files })\` for impact.
39
+ 5. **Lifecycle** — Check \`status({})\` first. If onboard not run, run \`onboard({ path: "." })\`. After implementation, \`reindex({})\` + \`produce_knowledge({})\`. At session end, \`remember()\` checkpoint.
40
+
41
+ ## Custom Agents
42
+
43
+ This project has specialized agents in \`.github/agents/\`. Use them instead of built-in modes:
44
+ - **Planner** — for planning and research before implementation
45
+ - **Implementer** — for coding tasks following TDD practices
46
+ - **Researcher** — for deep investigation and context gathering
47
+ - **Explorer** — for rapid codebase navigation
48
+
49
+ Check \`.github/agents/\` for the full list of available agents.
50
+ `}function t(e,t){return`# ${e} — Agent Instructions
51
+
52
+ ## KB MCP Server (\`${t}\`)
53
+
54
+ 64 tools for search, code analysis, persistent memory, validation, and context compression.
55
+ Load them: \`tool_search_tool_regex({ pattern: "knowledge-bas" })\`
56
+
57
+ ### Skills Reference
58
+
59
+ | Context | Skill | Load when |
60
+ |---------|-------|----------|
61
+ | KB search, analysis, memory | \`knowledge-base\` | **Always load at session start.** Tool signatures, workflows, session protocol. |
62
+ | Brainstorming & design | \`brainstorming\` | Before any creative/design work — new features, components, behavior changes. |
63
+ | Session context preservation | \`session-handoff\` | Context window filling up, session ending, or major milestone completed. |
64
+ | Requirements scoring | \`requirements-clarity\` | Before planning vague or complex features — score 0-100 until \u2265 90. |
65
+ | Engineering lessons | \`lesson-learned\` | After completing work — extract principles from git diffs. |
66
+ | Architecture diagrams | \`c4-architecture\` | When documenting or reviewing architecture — C4 Mermaid diagrams. |
67
+ | Architecture decisions | \`adr-skill\` | When making non-trivial technical decisions — executable ADRs. |
68
+
69
+ ### Tool Categories
70
+
71
+ | Category | Tools | Purpose |
72
+ |----------|-------|---------|
73
+ | Search & Discovery | \`search\`, \`find\`, \`symbol\`, \`trace\`, \`scope_map\`, \`lookup\`, \`dead_symbols\`, \`file_summary\` | Find code, symbols, data flow, reading plans |
74
+ | Code Analysis | \`analyze_structure\`, \`analyze_dependencies\`, \`analyze_symbols\`, \`analyze_patterns\`, \`analyze_entry_points\`, \`analyze_diagram\`, \`blast_radius\` | Structure, deps, patterns, impact |
75
+ | Knowledge | \`remember\`, \`read\`, \`update\`, \`forget\`, \`list\`, \`produce_knowledge\` | Persistent cross-session memory |
76
+ | Execution | \`check\`, \`test_run\`, \`eval\`, \`batch\`, \`audit\` | Typecheck, lint, test, run code |
77
+ | Context Compression | \`compact\`, \`digest\`, \`stratum_card\`, \`workset\`, \`stash\`, \`checkpoint\` | Reduce tokens, manage working sets |
78
+ | FORGE | \`forge_ground\`, \`forge_classify\`, \`evidence_map\` | Quality gates for complex tasks |
79
+ | Code Manipulation | \`rename\`, \`codemod\`, \`diff_parse\`, \`data_transform\` | Safe renames, transforms |
80
+ | Web & API | \`web_fetch\`, \`web_search\`, \`http\` | Fetch pages, search web |
81
+ | Lanes | \`lane\` | Isolated file copies for parallel exploration |
82
+ | Git & Environment | \`git_context\`, \`process\`, \`watch\`, \`delegate\` | Git info, process management |
83
+ | Utilities | \`regex_test\`, \`encode\`, \`measure\`, \`changelog\`, \`schema_validate\`, \`snippet\`, \`env\`, \`time\` | Regex, encoding, metrics |
84
+ | System | \`status\`, \`reindex\`, \`health\`, \`guide\`, \`onboard\`, \`graph\`, \`queue\`, \`replay\` | Index management, knowledge graph |
85
+
86
+ ---
87
+
88
+ ## How to Read Code (Decision Tree)
89
+
90
+ \`\`\`
91
+ Need to understand a file?
92
+ \u251C\u2500 Just structure? \u2192 file_summary (exports, imports, functions \u2014 ~50 tokens)
93
+ \u251C\u2500 Specific section? \u2192 compact({ path, query }) \u2014 5-20x token reduction
94
+ \u251C\u2500 Multiple files? \u2192 digest (multi-source compression)
95
+ \u251C\u2500 Repeated reference? \u2192 stratum_card (reusable T1/T2 card)
96
+ \u2514\u2500 Need exact lines to EDIT? \u2192 read_file (ONLY acceptable use)
97
+ \`\`\`
98
+
99
+ **Rules:**
100
+ 1. NEVER \`read_file\` a file >50 lines to "understand" it — use \`file_summary\` or \`compact\`
101
+ 2. NEVER \`grep_search\` or \`semantic_search\` — use \`search\` (hybrid across >12k indexed records)
102
+ 3. NEVER \`run_in_terminal\` for tsc/lint/test — use \`check\` / \`test_run\`
103
+ 4. \`read_file\` is ONLY for getting exact lines before \`replace_string_in_file\`
104
+
105
+ ---
106
+
107
+ ## Session Protocol
108
+
109
+ ### Start (do ALL)
110
+ \`\`\`
111
+ status({}) # Check KB health + onboard state
112
+ # If onboard not run → onboard({ path: "." }) # First-time codebase analysis
113
+ list() # See stored knowledge
114
+ search({ query: "SESSION CHECKPOINT", origin: "curated" }) # Resume prior work
115
+ \`\`\`
116
+
117
+ ### During
118
+ | Situation | Tool |
119
+ |-----------|------|
120
+ | Intermediate result | \`stash({ key, value })\` |
121
+ | Milestone completed | \`checkpoint({ action: "save", name })\` |
122
+ | Architecture decision made | \`remember({ title, content, category: "decisions" })\` |
123
+ | Pattern discovered | \`remember({ title, content, category: "patterns" })\` |
124
+ | About to propose new approach | \`search({ query })\` — check if already decided |
125
+
126
+ ### After Implementation (do ALL)
127
+ \`\`\`
128
+ check({}) # Typecheck + lint
129
+ test_run({}) # Run tests
130
+ blast_radius({ changed_files: ["..."] }) # Impact analysis
131
+ reindex({}) # Background refresh (non-blocking)
132
+ produce_knowledge({ path: "." }) # Regenerate codebase analysis
133
+ remember({ title: "Session checkpoint: ...", ... }) # Persist decisions
134
+ \`\`\`
135
+
136
+ ### End (MUST do)
137
+ \`\`\`
138
+ remember({ title: "Session checkpoint: <topic>", content: "<decisions, blockers, next steps>", category: "conventions" })
139
+ \`\`\`
140
+ For long sessions or context approaching capacity, use the \`session-handoff\` skill to create a structured handoff document.
141
+
142
+ ---
143
+
144
+ ## Search Modes
145
+
146
+ | Mode | When | Example |
147
+ |------|------|---------|
148
+ | \`hybrid\` (default) | General queries | \`search({ query: "error handling" })\` |
149
+ | \`semantic\` | Conceptual | \`search({ query: "retry with backoff", search_mode: "semantic" })\` |
150
+ | \`keyword\` | Exact identifiers | \`search({ query: "CircuitBreaker", search_mode: "keyword" })\` |
151
+
152
+ ---
153
+
154
+ ## Workflow Chains
155
+
156
+ **Planning:** \`search\` → \`scope_map\` → \`file_summary\` per file → \`compact\` for detail → \`workset({ action: "save" })\`
157
+
158
+ **Bug investigation:** \`parse_output\` → \`symbol\` → \`trace({ direction: "backward" })\` → \`blast_radius\`
159
+
160
+ **Codebase onboarding:** \`onboard({ path: "." })\` → \`produce_knowledge({ path: "src/" })\` → \`remember\`
161
+
162
+ **After implementation:** \`check\` → \`test_run\` → \`blast_radius\` → \`reindex\` → \`produce_knowledge\` → \`remember\`
163
+
164
+ **Complex tasks (FORGE):** \`forge_classify({ task })\` → \`forge_ground({ task })\` → \`evidence_map({ claims })\`
165
+ `}export{t as buildAgentsMd,e as buildCopilotInstructions};
@@ -1,3 +1,6 @@
1
- import type { Command } from '../types.js';
2
- export declare const knowledgeCommands: Command[];
3
- //# sourceMappingURL=knowledge.d.ts.map
1
+ import { Command } from "../types.js";
2
+
3
+ //#region packages/cli/src/commands/knowledge.d.ts
4
+ declare const knowledgeCommands: Command[];
5
+ //#endregion
6
+ export { knowledgeCommands };