@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,4 @@
1
+ //#region packages/analyzers/src/ts-call-graph.d.ts
1
2
  /**
2
3
  * TypeScript Compiler API-based call graph extractor.
3
4
  *
@@ -5,23 +6,24 @@
5
6
  * the AST to find function call sites and resolve them to their declaration files.
6
7
  * Produces module-level call edges: which modules call functions in which other modules.
7
8
  */
8
- export interface ModuleCallEdge {
9
- /** Caller module (relative path) */
10
- from: string;
11
- /** Callee module (relative path) */
12
- to: string;
13
- /** Function/symbol names called across this edge */
14
- symbols: string[];
9
+ interface ModuleCallEdge {
10
+ /** Caller module (relative path) */
11
+ from: string;
12
+ /** Callee module (relative path) */
13
+ to: string;
14
+ /** Function/symbol names called across this edge */
15
+ symbols: string[];
15
16
  }
16
- export interface CallGraphResult {
17
- edges: ModuleCallEdge[];
18
- fileCount: number;
19
- edgeCount: number;
20
- durationMs: number;
17
+ interface CallGraphResult {
18
+ edges: ModuleCallEdge[];
19
+ fileCount: number;
20
+ edgeCount: number;
21
+ durationMs: number;
21
22
  }
22
23
  /**
23
24
  * Extract module-level call graph from a TypeScript/JavaScript project.
24
25
  * Returns null if TypeScript compiler is unavailable or no TS files found.
25
26
  */
26
- export declare function extractTsCallGraph(rootPath: string): Promise<CallGraphResult | null>;
27
- //# sourceMappingURL=ts-call-graph.d.ts.map
27
+ declare function extractTsCallGraph(rootPath: string): Promise<CallGraphResult | null>;
28
+ //#endregion
29
+ export { CallGraphResult, ModuleCallEdge, extractTsCallGraph };
@@ -1 +1 @@
1
- import{existsSync as m,readdirSync as y,readFileSync as b}from"node:fs";import{extname as F,join as g,relative as d}from"node:path";const S=new Set(["node_modules",".git","dist","build","coverage",".turbo",".cache","cdk.out"]);async function _(e){const t=Date.now();if(!T(e))return null;let s;try{s=await import("typescript")}catch{return null}const i=w(e);if(i.length===0)return null;const r=i.slice(0,800),c=x(s,e),n=s.createProgram(r,{...c,noEmit:!0,skipLibCheck:!0,allowJs:!0,target:s.ScriptTarget.ESNext,module:s.ModuleKind.ESNext,moduleResolution:s.ModuleResolutionKind.Bundler}),o=n.getTypeChecker(),f=new Map;for(const l of n.getSourceFiles()){const a=l.fileName;if(l.isDeclarationFile||a.includes("node_modules"))continue;const p=d(e,a).replace(/\\/g,"/");p.startsWith("..")||h(s,l,l,o,e,p,f)}const u=[];for(const[l,a]of f){const[p,C]=l.split("|");u.push({from:p,to:C,symbols:[...a].sort().slice(0,10)})}return u.sort((l,a)=>a.symbols.length-l.symbols.length),{edges:u,fileCount:r.length,edgeCount:u.length,durationMs:Date.now()-t}}function T(e){if(m(g(e,"tsconfig.json"))||m(g(e,"tsconfig.build.json")))return!0;try{for(const t of y(e,{withFileTypes:!0}))if(t.isDirectory()&&!S.has(t.name)&&!t.name.startsWith(".")&&m(g(e,t.name,"tsconfig.json")))return!0}catch{}return!1}function x(e,t){const s=g(t,"tsconfig.json");if(!m(s))return{};try{const i=e.readConfigFile(s,c=>b(c,"utf-8"));return i.error?{}:e.parseJsonConfigFileContent(i.config,e.sys,t).options}catch{return{}}}function w(e){const t=[],s=new Set([".ts",".tsx"]),i=(r,c)=>{if(!(c>10))try{for(const n of y(r,{withFileTypes:!0})){if(S.has(n.name)||n.name.startsWith("."))continue;const o=g(r,n.name);if(n.isDirectory())i(o,c+1);else if(s.has(F(n.name))){if(n.name.endsWith(".d.ts")||/\.(test|spec)\.[jt]sx?$/.test(n.name)||d(e,r).replace(/\\/g,"/").split("/").some(u=>u==="test"||u==="tests"||u==="__tests__"||u==="spec"))continue;t.push(o)}}}catch{}};return i(e,0),t}function h(e,t,s,i,r,c,n){if(e.isCallExpression(t)||e.isNewExpression(t)){const o=t.expression;D(e,o,i,r,c,n)}e.forEachChild(t,o=>{h(e,o,s,i,r,c,n)})}function E(e){const t=e.match(/^(.+?)\/dist\/(.+)$/);if(!t)return e;const[,s,i]=t,r=i.replace(/\.d\.(m?ts|cts)$/,".ts");return`${s}/src/${r}`}function D(e,t,s,i,r,c){try{let n,o;if(e.isIdentifier(t)?(n=s.getSymbolAtLocation(t),o=t.text):e.isPropertyAccessExpression(t)&&(n=s.getSymbolAtLocation(t.name),o=t.name.text),!n||!o)return;n.flags&e.SymbolFlags.Alias&&(n=s.getAliasedSymbol(n));const f=n.getDeclarations();if(!f||f.length===0)return;const u=f[0].getSourceFile().fileName;if(u.includes("node_modules"))return;let l=d(i,u).replace(/\\/g,"/");if(l=E(l),l===r||l.startsWith(".."))return;const a=`${r}|${l}`,p=c.get(a);p?p.add(o):c.set(a,new Set([o]))}catch{}}export{_ as extractTsCallGraph};
1
+ import{extname as e,join as t,relative as n}from"node:path";import{existsSync as r,readFileSync as i,readdirSync as a}from"node:fs";const o=new Set([`node_modules`,`.git`,`dist`,`build`,`coverage`,`.turbo`,`.cache`,`cdk.out`]);async function s(e){let t=Date.now();if(!c(e))return null;let r;try{r=await import(`typescript`)}catch{return null}let i=u(e);if(i.length===0)return null;let a=i.slice(0,800),o=l(r,e),s=r.createProgram(a,{...o,noEmit:!0,skipLibCheck:!0,allowJs:!0,target:r.ScriptTarget.ESNext,module:r.ModuleKind.ESNext,moduleResolution:r.ModuleResolutionKind.Bundler}),f=s.getTypeChecker(),p=new Map;for(let t of s.getSourceFiles()){let i=t.fileName;if(t.isDeclarationFile||i.includes(`node_modules`))continue;let a=n(e,i).replace(/\\/g,`/`);a.startsWith(`..`)||d(r,t,t,f,e,a,p)}let m=[];for(let[e,t]of p){let[n,r]=e.split(`|`);m.push({from:n,to:r,symbols:[...t].sort().slice(0,10)})}return m.sort((e,t)=>t.symbols.length-e.symbols.length),{edges:m,fileCount:a.length,edgeCount:m.length,durationMs:Date.now()-t}}function c(e){if(r(t(e,`tsconfig.json`))||r(t(e,`tsconfig.build.json`)))return!0;try{for(let n of a(e,{withFileTypes:!0}))if(n.isDirectory()&&!o.has(n.name)&&!n.name.startsWith(`.`)&&r(t(e,n.name,`tsconfig.json`)))return!0}catch{}return!1}function l(e,n){let a=t(n,`tsconfig.json`);if(!r(a))return{};try{let t=e.readConfigFile(a,e=>i(e,`utf-8`));return t.error?{}:e.parseJsonConfigFileContent(t.config,e.sys,n).options}catch{return{}}}function u(r){let i=[],s=new Set([`.ts`,`.tsx`]),c=(l,u)=>{if(!(u>10))try{for(let d of a(l,{withFileTypes:!0})){if(o.has(d.name)||d.name.startsWith(`.`))continue;let a=t(l,d.name);if(d.isDirectory())c(a,u+1);else if(s.has(e(d.name))){if(d.name.endsWith(`.d.ts`)||/\.(test|spec)\.[jt]sx?$/.test(d.name)||n(r,l).replace(/\\/g,`/`).split(`/`).some(e=>e===`test`||e===`tests`||e===`__tests__`||e===`spec`))continue;i.push(a)}}}catch{}};return c(r,0),i}function d(e,t,n,r,i,a,o){if(e.isCallExpression(t)||e.isNewExpression(t)){let n=t.expression;p(e,n,r,i,a,o)}e.forEachChild(t,t=>{d(e,t,n,r,i,a,o)})}function f(e){let t=e.match(/^(.+?)\/dist\/(.+)$/);if(!t)return e;let[,n,r]=t;return`${n}/src/${r.replace(/\.d\.(m?ts|cts)$/,`.ts`)}`}function p(e,t,r,i,a,o){try{let s,c;if(e.isIdentifier(t)?(s=r.getSymbolAtLocation(t),c=t.text):e.isPropertyAccessExpression(t)&&(s=r.getSymbolAtLocation(t.name),c=t.name.text),!s||!c)return;s.flags&e.SymbolFlags.Alias&&(s=r.getAliasedSymbol(s));let l=s.getDeclarations();if(!l||l.length===0)return;let u=l[0].getSourceFile().fileName;if(u.includes(`node_modules`))return;let d=n(i,u).replace(/\\/g,`/`);if(d=f(d),d===a||d.startsWith(`..`))return;let p=`${a}|${d}`,m=o.get(p);m?m.add(c):o.set(p,new Set([c]))}catch{}}export{s as extractTsCallGraph};
@@ -1,98 +1,100 @@
1
+ //#region packages/analyzers/src/types.d.ts
1
2
  /**
2
3
  * Analyzer interfaces and result types.
3
4
  */
4
- export interface AnalysisResult {
5
- /** Formatted output (Markdown, JSON, or Mermaid) */
6
- output: string;
7
- /** Structured data for programmatic access */
8
- data: Record<string, unknown>;
9
- /** Analysis metadata */
10
- meta: {
11
- analyzedAt: string;
12
- scope: string;
13
- fileCount: number;
14
- durationMs: number;
15
- };
5
+ interface AnalysisResult {
6
+ /** Formatted output (Markdown, JSON, or Mermaid) */
7
+ output: string;
8
+ /** Structured data for programmatic access */
9
+ data: Record<string, unknown>;
10
+ /** Analysis metadata */
11
+ meta: {
12
+ analyzedAt: string;
13
+ scope: string;
14
+ fileCount: number;
15
+ durationMs: number;
16
+ };
16
17
  }
17
- export interface AnalyzerOptions {
18
- format?: 'json' | 'markdown' | 'mermaid';
19
- [key: string]: unknown;
18
+ interface AnalyzerOptions {
19
+ format?: 'json' | 'markdown' | 'mermaid';
20
+ [key: string]: unknown;
20
21
  }
21
- export interface IAnalyzer<TOpts extends AnalyzerOptions = AnalyzerOptions> {
22
- readonly name: string;
23
- analyze(rootPath: string, options?: TOpts): Promise<AnalysisResult>;
22
+ interface IAnalyzer<TOpts extends AnalyzerOptions = AnalyzerOptions> {
23
+ readonly name: string;
24
+ analyze(rootPath: string, options?: TOpts): Promise<AnalysisResult>;
24
25
  }
25
- export interface StructureAnalyzerOptions extends AnalyzerOptions {
26
- format?: 'json' | 'markdown';
27
- maxDepth?: number;
28
- /** When true, only include source code and config files (no docs, images, fonts, etc.) */
29
- sourceOnly?: boolean;
26
+ interface StructureAnalyzerOptions extends AnalyzerOptions {
27
+ format?: 'json' | 'markdown';
28
+ maxDepth?: number;
29
+ /** When true, only include source code and config files (no docs, images, fonts, etc.) */
30
+ sourceOnly?: boolean;
30
31
  }
31
- export interface DependencyAnalyzerOptions extends AnalyzerOptions {
32
- format?: 'json' | 'markdown' | 'mermaid';
33
- maxNodes?: number;
32
+ interface DependencyAnalyzerOptions extends AnalyzerOptions {
33
+ format?: 'json' | 'markdown' | 'mermaid';
34
+ maxNodes?: number;
34
35
  }
35
- export interface SymbolAnalyzerOptions extends AnalyzerOptions {
36
- filter?: string;
37
- format?: 'json' | 'markdown';
36
+ interface SymbolAnalyzerOptions extends AnalyzerOptions {
37
+ filter?: string;
38
+ format?: 'json' | 'markdown';
38
39
  }
39
- export interface DiagramOptions extends AnalyzerOptions {
40
- diagramType?: 'architecture' | 'dependencies';
41
- scope?: string;
40
+ interface DiagramOptions extends AnalyzerOptions {
41
+ diagramType?: 'architecture' | 'dependencies';
42
+ scope?: string;
42
43
  }
43
- export interface TreeNode {
44
- name: string;
45
- type: 'file' | 'directory';
46
- purpose?: string;
47
- language?: string;
48
- size?: number;
49
- children?: TreeNode[];
44
+ interface TreeNode {
45
+ name: string;
46
+ type: 'file' | 'directory';
47
+ purpose?: string;
48
+ language?: string;
49
+ size?: number;
50
+ children?: TreeNode[];
50
51
  }
51
- export interface ProjectStats {
52
- totalFiles: number;
53
- totalSize: number;
54
- languages: Record<string, number>;
52
+ interface ProjectStats {
53
+ totalFiles: number;
54
+ totalSize: number;
55
+ languages: Record<string, number>;
55
56
  }
56
- export interface ImportInfo {
57
- source: string;
58
- specifiers: string[];
59
- filePath: string;
60
- isExternal: boolean;
61
- /** Confidence level based on import resolution method */
62
- confidence: 'high' | 'medium' | 'low';
57
+ interface ImportInfo {
58
+ source: string;
59
+ specifiers: string[];
60
+ filePath: string;
61
+ isExternal: boolean;
62
+ /** Confidence level based on import resolution method */
63
+ confidence: 'high' | 'medium' | 'low';
63
64
  }
64
- export interface SymbolInfo {
65
- name: string;
66
- kind: 'function' | 'class' | 'interface' | 'type' | 'const' | 'enum' | 'variable' | 'method';
67
- exported: boolean;
68
- filePath: string;
69
- line: number;
70
- /** Full signature for functions/methods (parameter list + return type) */
71
- signature?: string;
65
+ interface SymbolInfo {
66
+ name: string;
67
+ kind: 'function' | 'class' | 'interface' | 'type' | 'const' | 'enum' | 'variable' | 'method';
68
+ exported: boolean;
69
+ filePath: string;
70
+ line: number;
71
+ /** Full signature for functions/methods (parameter list + return type) */
72
+ signature?: string;
72
73
  }
73
- export interface PatternMatch {
74
- pattern: string;
75
- description: string;
76
- locations: string[];
77
- confidence: 'high' | 'medium' | 'low';
74
+ interface PatternMatch {
75
+ pattern: string;
76
+ description: string;
77
+ locations: string[];
78
+ confidence: 'high' | 'medium' | 'low';
78
79
  }
79
- export interface EntryPoint {
80
- name: string;
81
- type: 'lambda-handler' | 'main' | 'bin' | 'server' | 'cli' | 'test' | 'cdk-construct';
82
- filePath: string;
83
- trigger?: string;
80
+ interface EntryPoint {
81
+ name: string;
82
+ type: 'lambda-handler' | 'main' | 'bin' | 'server' | 'cli' | 'test' | 'cdk-construct';
83
+ filePath: string;
84
+ trigger?: string;
84
85
  }
85
- export interface ExtractionBaselines {
86
- structure?: AnalysisResult;
87
- dependencies?: AnalysisResult;
88
- symbols?: AnalysisResult;
89
- patterns?: AnalysisResult;
90
- entryPoints?: AnalysisResult;
91
- diagrams?: AnalysisResult[];
86
+ interface ExtractionBaselines {
87
+ structure?: AnalysisResult;
88
+ dependencies?: AnalysisResult;
89
+ symbols?: AnalysisResult;
90
+ patterns?: AnalysisResult;
91
+ entryPoints?: AnalysisResult;
92
+ diagrams?: AnalysisResult[];
92
93
  }
93
- export interface ExistingKnowledge {
94
- categories: string[];
95
- lastProduced: Record<string, string>;
96
- documentCount: number;
94
+ interface ExistingKnowledge {
95
+ categories: string[];
96
+ lastProduced: Record<string, string>;
97
+ documentCount: number;
97
98
  }
98
- //# sourceMappingURL=types.d.ts.map
99
+ //#endregion
100
+ export { AnalysisResult, AnalyzerOptions, DependencyAnalyzerOptions, DiagramOptions, EntryPoint, ExistingKnowledge, ExtractionBaselines, IAnalyzer, ImportInfo, PatternMatch, ProjectStats, StructureAnalyzerOptions, SymbolAnalyzerOptions, SymbolInfo, TreeNode };
@@ -0,0 +1 @@
1
+ export{};
@@ -1,22 +1,25 @@
1
+ //#region packages/chunker/src/call-graph-extractor.d.ts
1
2
  /**
2
3
  * Call-graph extractor using tree-sitter AST.
3
4
  *
4
5
  * Extracts function-level call sites from parsed code, producing
5
6
  * caller→callee edges for blast-radius and dependency analysis.
6
7
  */
7
- export interface CallEdge {
8
- /** File containing the call */
9
- callerFile: string;
10
- /** Function/method making the call (or '<module>' for top-level) */
11
- callerName: string;
12
- /** Name of the function/method being called */
13
- calleeName: string;
14
- /** 1-based line number of the call site */
15
- line: number;
8
+ interface CallEdge {
9
+ /** File containing the call */
10
+ callerFile: string;
11
+ /** Function/method making the call (or '<module>' for top-level) */
12
+ callerName: string;
13
+ /** Name of the function/method being called */
14
+ calleeName: string;
15
+ /** 1-based line number of the call site */
16
+ line: number;
16
17
  }
17
18
  /**
18
19
  * Extract call edges from a source file using tree-sitter AST.
19
- * Returns null if tree-sitter is unavailable or doesn't support the language.
20
+ * Prefers WASM runtime; falls back to native tree-sitter.
21
+ * Returns null if neither runtime is available or doesn't support the language.
20
22
  */
21
- export declare function extractCallEdges(content: string, filePath: string): CallEdge[] | null;
22
- //# sourceMappingURL=call-graph-extractor.d.ts.map
23
+ declare function extractCallEdges(content: string, filePath: string): CallEdge[] | null;
24
+ //#endregion
25
+ export { CallEdge, extractCallEdges };
@@ -1 +1 @@
1
- import{extname as a}from"node:path";import{TreeSitterRuntime as u}from"./treesitter-chunker.js";const s=new Set(["function_declaration","method_definition","arrow_function","function_definition","function_declaration","method_declaration","function_item","method_declaration","constructor_declaration"]),f=new Set(["call_expression","new_expression","call"]);function g(t,e){const n=u.get();if(!n)return null;const l=a(e).toLowerCase();if(!n.hasLanguage(l))return null;const i=n.parse(t,l);if(!i)return null;const r=[],o=i.rootNode;return c(o,e,"<module>",r),r}function c(t,e,n,l){if(!t)return;let i=n;if(s.has(t.type)&&(i=p(t)??n),f.has(t.type)){const r=d(t);r&&l.push({callerFile:e,callerName:i,calleeName:r,line:(t.startPosition?.row??0)+1})}for(let r=0;r<(t.childCount??0);r++){const o=t.child(r);o&&c(o,e,i,l)}}function p(t){for(let e=0;e<(t.childCount??0);e++){const n=t.child(e);if(n&&(n.type==="identifier"||n.type==="property_identifier"||n.type==="name"))return n.text??null}return null}function d(t){const e=t.childForFieldName?.("function")??t.child(0);return e?e.type==="identifier"||e.type==="name"?e.text??null:e.type==="member_expression"||e.type==="attribute"?(e.childForFieldName?.("property")??e.childForFieldName?.("attribute"))?.text??null:t.type==="new_expression"?t.child(1)?.text??null:null:null}export{g as extractCallEdges};
1
+ import{WasmRuntime as e}from"./wasm/runtime.js";import{extname as t}from"node:path";const n=new Set([`function_declaration`,`method_definition`,`arrow_function`,`function_definition`,`function_declaration`,`method_declaration`,`function_item`,`method_declaration`,`constructor_declaration`]),r=new Set([`call_expression`,`new_expression`,`call`]);function i(n,r){let i=t(r).toLowerCase(),o=e.get();if(o?.isLanguageLoaded(i)){let e=o.getParser(),t=o.getLanguage(i);if(e&&t){e.setLanguage(t);let i=e.parse(n);if(i){let e=[];return a(i.rootNode,r,`<module>`,e),e}}}return null}function a(e,t,i,c){if(!e)return;let l=i;if(n.has(e.type)&&(l=o(e)??i),r.has(e.type)){let n=s(e);n&&c.push({callerFile:t,callerName:l,calleeName:n,line:(e.startPosition?.row??0)+1})}for(let n=0;n<(e.childCount??0);n++){let r=e.child(n);r&&a(r,t,l,c)}}function o(e){for(let t=0;t<(e.childCount??0);t++){let n=e.child(t);if(n&&(n.type===`identifier`||n.type===`property_identifier`||n.type===`name`))return n.text??null}return null}function s(e){let t=e.childForFieldName?.(`function`)??e.child(0);return t?t.type===`identifier`||t.type===`name`?t.text??null:t.type===`member_expression`||t.type===`attribute`?(t.childForFieldName?.(`property`)??t.childForFieldName?.(`attribute`))?.text??null:e.type===`new_expression`?e.child(1)?.text??null:null:null}export{i as extractCallEdges};
@@ -1,7 +1,19 @@
1
- import type { IChunker } from './chunker.interface.js';
1
+ import { IChunker } from "./chunker.interface.js";
2
+
3
+ //#region packages/chunker/src/chunker-factory.d.ts
2
4
  /**
3
5
  * Create the appropriate chunker for a file extension.
4
- * Prefers tree-sitter AST-based chunking when available; falls back to regex-based.
6
+ *
7
+ * Uses WASM tree-sitter AST-based chunking when available.
8
+ * Falls back to regex-based CodeChunker.
9
+ *
10
+ * **Breaking change**: Now returns `Promise<IChunker>` because WASM init is async.
5
11
  */
6
- export declare function createChunker(fileExtension: string): IChunker;
7
- //# sourceMappingURL=chunker-factory.d.ts.map
12
+ declare function createChunker(fileExtension: string): Promise<IChunker>;
13
+ /**
14
+ * Create a chunker synchronously (legacy API).
15
+ * Uses whatever runtime is already initialized.
16
+ */
17
+ declare function createChunkerSync(fileExtension: string): IChunker;
18
+ //#endregion
19
+ export { createChunker, createChunkerSync };
@@ -1 +1 @@
1
- import{CodeChunker as s}from"./code-chunker.js";import{GenericChunker as n}from"./generic-chunker.js";import{MarkdownChunker as a}from"./markdown-chunker.js";import{TreeSitterChunker as c,TreeSitterRuntime as o}from"./treesitter-chunker.js";function f(t){const e=t.toLowerCase();switch(e){case".md":case".mdx":return new a;case".ts":case".tsx":case".mts":case".cts":case".js":case".jsx":case".mjs":case".cjs":case".py":case".go":case".rs":case".java":{const r=o.get();return r?.hasLanguage(e)?new c(r):new s}default:return new n}}export{f as createChunker};
1
+ import{SUPPORTED_EXTENSIONS as e}from"./wasm/languages.js";import{WasmRuntime as t}from"./wasm/runtime.js";import{CodeChunker as n}from"./code-chunker.js";import{GenericChunker as r}from"./generic-chunker.js";import{MarkdownChunker as i}from"./markdown-chunker.js";import{WasmChunker as a}from"./wasm-chunker.js";async function o(o){let s=o.toLowerCase();switch(s){case`.md`:case`.mdx`:return new i;case`.ts`:case`.tsx`:case`.mts`:case`.cts`:case`.js`:case`.jsx`:case`.mjs`:case`.cjs`:case`.py`:case`.go`:case`.rs`:case`.java`:if(e.has(s)){let e=await t.initialize();if(e)return await e.loadLanguage(s),new a}return new n;default:return new r}}function s(e){let o=e.toLowerCase();switch(o){case`.md`:case`.mdx`:return new i;case`.ts`:case`.tsx`:case`.mts`:case`.cts`:case`.js`:case`.jsx`:case`.mjs`:case`.cjs`:case`.py`:case`.go`:case`.rs`:case`.java`:return t.get()?.isLanguageLoaded(o)?new a:new n;default:return new r}}export{o as createChunker,s as createChunkerSync};
@@ -1,10 +1,13 @@
1
- import type { ChunkMetadata, RawChunk } from '@kb/core';
1
+ import { ChunkMetadata, RawChunk } from "@kb/core";
2
+
3
+ //#region packages/chunker/src/chunker.interface.d.ts
2
4
  /**
3
5
  * Interface for content chunkers.
4
6
  * Each chunker splits a specific content type into searchable chunks.
5
7
  */
6
- export interface IChunker {
7
- /** Split content into chunks */
8
- chunk(content: string, metadata: ChunkMetadata): RawChunk[];
8
+ interface IChunker {
9
+ /** Split content into chunks */
10
+ chunk(content: string, metadata: ChunkMetadata): RawChunk[];
9
11
  }
10
- //# sourceMappingURL=chunker.interface.d.ts.map
12
+ //#endregion
13
+ export { IChunker };
@@ -0,0 +1 @@
1
+ export{};
@@ -1,14 +1,17 @@
1
- import type { ChunkMetadata, RawChunk } from '@kb/core';
2
- import type { IChunker } from './chunker.interface.js';
3
- export declare class CodeChunker implements IChunker {
4
- private readonly maxChunkSize;
5
- constructor(options?: {
6
- maxChunkSize?: number;
7
- });
8
- chunk(content: string, metadata: ChunkMetadata): RawChunk[];
9
- private findDeclarationBoundaries;
10
- private fallbackChunk;
11
- private splitByLines;
12
- private getLineNumber;
1
+ import { IChunker } from "./chunker.interface.js";
2
+ import { ChunkMetadata, RawChunk } from "@kb/core";
3
+
4
+ //#region packages/chunker/src/code-chunker.d.ts
5
+ declare class CodeChunker implements IChunker {
6
+ private readonly maxChunkSize;
7
+ constructor(options?: {
8
+ maxChunkSize?: number;
9
+ });
10
+ chunk(content: string, metadata: ChunkMetadata): RawChunk[];
11
+ private findDeclarationBoundaries;
12
+ private fallbackChunk;
13
+ private splitByLines;
14
+ private getLineNumber;
13
15
  }
14
- //# sourceMappingURL=code-chunker.d.ts.map
16
+ //#endregion
17
+ export { CodeChunker };
@@ -1,14 +1,11 @@
1
- import{CHUNK_SIZES as p}from"../../core/dist/index.js";class C{maxChunkSize;constructor(e){this.maxChunkSize=e?.maxChunkSize??p.code.max}chunk(e,n){const r=this.findDeclarationBoundaries(e);if(r.length===0)return this.fallbackChunk(e,n);const s=[];for(let t=0;t<r.length;t++){const i=r[t].offset,l=t+1<r.length?r[t+1].offset:e.length;let h=e.slice(i,l).trim();if(h=`// File: ${n.sourcePath}
2
- `+h,h.length>this.maxChunkSize){const u=this.splitByLines(h,this.maxChunkSize);let c=this.getLineNumber(e,i);for(const a of u){const f=a.split(`
3
- `).length;s.push({text:a,sourcePath:n.sourcePath,contentType:n.contentType,chunkIndex:s.length,totalChunks:0,startLine:c,endLine:c+f-1}),c+=f}}else{const u=this.getLineNumber(e,i);s.push({text:h,sourcePath:n.sourcePath,contentType:n.contentType,chunkIndex:s.length,totalChunks:0,startLine:u,endLine:u+h.split(`
4
- `).length-1})}}if(r[0].offset>0){const t=e.slice(0,r[0].offset).trim();t.length>0&&s.unshift({text:`// File: ${n.sourcePath}
5
- ${t}`,sourcePath:n.sourcePath,contentType:n.contentType,chunkIndex:0,totalChunks:0,startLine:1,endLine:this.getLineNumber(e,r[0].offset)-1})}return s.map((t,i)=>({...t,chunkIndex:i,totalChunks:s.length}))}findDeclarationBoundaries(e){const n=/^(?:export\s+)?(?:default\s+)?(?:async\s+)?(?:function|class|interface|type|const|enum|abstract\s+class)\s+(\w+)/gm,r=[];let s;for(;(s=n.exec(e))!==null;){const t=e.lastIndexOf(`
6
- `,s.index-1)+1;let i=t;const h=e.slice(0,t).split(`
7
- `);let o=h.length-1;for(;o>=0;){const u=h[o].trim();if(u===""||u.startsWith("//")||u.startsWith("*")||u.startsWith("/*")||u.startsWith("*/")||u.startsWith("@"))o--;else break}o<h.length-1&&(i=h.slice(0,o+1).join(`
8
- `).length+1),r.push({offset:i,name:s[1]})}return r}fallbackChunk(e,n){return[{text:`// File: ${n.sourcePath}
9
- `+e,sourcePath:n.sourcePath,contentType:n.contentType,chunkIndex:0,totalChunks:1,startLine:1,endLine:e.split(`
10
- `).length}]}splitByLines(e,n){const r=e.split(`
11
- `),s=[];let t=[],i=0;for(const l of r)i+l.length+1>n&&t.length>0?(s.push(t.join(`
12
- `)),t=[l],i=l.length):(t.push(l),i+=l.length+1);return t.length>0&&s.push(t.join(`
13
- `)),s}getLineNumber(e,n){return e.slice(0,n).split(`
14
- `).length}}export{C as CodeChunker};
1
+ import{CHUNK_SIZES as e}from"../../core/dist/index.js";var t=class{maxChunkSize;constructor(t){this.maxChunkSize=t?.maxChunkSize??e.code.max}chunk(e,t){let n=this.findDeclarationBoundaries(e);if(n.length===0)return this.fallbackChunk(e,t);let r=[];for(let i=0;i<n.length;i++){let a=n[i].offset,o=i+1<n.length?n[i+1].offset:e.length,s=e.slice(a,o).trim();if(s=`// File: ${t.sourcePath}\n`+s,s.length>this.maxChunkSize){let n=this.splitByLines(s,this.maxChunkSize),i=this.getLineNumber(e,a);for(let e of n){let n=e.split(`
2
+ `).length;r.push({text:e,sourcePath:t.sourcePath,contentType:t.contentType,chunkIndex:r.length,totalChunks:0,startLine:i,endLine:i+n-1}),i+=n}}else{let n=this.getLineNumber(e,a);r.push({text:s,sourcePath:t.sourcePath,contentType:t.contentType,chunkIndex:r.length,totalChunks:0,startLine:n,endLine:n+s.split(`
3
+ `).length-1})}}if(n[0].offset>0){let i=e.slice(0,n[0].offset).trim();i.length>0&&r.unshift({text:`// File: ${t.sourcePath}\n${i}`,sourcePath:t.sourcePath,contentType:t.contentType,chunkIndex:0,totalChunks:0,startLine:1,endLine:this.getLineNumber(e,n[0].offset)-1})}return r.map((e,t)=>({...e,chunkIndex:t,totalChunks:r.length}))}findDeclarationBoundaries(e){let t=/^(?:export\s+)?(?:default\s+)?(?:async\s+)?(?:function|class|interface|type|const|enum|abstract\s+class)\s+(\w+)/gm,n=[],r;for(;(r=t.exec(e))!==null;){let t=e.lastIndexOf(`
4
+ `,r.index-1)+1,i=t,a=e.slice(0,t).split(`
5
+ `),o=a.length-1;for(;o>=0;){let e=a[o].trim();if(e===``||e.startsWith(`//`)||e.startsWith(`*`)||e.startsWith(`/*`)||e.startsWith(`*/`)||e.startsWith(`@`))o--;else break}o<a.length-1&&(i=a.slice(0,o+1).join(`
6
+ `).length+1),n.push({offset:i,name:r[1]})}return n}fallbackChunk(e,t){return[{text:`// File: ${t.sourcePath}\n`+e,sourcePath:t.sourcePath,contentType:t.contentType,chunkIndex:0,totalChunks:1,startLine:1,endLine:e.split(`
7
+ `).length}]}splitByLines(e,t){let n=e.split(`
8
+ `),r=[],i=[],a=0;for(let e of n)a+e.length+1>t&&i.length>0?(r.push(i.join(`
9
+ `)),i=[e],a=e.length):(i.push(e),a+=e.length+1);return i.length>0&&r.push(i.join(`
10
+ `)),r}getLineNumber(e,t){return e.slice(0,t).split(`
11
+ `).length}};export{t as CodeChunker};
@@ -0,0 +1,24 @@
1
+ //#region packages/chunker/src/extractors/call-extractor.d.ts
2
+ /**
3
+ * AST-based call extractor.
4
+ *
5
+ * Replaces regex-based call graph analysis with tree-sitter AST queries.
6
+ * Returns `CallEdge[]` compatible with the existing call-graph-extractor.
7
+ */
8
+ interface CallEdge {
9
+ callerFile: string;
10
+ callerName: string;
11
+ calleeName: string;
12
+ line: number;
13
+ }
14
+ /**
15
+ * Extract call edges from source code using AST queries.
16
+ *
17
+ * @param content - The source code to analyze.
18
+ * @param ext - The file extension (e.g., `.ts`, `.py`).
19
+ * @param filePath - The file path for the returned CallEdge records.
20
+ * @returns Array of extracted call edges, or empty array if language unsupported.
21
+ */
22
+ declare function extractCalls(content: string, ext: string, filePath?: string): Promise<CallEdge[]>;
23
+ //#endregion
24
+ export { CallEdge, extractCalls };
@@ -0,0 +1 @@
1
+ import{WasmRuntime as e}from"../wasm/runtime.js";import{QueryExecutor as t}from"../wasm/query-executor.js";const n=new t,r=new Set([`function_declaration`,`method_definition`,`arrow_function`,`function_definition`,`method_declaration`,`constructor_declaration`,`function_declaration`,`method_declaration`,`function_item`]);async function i(t,r,i=``){let o=await e.ensure(),s=await o.parse(t,r);if(!s)return[];let c=o.getLanguage(r);return c?n.execute(s.rootNode,c,r,`calls`).map(e=>a(e,s.rootNode,i)).filter(e=>e!==null):[]}function a(e,t,n){let r=e.captures.get(`callee`);if(!r)return null;let i=e.captures.get(`node`);return{callerFile:n,callerName:o(i?.node??r.node),calleeName:r.text,line:(i?.startLine??r.startLine)+1}}function o(e){let t=e.parent;for(;t;){if(r.has(t.type)){let e=s(t);if(e)return e}t=t.parent}return`<module>`}function s(e){let t=e.childForFieldName(`name`);if(t)return t.text;for(let t of e.children)if(t.type===`identifier`||t.type===`property_identifier`||t.type===`field_identifier`)return t.text;return null}export{i as extractCalls};
@@ -0,0 +1,14 @@
1
+ import { EntryPoint } from "./types.js";
2
+
3
+ //#region packages/chunker/src/extractors/entry-point-detector.d.ts
4
+ /**
5
+ * Detect entry points from source code using AST queries.
6
+ *
7
+ * @param content - The source code to analyze.
8
+ * @param ext - The file extension (e.g., `.ts`, `.py`).
9
+ * @param filePath - The file path for the returned EntryPoint records.
10
+ * @returns Array of detected entry points, or empty array if language unsupported.
11
+ */
12
+ declare function detectEntryPoints(content: string, ext: string, filePath?: string): Promise<EntryPoint[]>;
13
+ //#endregion
14
+ export { detectEntryPoints };
@@ -0,0 +1 @@
1
+ import{WasmRuntime as e}from"../wasm/runtime.js";import{QueryExecutor as t}from"../wasm/query-executor.js";const n=new t,r={handler:`lambda-handler`,lambdaHandler:`lambda-handler`,main:`main`,__name__:`main`,app:`server`,server:`server`,router:`server`,urlpatterns:`server`,init:`main`},i={SpringBootApplication:`server`,RestController:`server`,Controller:`server`};async function a(t,r,i=``){let a=await e.ensure(),s=await a.parse(t,r);if(!s)return[];let c=a.getLanguage(r);if(!c)return[];let l=n.execute(s.rootNode,c,r,`entry-points`),u=[],d=new Set;for(let e of l){let t=o(e,r,i);if(t){let e=`${t.name}:${t.type}`;d.has(e)||(d.add(e),u.push(t))}}return u}function o(e,t,n){let a=e.captures.get(`name`);if(!a)return null;let o=a.text,s=e.captures.get(`_parent`);if(s){let e=s.text;if([`Construct`,`Stack`,`NestedStack`,`Stage`].includes(e))return{name:o,type:`cdk-construct`,filePath:n}}let c=e.captures.get(`_ann`);if(c){let e=i[c.text];if(e)return{name:o,type:e,filePath:n}}let l=r[o];return l?{name:o,type:l,filePath:n}:t===`.go`&&o.toLowerCase().startsWith(`handle`)?{name:o,type:`server`,filePath:n,trigger:`HTTP handler`}:{name:o,type:`main`,filePath:n}}export{a as detectEntryPoints};
@@ -0,0 +1,14 @@
1
+ import { ImportInfo } from "./types.js";
2
+
3
+ //#region packages/chunker/src/extractors/import-extractor.d.ts
4
+ /**
5
+ * Extract imports from source code using AST queries.
6
+ *
7
+ * @param content - The source code to analyze.
8
+ * @param ext - The file extension (e.g., `.ts`, `.py`).
9
+ * @param filePath - The file path for the returned ImportInfo records.
10
+ * @returns Array of extracted imports, or empty array if language unsupported.
11
+ */
12
+ declare function extractImports(content: string, ext: string, filePath?: string): Promise<ImportInfo[]>;
13
+ //#endregion
14
+ export { extractImports };
@@ -0,0 +1 @@
1
+ import{WasmRuntime as e}from"../wasm/runtime.js";import{QueryExecutor as t}from"../wasm/query-executor.js";const n=new t;async function r(t,r,c=``){let l=await e.ensure(),u=await l.parse(t,r);if(!u)return[];let d=l.getLanguage(r);if(!d)return[];let f=n.execute(u.rootNode,d,r,`imports`),p=[];for(let e of f){let t=e.captures.get(`source`);if(!t){let t=e.captures.get(`node`);if(t){let e=s(t.text,r);e&&p.push({source:e.source,specifiers:e.specifiers,filePath:c,isExternal:a(e.source,r),confidence:`high`})}continue}let n=t.text,l=i(n,r),u=o(e.captures.get(`node`)?.text??``,r,l);p.push({source:l,specifiers:u,filePath:c,isExternal:a(l,r),confidence:`high`})}return p}function i(e,t){let n=e.replace(/^['"`]|['"`]$/g,``);return t===`.go`&&(n=n.replace(/^"|"$/g,``)),n}function a(e,t){return t===`.py`?!e.startsWith(`.`):t===`.go`?e.includes(`/`)||e.includes(`.`):t===`.java`?!0:t===`.rs`?!e.startsWith(`self`)&&!e.startsWith(`super`)&&!e.startsWith(`crate`):!e.startsWith(`.`)&&!e.startsWith(`/`)}function o(e,t,n){if(!e)return[n];if(t===`.py`){let t=e.match(/import\s+(.+)$/m);return t?t[1].split(`,`).map(e=>e.trim().split(/\s+as\s+/)[0].trim()).filter(Boolean):[n]}if(t===`.java`){let e=n.split(`.`);return[e[e.length-1]]}if(t===`.go`){let e=n.split(`/`);return[e[e.length-1]]}if(t===`.rs`){if(n.includes(`{`)){let e=n.match(/\{([^}]+)\}/);if(e)return e[1].split(`,`).map(e=>e.trim()).filter(Boolean)}let e=n.split(`::`);return[e[e.length-1]]}let r=e.match(/\{([^}]+)\}/);if(r)return r[1].split(`,`).map(e=>e.trim().split(/\s+as\s+/)[0].trim()).filter(Boolean);let i=e.match(/import\s+(\w+)/);return i?[i[1]]:[n]}function s(e,t){if(t===`.py`){let t=e.match(/^import\s+([\w.]+)/);if(t)return{source:t[1],specifiers:[t[1]]}}return null}export{r as extractImports};
@@ -0,0 +1,14 @@
1
+ import { PatternMatch } from "./types.js";
2
+
3
+ //#region packages/chunker/src/extractors/pattern-detector.d.ts
4
+ /**
5
+ * Detect design patterns from source code using AST queries.
6
+ *
7
+ * @param content - The source code to analyze.
8
+ * @param ext - The file extension (e.g., `.ts`, `.py`).
9
+ * @param filePath - The file path for location info.
10
+ * @returns Array of detected patterns, or empty array if language unsupported.
11
+ */
12
+ declare function detectPatterns(content: string, ext: string, filePath?: string): Promise<PatternMatch[]>;
13
+ //#endregion
14
+ export { detectPatterns };
@@ -0,0 +1 @@
1
+ import{WasmRuntime as e}from"../wasm/runtime.js";import{QueryExecutor as t}from"../wasm/query-executor.js";const n=new t;async function r(t,r,a=``){let o=await e.ensure(),s=await o.parse(t,r);if(!s)return[];let c=o.getLanguage(r);if(!c)return[];let l=n.execute(s.rootNode,c,r,`patterns`),u=new Map;for(let e of l){let t=i(e,r);if(!t)continue;let n=e.captures.get(`name`),o=`${a}:${(e.captures.get(`node`)?.startLine??n?.startLine??0)+1}`,s=u.get(t.pattern);s?s.locations.push(o):u.set(t.pattern,{description:t.description,locations:[o]})}let d=[];for(let[e,{description:t,locations:n}]of u)d.push({pattern:e,description:t,locations:n,confidence:`high`});return d}function i(e,t){let n=e.captures.get(`name`)?.text;if(!n)return null;let r=e.captures.get(`node`)?.nodeType??``;if(/^(create|build)[A-Z]/.test(n)||/^(of|from|new)[A-Z]/.test(n))return{pattern:`factory`,description:`Factory function/method`};if(/^(register|bind)$/.test(n))return{pattern:`dependency-injection`,description:`DI container registration`};if(/^(Injectable|Component|Service|Controller|Module|Singleton|Repository|Bean)$/.test(n))return{pattern:`dependency-injection`,description:`Framework DI annotation`};if(/^(Map|WeakMap|Set)$/.test(n))return{pattern:`cached-instance`,description:`Cached Map/Set instance`};if(t===`.py`){if(n===`__new__`)return{pattern:`singleton`,description:`Singleton pattern (__new__ override)`};if(n===`__enter__`)return{pattern:`context-manager`,description:`Context manager pattern`};if(r===`decorated_definition`)return{pattern:`decorator`,description:`Decorator usage`}}if(t===`.go`){if(r===`type_declaration`)return{pattern:`interface`,description:`Interface definition`};if(r===`go_statement`)return{pattern:`concurrency`,description:`Goroutine concurrency pattern`};if(n===`make`)return{pattern:`concurrency`,description:`Channel/make pattern`}}if(t===`.rs`){if(r===`impl_item`)return{pattern:`trait-impl`,description:`Trait implementation`};if(r===`attribute_item`){if(n===`derive`)return{pattern:`derive`,description:`Derive macro attribute`};if(n===`test`)return{pattern:`test`,description:`Test attribute`}}}if(t===`.java`){if(r===`class_declaration`)return{pattern:`singleton`,description:`Singleton pattern (private constructor)`};if(r===`marker_annotation`)return{pattern:`dependency-injection`,description:`Framework DI annotation`}}if(/\.(ts|tsx|mts|cts|js|jsx|mjs|cjs)$/.test(t)){if(r===`class_declaration`)return{pattern:`singleton`,description:`Singleton pattern (private constructor)`};if(r===`decorator`)return{pattern:`decorator`,description:`Framework decorator pattern`}}return{pattern:r||`unknown`,description:`Detected pattern: ${n}`}}export{r as detectPatterns};
@@ -0,0 +1,26 @@
1
+ //#region packages/chunker/src/extractors/scope-resolver.d.ts
2
+ /**
3
+ * AST-based scope resolver.
4
+ *
5
+ * NEW capability: resolves the enclosing scope (function/class/module) for any
6
+ * AST node. Used by other extractors to determine caller context.
7
+ */
8
+ interface ScopeInfo {
9
+ /** Name of the enclosing scope (or '<module>' for top-level). */
10
+ name: string;
11
+ /** The scope type (function, class, module). */
12
+ type: 'function' | 'class' | 'module';
13
+ /** 1-based start line of the scope. */
14
+ line: number;
15
+ }
16
+ /**
17
+ * Resolve the enclosing scope chain for a given line in source code.
18
+ *
19
+ * @param content - The source code to analyze.
20
+ * @param ext - The file extension.
21
+ * @param targetLine - 1-based line number to resolve scope for.
22
+ * @returns Array of scopes from innermost to outermost, ending with module.
23
+ */
24
+ declare function resolveScopes(content: string, ext: string, targetLine: number): Promise<ScopeInfo[]>;
25
+ //#endregion
26
+ export { ScopeInfo, resolveScopes };
@@ -0,0 +1 @@
1
+ import{WasmRuntime as e}from"../wasm/runtime.js";const t=new Set([`function_declaration`,`method_definition`,`arrow_function`,`class_declaration`,`function_definition`,`class_definition`,`method_declaration`,`constructor_declaration`,`class_declaration`,`function_declaration`,`method_declaration`,`function_item`,`impl_item`]);async function n(t,n,a){let o=await(await e.ensure()).parse(t,n);if(!o)return[{name:`<module>`,type:`module`,line:1}];let s=r(o.rootNode,a-1);if(!s)return[{name:`<module>`,type:`module`,line:1}];let c=[];return i(s,c),c.push({name:`<module>`,type:`module`,line:1}),c}function r(e,t){let n=null;function r(e){if(e.startPosition.row<=t&&e.endPosition.row>=t){n=e;for(let t of e.children)r(t)}}return r(e),n}function i(e,n){let r=e.parent;for(;r;){if(t.has(r.type)){let e=a(r),t=o(r.type);n.push({name:e??`<anonymous>`,type:t,line:r.startPosition.row+1})}r=r.parent}}function a(e){let t=e.childForFieldName(`name`);if(t)return t.text;for(let t of e.children)if(t.type===`identifier`||t.type===`type_identifier`||t.type===`property_identifier`||t.type===`field_identifier`)return t.text;return null}function o(e){return e.includes(`class`)||e===`impl_item`?`class`:`function`}export{n as resolveScopes};
@@ -0,0 +1,14 @@
1
+ import { SymbolInfo } from "./types.js";
2
+
3
+ //#region packages/chunker/src/extractors/symbol-extractor.d.ts
4
+ /**
5
+ * Extract symbols from source code using AST queries.
6
+ *
7
+ * @param content - The source code to analyze.
8
+ * @param ext - The file extension (e.g., `.ts`, `.py`).
9
+ * @param filePath - The file path for the returned SymbolInfo records.
10
+ * @returns Array of extracted symbols, or empty array if language unsupported.
11
+ */
12
+ declare function extractSymbols(content: string, ext: string, filePath?: string): Promise<SymbolInfo[]>;
13
+ //#endregion
14
+ export { extractSymbols };
@@ -0,0 +1 @@
1
+ import{WasmRuntime as e}from"../wasm/runtime.js";import{QueryExecutor as t}from"../wasm/query-executor.js";const n=new t,r={function_declaration:`function`,class_declaration:`class`,interface_declaration:`interface`,type_alias_declaration:`type`,enum_declaration:`enum`,lexical_declaration:`const`,method_definition:`method`,public_field_definition:`variable`,field_definition:`variable`,function_definition:`function`,class_definition:`class`,expression_statement:`variable`,method_declaration:`method`,constructor_declaration:`method`,field_declaration:`variable`,type_spec:`type`,type_declaration:`type`,const_spec:`const`,var_spec:`variable`,function_item:`function`,struct_item:`class`,enum_item:`enum`,trait_item:`interface`,impl_item:`type`,const_item:`const`,static_item:`variable`,type_item:`type`};async function i(t,r,i=``){let o=await e.ensure(),s=await o.parse(t,r);if(!s)return[];let c=o.getLanguage(r);return c?a(n.execute(s.rootNode,c,r,`symbols`),r,i):[]}function a(e,t,n){let i=new Map;for(let n of e){let e=n.captures.get(`name`);if(!e)continue;let r=`${e.text}:${(n.captures.get(`node`)?.startLine??e.startLine)+1}`,a=o(n,t),s=i.get(r);(!s||!s.exported&&a)&&i.set(r,{match:n,exported:a})}let a=[];for(let{match:e,exported:o}of i.values()){let i=e.captures.get(`name`),l=e.captures.get(`node`);if(!i)continue;let u=r[l?.nodeType??i.nodeType]??`variable`,d=(l?.startLine??i.startLine)+1,f=s(u,l?.node,t);a.push({name:i.text,kind:f,exported:o,filePath:n,line:d,signature:c(l?.node,f)})}return a}function o(e,t){if(e.captures.has(`exported`))return!0;let n=e.captures.get(`name`)?.text;if(!n)return!1;if(t===`.py`)return!n.startsWith(`_`);if(t===`.go`)return/^[A-Z]/.test(n);if(t===`.java`){let t=e.captures.get(`node`)?.text??``;return/\bpublic\b/.test(t)}return!1}function s(e,t,n){if(n===`.go`&&e===`type`&&t?.children){let e=t.type===`type_declaration`?t.children.flatMap(e=>e.children??[]):t.children;for(let t of e){if(t.type===`interface_type`)return`interface`;if(t.type===`struct_type`)return`class`}}return e}function c(e,t){if(e){if(t===`function`||t===`method`)return l(e);if(t===`class`)return u(e);if(t===`interface`)return f(e)}}function l(e){let t=e.childForFieldName(`parameters`)??e.childForFieldName(`parameter_list`),n=e.childForFieldName(`return_type`)??e.childForFieldName(`type`),r=e.childForFieldName(`result`);if(!t){for(let t of e.children)if(t.type===`formal_parameters`||t.type===`parameter_list`||t.type===`parameters`){let e=t.text;return n&&(e+=n.text),r&&(e+=` ${r.text}`),e.length>120?`${e.slice(0,117)}...`:e}return}let i=t.text;return n&&(i+=n.text),r&&(i+=` ${r.text}`),i.length>120?`${i.slice(0,117)}...`:i}function u(e){let t=e.childForFieldName(`body`)??e.childForFieldName(`field_declaration_list`);if(!t){for(let t of e.children)if(t.type===`struct_type`||t.type===`class_body`)return d(t);return}return d(t)}function d(e){let t=[];for(let n of e.children){if(n.type===`method_definition`){let e=n.childForFieldName(`name`);e&&t.push(e.text)}if(n.type===`method_declaration`){let e=n.childForFieldName(`name`);e&&t.push(e.text)}if(n.type===`field_declaration`){let e=n.childForFieldName(`name`);e&&t.push(e.text)}if(n.type===`function_definition`){let e=n.childForFieldName(`name`);e&&t.push(e.text)}}if(t.length===0)return;let n=t.join(`, `);return n.length>120?`${n.slice(0,117)}...`:n}function f(e){let t=e.childForFieldName(`body`);if(!t){for(let t of e.children)if(t.type===`interface_type`)return p(t);return}return p(t)}function p(e){let t=[];for(let n of e.children){if(n.type===`property_signature`||n.type===`method_signature`){let e=n.childForFieldName(`name`);e&&t.push(e.text)}if(n.type===`method_declaration`){let e=n.childForFieldName(`name`);e&&t.push(e.text)}if(n.type===`method_spec`){let e=n.childForFieldName(`name`);e&&t.push(e.text)}if(n.type===`function_signature_item`||n.type===`declaration_list`){let e=n.childForFieldName(`name`);e&&t.push(e.text)}}if(t.length===0)return;let n=t.join(`, `);return n.length>120?`${n.slice(0,117)}...`:n}export{i as extractSymbols};