@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,50 +1,50 @@
1
- /**
2
- * Knowledge store abstraction — allows swapping vector DB backends.
3
- */
4
- import type { IndexStats, KnowledgeRecord, SearchResult } from '@kb/core';
1
+ import { ContentType, IndexStats, KnowledgeOrigin, KnowledgeRecord, SearchResult, SourceType } from "@kb/core";
2
+
3
+ //#region packages/store/src/store.interface.d.ts
5
4
  /** Options for searching the store */
6
- export interface SearchOptions {
7
- /** Maximum number of results to return */
8
- limit?: number;
9
- /** Minimum similarity score (0-1) */
10
- minScore?: number;
11
- /** Filter by content type */
12
- contentType?: string;
13
- /** Filter by coarse source type (source, documentation, test, config, generated) */
14
- sourceType?: string;
15
- /** Filter by origin */
16
- origin?: string;
17
- /** Filter by category */
18
- category?: string;
19
- /** Filter by tags (any match) */
20
- tags?: string[];
5
+ interface SearchOptions {
6
+ /** Maximum number of results to return */
7
+ limit?: number;
8
+ /** Minimum similarity score (0-1) */
9
+ minScore?: number;
10
+ /** Filter by content type */
11
+ contentType?: ContentType;
12
+ /** Filter by coarse source type (source, documentation, test, config, generated) */
13
+ sourceType?: SourceType;
14
+ /** Filter by origin */
15
+ origin?: KnowledgeOrigin;
16
+ /** Filter by category */
17
+ category?: string;
18
+ /** Filter by tags (any match) */
19
+ tags?: string[];
21
20
  }
22
- export interface IKnowledgeStore {
23
- /** Initialize the store (create tables, etc.) */
24
- initialize(): Promise<void>;
25
- /** Add or update records with their embedding vectors */
26
- upsert(records: KnowledgeRecord[], vectors: Float32Array[]): Promise<void>;
27
- /** Search by vector similarity */
28
- search(queryVector: Float32Array, options?: SearchOptions): Promise<SearchResult[]>;
29
- /** Get a specific record by ID */
30
- getById(id: string): Promise<KnowledgeRecord | null>;
31
- /** Delete records by source path (used during re-indexing) */
32
- deleteBySourcePath(sourcePath: string): Promise<number>;
33
- /** Delete a specific record by ID */
34
- deleteById(id: string): Promise<boolean>;
35
- /** Get all records for a source path */
36
- getBySourcePath(sourcePath: string): Promise<KnowledgeRecord[]>;
37
- /** Get index statistics */
38
- getStats(): Promise<IndexStats>;
39
- /** List all unique source paths in the store */
40
- listSourcePaths(): Promise<string[]>;
41
- /** Create a full-text search index on the content column for keyword search */
42
- createFtsIndex(): Promise<void>;
43
- /** Full-text keyword search (requires FTS index) */
44
- ftsSearch(query: string, options?: SearchOptions): Promise<SearchResult[]>;
45
- /** Drop the backing table entirely — used for hard resets (e.g. dimension changes) */
46
- dropTable(): Promise<void>;
47
- /** Close the store connection */
48
- close(): Promise<void>;
21
+ interface IKnowledgeStore {
22
+ /** Initialize the store (create tables, etc.) */
23
+ initialize(): Promise<void>;
24
+ /** Add or update records with their embedding vectors */
25
+ upsert(records: KnowledgeRecord[], vectors: Float32Array[]): Promise<void>;
26
+ /** Search by vector similarity */
27
+ search(queryVector: Float32Array, options?: SearchOptions): Promise<SearchResult[]>;
28
+ /** Get a specific record by ID */
29
+ getById(id: string): Promise<KnowledgeRecord | null>;
30
+ /** Delete records by source path (used during re-indexing) */
31
+ deleteBySourcePath(sourcePath: string): Promise<number>;
32
+ /** Delete a specific record by ID */
33
+ deleteById(id: string): Promise<boolean>;
34
+ /** Get all records for a source path */
35
+ getBySourcePath(sourcePath: string): Promise<KnowledgeRecord[]>;
36
+ /** Get index statistics */
37
+ getStats(): Promise<IndexStats>;
38
+ /** List all unique source paths in the store */
39
+ listSourcePaths(): Promise<string[]>;
40
+ /** Create a full-text search index on the content column for keyword search */
41
+ createFtsIndex(): Promise<void>;
42
+ /** Full-text keyword search (requires FTS index) */
43
+ ftsSearch(query: string, options?: SearchOptions): Promise<SearchResult[]>;
44
+ /** Drop the backing table entirely — used for hard resets (e.g. dimension changes) */
45
+ dropTable(): Promise<void>;
46
+ /** Close the store connection */
47
+ close(): Promise<void>;
49
48
  }
50
- //# sourceMappingURL=store.interface.d.ts.map
49
+ //#endregion
50
+ export { IKnowledgeStore, SearchOptions };
@@ -0,0 +1 @@
1
+ export{};
@@ -1,66 +1,65 @@
1
- /**
2
- * Unified audit tool (E-007) — runs structure, dependencies, patterns, health,
3
- * dead_symbols, and check in one call, producing a synthesized report.
4
- */
5
- import type { IEmbedder } from '@kb/embeddings';
6
- import type { IKnowledgeStore } from '@kb/store';
7
- import { type KBResponse } from './response-envelope.js';
8
- export type AuditCheck = 'structure' | 'dependencies' | 'patterns' | 'health' | 'dead_symbols' | 'check' | 'entry_points';
9
- export interface AuditOptions {
10
- /** Root path to audit (default: cwd) */
11
- path?: string;
12
- /** Which checks to run (default: all) */
13
- checks?: AuditCheck[];
14
- /** Detail level (default: 'summary') */
15
- detail?: 'summary' | 'full';
1
+ import { KBResponse } from "./response-envelope.js";
2
+ import { IEmbedder } from "@kb/embeddings";
3
+ import { IKnowledgeStore } from "@kb/store";
4
+
5
+ //#region packages/tools/src/audit.d.ts
6
+ type AuditCheck = 'structure' | 'dependencies' | 'patterns' | 'health' | 'dead_symbols' | 'check' | 'entry_points';
7
+ interface AuditOptions {
8
+ /** Root path to audit (default: cwd) */
9
+ path?: string;
10
+ /** Which checks to run (default: all) */
11
+ checks?: AuditCheck[];
12
+ /** Detail level (default: 'summary') */
13
+ detail?: 'summary' | 'full';
16
14
  }
17
- export interface AuditRecommendation {
18
- priority: 'high' | 'medium' | 'low';
19
- area: string;
20
- message: string;
15
+ interface AuditRecommendation {
16
+ priority: 'high' | 'medium' | 'low';
17
+ area: string;
18
+ message: string;
21
19
  }
22
- export interface AuditData {
20
+ interface AuditData {
21
+ score: number;
22
+ structure?: {
23
+ files: number;
24
+ packages: number;
25
+ languages: Record<string, number>;
26
+ };
27
+ dependencies?: {
28
+ external: number;
29
+ internal: number;
30
+ };
31
+ patterns?: Array<{
32
+ name: string;
33
+ confidence: string;
34
+ count: number;
35
+ }>;
36
+ health?: {
23
37
  score: number;
24
- structure?: {
25
- files: number;
26
- packages: number;
27
- languages: Record<string, number>;
28
- };
29
- dependencies?: {
30
- external: number;
31
- internal: number;
32
- };
33
- patterns?: Array<{
34
- name: string;
35
- confidence: string;
36
- count: number;
37
- }>;
38
- health?: {
39
- score: number;
40
- checks: number;
41
- passed: number;
42
- warned: number;
43
- failed: number;
44
- };
45
- deadSymbols?: {
46
- source: number;
47
- docs: number;
48
- };
49
- entryPoints?: {
50
- total: number;
51
- types: Record<string, number>;
52
- };
53
- typecheck?: {
54
- passed: boolean;
55
- errorCount: number;
56
- topErrors: string[];
57
- };
58
- lint?: {
59
- passed: boolean;
60
- errorCount: number;
61
- topErrors: string[];
62
- };
63
- recommendations: AuditRecommendation[];
38
+ checks: number;
39
+ passed: number;
40
+ warned: number;
41
+ failed: number;
42
+ };
43
+ deadSymbols?: {
44
+ source: number;
45
+ docs: number;
46
+ };
47
+ entryPoints?: {
48
+ total: number;
49
+ types: Record<string, number>;
50
+ };
51
+ typecheck?: {
52
+ passed: boolean;
53
+ errorCount: number;
54
+ topErrors: string[];
55
+ };
56
+ lint?: {
57
+ passed: boolean;
58
+ errorCount: number;
59
+ topErrors: string[];
60
+ };
61
+ recommendations: AuditRecommendation[];
64
62
  }
65
- export declare function audit(store: IKnowledgeStore, embedder: IEmbedder, options?: AuditOptions): Promise<KBResponse<AuditData>>;
66
- //# sourceMappingURL=audit.d.ts.map
63
+ declare function audit(store: IKnowledgeStore, embedder: IEmbedder, options?: AuditOptions): Promise<KBResponse<AuditData>>;
64
+ //#endregion
65
+ export { AuditCheck, AuditData, AuditOptions, AuditRecommendation, audit };
@@ -1,7 +1,6 @@
1
- import{DependencyAnalyzer as $,EntryPointAnalyzer as A,PatternAnalyzer as w,StructureAnalyzer as S}from"../../analyzers/dist/index.js";import{check as x,summarizeCheckResult as C}from"./check.js";import{findDeadSymbols as D}from"./dead-symbols.js";import{health as R}from"./health.js";import{resolvePath as P}from"./path-resolver.js";import{errorResponse as z,okResponse as E}from"./response-envelope.js";const _=["structure","dependencies","patterns","health","dead_symbols","check","entry_points"];async function B(e,h,n={}){const o=Date.now(),i=P(n.path),l=n.checks??_,f=n.detail??"summary",d=[],t={score:100,recommendations:d};try{const c=[];l.includes("structure")&&c.push((async()=>{const s=await new S().analyze(i,{format:"json"}),a=s.data;t.structure={files:a.stats?.totalFiles??s.meta.fileCount,packages:Array.isArray(a.packages)?a.packages.length:0,languages:a.stats?.languages??{}}})()),l.includes("dependencies")&&c.push((async()=>{const a=(await new $().analyze(i)).data,u=a.imports??[];t.dependencies={external:a.external?.length??u.filter(p=>p.isExternal).length,internal:a.internal?.length??u.filter(p=>!p.isExternal).length}})()),l.includes("patterns")&&c.push((async()=>{const a=(await new w().analyze(i)).data;t.patterns=(a.patterns??[]).map(u=>({name:u.pattern,confidence:u.confidence,count:u.locations.length}))})()),l.includes("entry_points")&&c.push((async()=>{const a=(await new A().analyze(i)).data,u=a.entryPoints??[],p={};for(const b of u)p[b.type]=(p[b.type]??0)+1;t.entryPoints={total:a.total??u.length,types:p}})()),l.includes("health")&&c.push((async()=>{const r=R(i);t.health={score:r.score,checks:r.checks.length,passed:r.checks.filter(s=>s.status==="pass").length,warned:r.checks.filter(s=>s.status==="warn").length,failed:r.checks.filter(s=>s.status==="fail").length},r.score<70&&d.push({priority:"medium",area:"health",message:`Health score ${r.score}/100 \u2014 ${t.health.failed} failed checks`})})()),l.includes("dead_symbols")&&c.push((async()=>{const r=await D(h,e,{rootPath:i});t.deadSymbols={source:r.totalDeadSource,docs:r.totalDeadDocs},r.totalDeadSource>0&&d.push({priority:r.totalDeadSource>10?"high":"medium",area:"dead-code",message:`${r.totalDeadSource} unused exports in source files`})})()),l.includes("check")&&c.push((async()=>{const r=await x({cwd:i}),s=C(r);t.typecheck={passed:s.tsc.passed,errorCount:s.tsc.errorCount,topErrors:s.tsc.topErrors},t.lint={passed:s.biome.passed,errorCount:s.biome.errorCount,topErrors:s.biome.topErrors},s.tsc.passed||d.push({priority:"high",area:"type-safety",message:`Fix ${s.tsc.errorCount} tsc error(s)`}),s.biome.passed||d.push({priority:"medium",area:"lint",message:`Fix ${s.biome.errorCount} lint error(s)`})})()),await Promise.all(c);let m=0;t.typecheck&&!t.typecheck.passed&&(m+=15),t.lint&&!t.lint.passed&&(m+=5),t.health&&t.health.score<80&&(m+=10),t.deadSymbols&&t.deadSymbols.source>10&&(m+=5),t.entryPoints&&t.entryPoints.total===0&&(m+=5),t.score=Math.max(0,100-m);const g={high:0,medium:1,low:2};d.sort((r,s)=>g[r.priority]-g[s.priority]);const k=j(t,f),y=[];return t.typecheck&&!t.typecheck.passed&&y.push({tool:"check",reason:"Get full error details",suggested_args:{detail:"errors"}}),t.deadSymbols&&t.deadSymbols.source>0&&y.push({tool:"dead_symbols",reason:"See which exports are unused",suggested_args:{root_path:i}}),E("audit",k,t,{durationMs:Date.now()-o,detail:f},y)}catch(c){return z("audit",{code:"ANALYSIS_FAILED",category:"runtime",retryable:!1,message:`Audit failed: ${c.message}`},Date.now()-o)}}function j(e,h){const n=[];if(n.push(`## Audit Report \u2014 Score: ${e.score}/100
2
- `),e.structure&&n.push(`**Structure:** ${e.structure.files} files, ${e.structure.packages} packages, ${Object.keys(e.structure.languages).length} languages`),e.entryPoints){const o=Object.entries(e.entryPoints.types).map(([i,l])=>`${l} ${i}`).join(", ");n.push(`**Entry Points:** ${e.entryPoints.total} (${o||"none"})`)}if(e.dependencies&&n.push(`**Dependencies:** ${e.dependencies.external} external, ${e.dependencies.internal} internal`),e.health&&n.push(`**Health:** ${e.health.score}/100 (${e.health.passed}\u2713 ${e.health.warned}\u26A0 ${e.health.failed}\u2717)`),e.deadSymbols&&n.push(`**Dead Symbols:** ${e.deadSymbols.source} in source (actionable), ${e.deadSymbols.docs} in docs`),e.typecheck){const o=e.typecheck.passed?"\u2713 passed":`\u2717 ${e.typecheck.errorCount} errors`;n.push(`**Typecheck:** ${o}`)}if(e.lint){const o=e.lint.passed?"\u2713 passed":`\u2717 ${e.lint.errorCount} errors`;n.push(`**Lint:** ${o}`)}if(e.recommendations.length>0){n.push(`
1
+ import{check as e,summarizeCheckResult as t}from"./check.js";import{findDeadSymbols as n}from"./dead-symbols.js";import{health as r}from"./health.js";import{resolvePath as i}from"./path-resolver.js";import{errorResponse as a,okResponse as o}from"./response-envelope.js";import{DependencyAnalyzer as s,EntryPointAnalyzer as c,PatternAnalyzer as l,StructureAnalyzer as u}from"../../analyzers/dist/index.js";const d=[`structure`,`dependencies`,`patterns`,`health`,`dead_symbols`,`check`,`entry_points`];async function f(f,m,h={}){let g=Date.now(),_=i(h.path),v=h.checks??d,y=h.detail??`summary`,b=[],x={score:100,recommendations:b};try{let i=[];v.includes(`structure`)&&i.push((async()=>{let e=await new u().analyze(_,{format:`json`}),t=e.data;x.structure={files:t.stats?.totalFiles??e.meta.fileCount,packages:Array.isArray(t.packages)?t.packages.length:0,languages:t.stats?.languages??{}}})()),v.includes(`dependencies`)&&i.push((async()=>{let e=(await new s().analyze(_)).data,t=e.imports??[];x.dependencies={external:e.external?.length??t.filter(e=>e.isExternal).length,internal:e.internal?.length??t.filter(e=>!e.isExternal).length}})()),v.includes(`patterns`)&&i.push((async()=>{x.patterns=((await new l().analyze(_)).data.patterns??[]).map(e=>({name:e.pattern,confidence:e.confidence,count:e.locations.length}))})()),v.includes(`entry_points`)&&i.push((async()=>{let e=(await new c().analyze(_)).data,t=e.entryPoints??[],n={};for(let e of t)n[e.type]=(n[e.type]??0)+1;x.entryPoints={total:e.total??t.length,types:n}})()),v.includes(`health`)&&i.push((async()=>{let e=r(_);x.health={score:e.score,checks:e.checks.length,passed:e.checks.filter(e=>e.status===`pass`).length,warned:e.checks.filter(e=>e.status===`warn`).length,failed:e.checks.filter(e=>e.status===`fail`).length},e.score<70&&b.push({priority:`medium`,area:`health`,message:`Health score ${e.score}/100 ${x.health.failed} failed checks`})})()),v.includes(`dead_symbols`)&&i.push((async()=>{let e=await n(m,f,{rootPath:_});x.deadSymbols={source:e.totalDeadSource,docs:e.totalDeadDocs},e.totalDeadSource>0&&b.push({priority:e.totalDeadSource>10?`high`:`medium`,area:`dead-code`,message:`${e.totalDeadSource} unused exports in source files`})})()),v.includes(`check`)&&i.push((async()=>{let n=t(await e({cwd:_}));x.typecheck={passed:n.tsc.passed,errorCount:n.tsc.errorCount,topErrors:n.tsc.topErrors},x.lint={passed:n.biome.passed,errorCount:n.biome.errorCount,topErrors:n.biome.topErrors},n.tsc.passed||b.push({priority:`high`,area:`type-safety`,message:`Fix ${n.tsc.errorCount} tsc error(s)`}),n.biome.passed||b.push({priority:`medium`,area:`lint`,message:`Fix ${n.biome.errorCount} lint error(s)`})})()),await Promise.all(i);let a=0;x.typecheck&&!x.typecheck.passed&&(a+=15),x.lint&&!x.lint.passed&&(a+=5),x.health&&x.health.score<80&&(a+=10),x.deadSymbols&&x.deadSymbols.source>10&&(a+=5),x.entryPoints&&x.entryPoints.total===0&&(a+=5),x.score=Math.max(0,100-a);let d={high:0,medium:1,low:2};b.sort((e,t)=>d[e.priority]-d[t.priority]);let h=p(x,y),S=[];return x.typecheck&&!x.typecheck.passed&&S.push({tool:`check`,reason:`Get full error details`,suggested_args:{detail:`errors`}}),x.deadSymbols&&x.deadSymbols.source>0&&S.push({tool:`dead_symbols`,reason:`See which exports are unused`,suggested_args:{root_path:_}}),o(`audit`,h,x,{durationMs:Date.now()-g,detail:y},S)}catch{return a(`audit`,{code:`ANALYSIS_FAILED`,category:`runtime`,retryable:!1,message:`Audit failed. Check server logs for details.`},Date.now()-g)}}function p(e,t){let n=[];if(n.push(`## Audit Report Score: ${e.score}/100\n`),e.structure&&n.push(`**Structure:** ${e.structure.files} files, ${e.structure.packages} packages, ${Object.keys(e.structure.languages).length} languages`),e.entryPoints){let t=Object.entries(e.entryPoints.types).map(([e,t])=>`${t} ${e}`).join(`, `);n.push(`**Entry Points:** ${e.entryPoints.total} (${t||`none`})`)}if(e.dependencies&&n.push(`**Dependencies:** ${e.dependencies.external} external, ${e.dependencies.internal} internal`),e.health&&n.push(`**Health:** ${e.health.score}/100 (${e.health.passed}✓ ${e.health.warned}⚠ ${e.health.failed}✗)`),e.deadSymbols&&n.push(`**Dead Symbols:** ${e.deadSymbols.source} in source (actionable), ${e.deadSymbols.docs} in docs`),e.typecheck){let t=e.typecheck.passed?`✓ passed`:`✗ ${e.typecheck.errorCount} errors`;n.push(`**Typecheck:** ${t}`)}if(e.lint){let t=e.lint.passed?`✓ passed`:`✗ ${e.lint.errorCount} errors`;n.push(`**Lint:** ${t}`)}if(e.recommendations.length>0){n.push(`
3
2
  ### Recommendations
4
- `);for(const o of e.recommendations){const i=o.priority==="high"?"\u{1F534}":o.priority==="medium"?"\u{1F7E1}":"\u{1F7E2}";n.push(`${i} **${o.area}:** ${o.message}`)}}if(h==="full"&&e.patterns&&e.patterns.length>0){n.push(`
3
+ `);for(let t of e.recommendations){let e=t.priority===`high`?`🔴`:t.priority===`medium`?`🟡`:`🟢`;n.push(`${e} **${t.area}:** ${t.message}`)}}if(t===`full`&&e.patterns&&e.patterns.length>0){n.push(`
5
4
  ### Patterns Detected
6
- `),n.push("| Pattern | Confidence | Count |"),n.push("|---------|-----------|-------|");for(const o of e.patterns)n.push(`| ${o.name} | ${o.confidence} | ${o.count} |`)}return n.join(`
7
- `)}export{B as audit};
5
+ `),n.push(`| Pattern | Confidence | Count |`),n.push(`|---------|-----------|-------|`);for(let t of e.patterns)n.push(`| ${t.name} | ${t.confidence} | ${t.count} |`)}return n.join(`
6
+ `)}export{f as audit};
@@ -1,21 +1,23 @@
1
- export interface BatchOperation {
2
- /** Unique ID for this operation */
3
- id: string;
4
- /** Operation type */
5
- type: string;
6
- /** Arguments for the operation */
7
- args: Record<string, unknown>;
1
+ //#region packages/tools/src/batch.d.ts
2
+ interface BatchOperation {
3
+ /** Unique ID for this operation */
4
+ id: string;
5
+ /** Operation type */
6
+ type: string;
7
+ /** Arguments for the operation */
8
+ args: Record<string, unknown>;
8
9
  }
9
- export interface BatchResult {
10
- id: string;
11
- status: 'success' | 'error';
12
- result?: unknown;
13
- error?: string;
14
- durationMs: number;
10
+ interface BatchResult {
11
+ id: string;
12
+ status: 'success' | 'error';
13
+ result?: unknown;
14
+ error?: string;
15
+ durationMs: number;
15
16
  }
16
- export interface BatchOptions {
17
- /** Max concurrent operations (default: 4) */
18
- concurrency?: number;
17
+ interface BatchOptions {
18
+ /** Max concurrent operations (default: 4) */
19
+ concurrency?: number;
19
20
  }
20
- export declare function batch(operations: BatchOperation[], executor: (op: BatchOperation) => Promise<unknown>, options?: BatchOptions): Promise<BatchResult[]>;
21
- //# sourceMappingURL=batch.d.ts.map
21
+ declare function batch(operations: BatchOperation[], executor: (op: BatchOperation) => Promise<unknown>, options?: BatchOptions): Promise<BatchResult[]>;
22
+ //#endregion
23
+ export { BatchOperation, BatchOptions, BatchResult, batch };
@@ -1 +1 @@
1
- async function h(o,a,c={}){const i=Math.max(1,c.concurrency??4),e=[],s=[...o];async function u(r){const n=Date.now();try{const t=await a(r);return{id:r.id,status:"success",result:t,durationMs:Date.now()-n}}catch(t){return{id:r.id,status:"error",error:t instanceof Error?t.message:String(t),durationMs:Date.now()-n}}}for(;s.length>0;){const r=s.splice(0,i),n=await Promise.allSettled(r.map(t=>u(t)));for(const t of n){if(t.status==="fulfilled"){e.push(t.value);continue}e.push({id:"unknown",status:"error",error:t.reason instanceof Error?t.reason.message:"Promise rejected",durationMs:0})}}return e}export{h as batch};
1
+ async function e(e,t,n={}){let r=Math.max(1,n.concurrency??4),i=[],a=[...e];async function o(e){let n=Date.now();try{let r=await t(e);return{id:e.id,status:`success`,result:r,durationMs:Date.now()-n}}catch(t){return{id:e.id,status:`error`,error:t instanceof Error?t.message:String(t),durationMs:Date.now()-n}}}for(;a.length>0;){let e=a.splice(0,r),t=await Promise.allSettled(e.map(e=>o(e)));for(let e of t){if(e.status===`fulfilled`){i.push(e.value);continue}i.push({id:`unknown`,status:`error`,error:e.reason instanceof Error?e.reason.message:`Promise rejected`,durationMs:0})}}return i}export{e as batch};
@@ -1,34 +1,36 @@
1
+ //#region packages/tools/src/changelog.d.ts
1
2
  /**
2
3
  * kb_changelog — Generate a changelog from git history.
3
4
  */
4
- export type ChangelogFormat = 'grouped' | 'chronological' | 'per-scope';
5
- export interface ChangelogOptions {
6
- from: string;
7
- to?: string;
8
- format?: ChangelogFormat;
9
- includeBreaking?: boolean;
10
- cwd?: string;
5
+ type ChangelogFormat = 'grouped' | 'chronological' | 'per-scope';
6
+ interface ChangelogOptions {
7
+ from: string;
8
+ to?: string;
9
+ format?: ChangelogFormat;
10
+ includeBreaking?: boolean;
11
+ cwd?: string;
11
12
  }
12
- export interface ChangelogEntry {
13
- hash: string;
14
- type: string;
15
- scope: string;
16
- subject: string;
17
- body: string;
18
- author: string;
19
- date: string;
20
- breaking: boolean;
13
+ interface ChangelogEntry {
14
+ hash: string;
15
+ type: string;
16
+ scope: string;
17
+ subject: string;
18
+ body: string;
19
+ author: string;
20
+ date: string;
21
+ breaking: boolean;
21
22
  }
22
- export interface ChangelogResult {
23
- entries: ChangelogEntry[];
24
- markdown: string;
25
- stats: {
26
- total: number;
27
- breaking: number;
28
- types: Record<string, number>;
29
- };
23
+ interface ChangelogResult {
24
+ entries: ChangelogEntry[];
25
+ markdown: string;
26
+ stats: {
27
+ total: number;
28
+ breaking: number;
29
+ types: Record<string, number>;
30
+ };
30
31
  }
31
- export declare function changelog(options: ChangelogOptions): ChangelogResult;
32
+ declare function changelog(options: ChangelogOptions): ChangelogResult;
32
33
  /** Exported for testing */
33
- export declare function formatChangelog(entries: ChangelogEntry[], format: ChangelogFormat, includeBreaking: boolean): string;
34
- //# sourceMappingURL=changelog.d.ts.map
34
+ declare function formatChangelog(entries: ChangelogEntry[], format: ChangelogFormat, includeBreaking: boolean): string;
35
+ //#endregion
36
+ export { ChangelogEntry, ChangelogFormat, ChangelogOptions, ChangelogResult, changelog, formatChangelog };
@@ -1,2 +1,2 @@
1
- import{execSync as E}from"node:child_process";const $=/^[a-zA-Z0-9_./\-~^@{}]+$/;function w(i){const{from:a,to:g="HEAD",format:r="grouped",includeBreaking:e=!0,cwd:t=process.cwd()}=i;if(!$.test(a))throw new Error(`Invalid git ref: ${a}`);if(!$.test(g))throw new Error(`Invalid git ref: ${g}`);const n="",o="",s=`%H${n}%s${n}%b${n}%an${n}%ai${o}`;let h;try{h=E(`git log "${a}..${g}" --format="${s}"`,{cwd:t,encoding:"utf8",maxBuffer:10*1024*1024})}catch{throw new Error(`Git log failed. Ensure "${a}" and "${g}" are valid refs.`)}const p=h.split(o).map(c=>c.trim()).filter(Boolean).map(c=>{const[m="",d="",b="",y="",C=""]=c.split(n),f=d.match(/^(\w+)(?:\(([^)]*)\))?(!)?:\s*(.+)/);return{hash:m.slice(0,8),type:f?.[1]??"other",scope:f?.[2]??"",subject:f?.[4]??d,body:b.trim(),author:y.trim(),date:C.trim().split(" ")[0],breaking:!!(f?.[3]||/BREAKING[\s-]CHANGE/i.test(b))}}),l={};let u=0;for(const c of p)l[c.type]=(l[c.type]??0)+1,c.breaking&&u++;return{entries:p,markdown:k(p,r,e),stats:{total:p.length,breaking:u,types:l}}}function k(i,a,g){const r=["# Changelog",""];if(g){const e=i.filter(t=>t.breaking);if(e.length>0){r.push("## Breaking Changes","");for(const t of e)r.push(`- ${t.subject} (${t.hash})`);r.push("")}}if(a==="grouped"){const e={};for(const o of i)e[o.type]||(e[o.type]=[]),e[o.type].push(o);const t=["feat","fix","refactor","perf","test","docs","chore"],n={feat:"Features",fix:"Bug Fixes",refactor:"Refactoring",perf:"Performance",test:"Tests",docs:"Documentation",chore:"Chores",other:"Other"};for(const o of[...t,...Object.keys(e).filter(s=>!t.includes(s))])if(e[o]?.length){r.push(`## ${n[o]??o}`,"");for(const s of e[o]){const h=s.scope?`**${s.scope}:** `:"";r.push(`- ${h}${s.subject} (${s.hash})`)}r.push("")}}else if(a==="chronological")for(const e of i){const t=e.scope?`(${e.scope}) `:"";r.push(`- \`${e.date}\` ${e.type}: ${t}${e.subject} (${e.hash})`)}else{const e={};for(const t of i){const n=t.scope||"general";e[n]||(e[n]=[]),e[n].push(t)}for(const[t,n]of Object.entries(e)){r.push(`## ${t}`,"");for(const o of n)r.push(`- ${o.type}: ${o.subject} (${o.hash})`);r.push("")}}return r.join(`
2
- `)}export{w as changelog,k as formatChangelog};
1
+ import{execFileSync as e}from"node:child_process";const t=/^[a-zA-Z0-9_./\-~^@{}]+$/;function n(n){let{from:i,to:a=`HEAD`,format:o=`grouped`,includeBreaking:s=!0,cwd:c=process.cwd()}=n;if(!t.test(i))throw Error(`Invalid git ref: ${i}`);if(!t.test(a))throw Error(`Invalid git ref: ${a}`);let l;try{l=e(`git`,[`log`,`${i}..${a}`,`--format=%H%s%b%an%ai`],{cwd:c,encoding:`utf8`,maxBuffer:10*1024*1024,timeout:3e4})}catch{throw Error(`Git log failed. Ensure "${i}" and "${a}" are valid refs.`)}let u=l.split(``).map(e=>e.trim()).filter(Boolean).map(e=>{let[t=``,n=``,r=``,i=``,a=``]=e.split(``),o=n.match(/^(\w+)(?:\(([^)]*)\))?(!)?:\s*(.+)/);return{hash:t.slice(0,8),type:o?.[1]??`other`,scope:o?.[2]??``,subject:o?.[4]??n,body:r.trim(),author:i.trim(),date:a.trim().split(` `)[0],breaking:!!(o?.[3]||/BREAKING[\s-]CHANGE/i.test(r))}}),d={},f=0;for(let e of u)d[e.type]=(d[e.type]??0)+1,e.breaking&&f++;return{entries:u,markdown:r(u,o,s),stats:{total:u.length,breaking:f,types:d}}}function r(e,t,n){let r=[`# Changelog`,``];if(n){let t=e.filter(e=>e.breaking);if(t.length>0){r.push(`## Breaking Changes`,``);for(let e of t)r.push(`- ${e.subject} (${e.hash})`);r.push(``)}}if(t===`grouped`){let t={};for(let n of e)t[n.type]||(t[n.type]=[]),t[n.type].push(n);let n=[`feat`,`fix`,`refactor`,`perf`,`test`,`docs`,`chore`],i={feat:`Features`,fix:`Bug Fixes`,refactor:`Refactoring`,perf:`Performance`,test:`Tests`,docs:`Documentation`,chore:`Chores`,other:`Other`};for(let e of[...n,...Object.keys(t).filter(e=>!n.includes(e))])if(t[e]?.length){r.push(`## ${i[e]??e}`,``);for(let n of t[e]){let e=n.scope?`**${n.scope}:** `:``;r.push(`- ${e}${n.subject} (${n.hash})`)}r.push(``)}}else if(t===`chronological`)for(let t of e){let e=t.scope?`(${t.scope}) `:``;r.push(`- \`${t.date}\` ${t.type}: ${e}${t.subject} (${t.hash})`)}else{let t={};for(let n of e){let e=n.scope||`general`;t[e]||(t[e]=[]),t[e].push(n)}for(let[e,n]of Object.entries(t)){r.push(`## ${e}`,``);for(let e of n)r.push(`- ${e.type}: ${e.subject} (${e.hash})`);r.push(``)}}return r.join(`
2
+ `)}export{n as changelog,r as formatChangelog};
@@ -1,45 +1,48 @@
1
- import { type ParsedError } from './parse-output.js';
2
- export interface CheckOptions {
3
- /** Specific files to check (if empty, checks all) */
4
- files?: string[];
5
- /** Working directory */
6
- cwd?: string;
7
- /** Skip typecheck */
8
- skipTypes?: boolean;
9
- /** Skip lint */
10
- skipLint?: boolean;
11
- /** Detail level: summary (default, minimal), errors (parsed errors), full (includes raw) */
12
- detail?: 'summary' | 'errors' | 'full';
1
+ import { ParsedError } from "./parse-output.js";
2
+
3
+ //#region packages/tools/src/check.d.ts
4
+ interface CheckOptions {
5
+ /** Specific files to check (if empty, checks all) */
6
+ files?: string[];
7
+ /** Working directory */
8
+ cwd?: string;
9
+ /** Skip typecheck */
10
+ skipTypes?: boolean;
11
+ /** Skip lint */
12
+ skipLint?: boolean;
13
+ /** Detail level: summary (default, minimal), errors (parsed errors), full (includes raw) */
14
+ detail?: 'summary' | 'errors' | 'full';
13
15
  }
14
- export interface CheckSummaryResult {
16
+ interface CheckSummaryResult {
17
+ passed: boolean;
18
+ tsc: {
15
19
  passed: boolean;
16
- tsc: {
17
- passed: boolean;
18
- errorCount: number;
19
- warningCount: number;
20
- topErrors: string[];
21
- };
22
- biome: {
23
- passed: boolean;
24
- errorCount: number;
25
- warningCount: number;
26
- topErrors: string[];
27
- };
20
+ errorCount: number;
21
+ warningCount: number;
22
+ topErrors: string[];
23
+ };
24
+ biome: {
25
+ passed: boolean;
26
+ errorCount: number;
27
+ warningCount: number;
28
+ topErrors: string[];
29
+ };
28
30
  }
29
- export interface CheckResult {
30
- tsc: {
31
- errors: ParsedError[];
32
- passed: boolean;
33
- raw?: string;
34
- };
35
- biome: {
36
- errors: ParsedError[];
37
- passed: boolean;
38
- raw?: string;
39
- };
31
+ interface CheckResult {
32
+ tsc: {
33
+ errors: ParsedError[];
34
+ passed: boolean;
35
+ raw?: string;
36
+ };
37
+ biome: {
38
+ errors: ParsedError[];
40
39
  passed: boolean;
40
+ raw?: string;
41
+ };
42
+ passed: boolean;
41
43
  }
42
- export declare function check(options?: CheckOptions): Promise<CheckResult>;
44
+ declare function check(options?: CheckOptions): Promise<CheckResult>;
43
45
  /** Produce a minimal summary for LLM consumption (~300 tokens) */
44
- export declare function summarizeCheckResult(result: CheckResult): CheckSummaryResult;
45
- //# sourceMappingURL=check.d.ts.map
46
+ declare function summarizeCheckResult(result: CheckResult): CheckSummaryResult;
47
+ //#endregion
48
+ export { CheckOptions, CheckResult, CheckSummaryResult, check, summarizeCheckResult };
@@ -1,2 +1,2 @@
1
- import{execFile as d}from"node:child_process";import{readFile as m}from"node:fs/promises";import{join as f}from"node:path";import{promisify as g}from"node:util";import{parseBiome as h,parseTsc as b}from"./parse-output.js";const c=g(d);function p(r){const o=r,t=o.stdout?.toString()??"",s=o.stderr?.toString()??"";return[t,s].filter(Boolean).join(`
2
- `).trim()||o.message||"Command failed"}async function R(r={}){const o=r.cwd??process.cwd(),t={errors:[],passed:!0,raw:""},s={errors:[],passed:!0,raw:""};if(!r.skipTypes)try{const n=f(o,"package.json");let l=!1;try{l=!!JSON.parse(await m(n,"utf-8")).scripts?.typecheck}catch{}if(l&&!r.files?.length)await c("npx",["turbo","run","typecheck"],{cwd:o,shell:!0});else{const i=["--noEmit"];r.files?.length&&i.push(...r.files),await c("npx",["tsc",...i],{cwd:o,shell:!0})}}catch(n){t.raw=p(n),t.errors=b(t.raw),t.passed=t.errors.length===0}if(!r.skipLint)try{const n=["check"];r.files?.length&&n.push(...r.files),await c("npx",["biome",...n],{cwd:o,shell:!0})}catch(n){s.raw=p(n),s.errors=h(s.raw),s.passed=s.errors.length===0}const a=r.detail??"full",e={tsc:t,biome:s,passed:t.passed&&s.passed};return a==="full"?e:a==="errors"?{tsc:{errors:t.errors,passed:t.passed},biome:{errors:s.errors,passed:s.passed},passed:e.passed}:e}const u=3;function x(r){const o=r.tsc.errors.filter(e=>e.severity==="error"),t=r.tsc.errors.filter(e=>e.severity==="warning"),s=r.biome.errors.filter(e=>e.severity==="error"),a=r.biome.errors.filter(e=>e.severity==="warning");return{passed:r.passed,tsc:{passed:r.tsc.passed,errorCount:o.length,warningCount:t.length,topErrors:o.slice(0,u).map(e=>`${e.file}:${e.line} \u2014 ${e.message}`)},biome:{passed:r.biome.passed,errorCount:s.length,warningCount:a.length,topErrors:s.slice(0,u).map(e=>`${e.file}:${e.line} \u2014 ${e.message}`)}}}export{R as check,x as summarizeCheckResult};
1
+ import{parseBiome as e,parseTsc as t}from"./parse-output.js";import{exec as n}from"node:child_process";import{readFile as r}from"node:fs/promises";import{join as i}from"node:path";import{promisify as a}from"node:util";const o=a(n);let s=0;function c(e){let t=e;return[t.stdout?.toString()??``,t.stderr?.toString()??``].filter(Boolean).join(`
2
+ `).trim()||t.message||`Command failed`}async function l(e={}){if(s>=2)throw Error(`Too many concurrent check runs (max 2). Try again later.`);s++;try{return await u(e)}finally{s--}}async function u(n){let a=n.cwd??process.cwd(),s={errors:[],passed:!0,raw:``},l={errors:[],passed:!0,raw:``};if(!n.skipTypes)try{let e=i(a,`package.json`),t=!1;try{t=!!JSON.parse(await r(e,`utf-8`)).scripts?.typecheck}catch{}if(t&&!n.files?.length)await o(`npx turbo run typecheck`,{cwd:a,timeout:12e4});else{let e=[`--noEmit`];n.files?.length&&e.push(...n.files),await o(`npx tsc ${e.join(` `)}`,{cwd:a,timeout:12e4})}}catch(e){s.raw=c(e),s.errors=t(s.raw),s.passed=s.errors.length===0}if(!n.skipLint)try{let e=[`check`];n.files?.length&&e.push(...n.files),await o(`npx biome ${e.join(` `)}`,{cwd:a,timeout:12e4})}catch(t){l.raw=c(t),l.errors=e(l.raw),l.passed=l.errors.length===0}let u=n.detail??`full`,d={tsc:s,biome:l,passed:s.passed&&l.passed};return u===`full`?d:u===`errors`?{tsc:{errors:s.errors,passed:s.passed},biome:{errors:l.errors,passed:l.passed},passed:d.passed}:d}function d(e){let t=e.tsc.errors.filter(e=>e.severity===`error`),n=e.tsc.errors.filter(e=>e.severity===`warning`),r=e.biome.errors.filter(e=>e.severity===`error`),i=e.biome.errors.filter(e=>e.severity===`warning`);return{passed:e.passed,tsc:{passed:e.tsc.passed,errorCount:t.length,warningCount:n.length,topErrors:t.slice(0,3).map(e=>`${e.file}:${e.line} ${e.message}`)},biome:{passed:e.biome.passed,errorCount:r.length,warningCount:i.length,topErrors:r.slice(0,3).map(e=>`${e.file}:${e.line} ${e.message}`)}}}export{l as check,d as summarizeCheckResult};
@@ -1,17 +1,19 @@
1
- export interface Checkpoint {
2
- id: string;
3
- label: string;
4
- createdAt: string;
5
- data: Record<string, unknown>;
6
- files?: string[];
7
- notes?: string;
1
+ //#region packages/tools/src/checkpoint.d.ts
2
+ interface Checkpoint {
3
+ id: string;
4
+ label: string;
5
+ createdAt: string;
6
+ data: Record<string, unknown>;
7
+ files?: string[];
8
+ notes?: string;
8
9
  }
9
- export declare function checkpointSave(label: string, data: Record<string, unknown>, options?: {
10
- files?: string[];
11
- notes?: string;
12
- cwd?: string;
10
+ declare function checkpointSave(label: string, data: Record<string, unknown>, options?: {
11
+ files?: string[];
12
+ notes?: string;
13
+ cwd?: string;
13
14
  }): Checkpoint;
14
- export declare function checkpointLoad(id: string, cwd?: string): Checkpoint | undefined;
15
- export declare function checkpointList(cwd?: string): Checkpoint[];
16
- export declare function checkpointLatest(cwd?: string): Checkpoint | undefined;
17
- //# sourceMappingURL=checkpoint.d.ts.map
15
+ declare function checkpointLoad(id: string, cwd?: string): Checkpoint | undefined;
16
+ declare function checkpointList(cwd?: string): Checkpoint[];
17
+ declare function checkpointLatest(cwd?: string): Checkpoint | undefined;
18
+ //#endregion
19
+ export { Checkpoint, checkpointLatest, checkpointList, checkpointLoad, checkpointSave };
@@ -1,2 +1 @@
1
- import{existsSync as s,mkdirSync as d,readdirSync as f,readFileSync as a,writeFileSync as u}from"node:fs";import{resolve as i}from"node:path";const g=".kb-state/checkpoints";function o(n){const e=n??process.cwd(),t=i(e,g);return s(t)||d(t,{recursive:!0}),t}function C(n,e,t){const r=n.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"")||"checkpoint",c={id:`${Date.now()}-${r}`,label:n,createdAt:new Date().toISOString(),data:e,files:t?.files,notes:t?.notes},p=i(o(t?.cwd),`${c.id}.json`);return u(p,`${JSON.stringify(c,null,2)}
2
- `,"utf-8"),c}function S(n,e){const t=i(o(e),`${n}.json`);if(s(t))return JSON.parse(a(t,"utf-8"))}function k(n){const e=o(n);return f(e).filter(t=>t.endsWith(".json")).map(t=>JSON.parse(a(i(e,t),"utf-8"))).sort((t,r)=>r.createdAt.localeCompare(t.createdAt))}function w(n){return k(n)[0]}export{w as checkpointLatest,k as checkpointList,S as checkpointLoad,C as checkpointSave};
1
+ import{resolve as e}from"node:path";import{existsSync as t,mkdirSync as n,readFileSync as r,readdirSync as i,writeFileSync as a}from"node:fs";import{KB_PATHS as o}from"../../core/dist/index.js";const s=`${o.state}/checkpoints`;function c(r){let i=e(r??process.cwd(),s);return t(i)||n(i,{recursive:!0}),i}function l(t,n,r){let i=t.toLowerCase().replace(/[^a-z0-9]+/g,`-`).replace(/^-|-$/g,``)||`checkpoint`,o={id:`${Date.now()}-${i}`,label:t,createdAt:new Date().toISOString(),data:n,files:r?.files,notes:r?.notes};return a(e(c(r?.cwd),`${o.id}.json`),`${JSON.stringify(o,null,2)}\n`,`utf-8`),o}function u(n,i){let a=e(c(i),`${n}.json`);if(t(a))try{return JSON.parse(r(a,`utf-8`))}catch{return}}function d(t){let n=c(t);return i(n).filter(e=>e.endsWith(`.json`)).flatMap(t=>{try{return[JSON.parse(r(e(n,t),`utf-8`))]}catch{return[]}}).sort((e,t)=>t.createdAt.localeCompare(e.createdAt))}function f(e){return d(e)[0]}export{f as checkpointLatest,d as checkpointList,u as checkpointLoad,l as checkpointSave};