@vpxa/aikit 0.1.58 → 0.1.60

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 (557) hide show
  1. package/README.md +38 -3
  2. package/package.json +2 -1
  3. package/packages/aikit-client/dist/index.d.ts +146 -4
  4. package/packages/aikit-client/dist/index.js +5 -1
  5. package/packages/analyzers/dist/index.d.ts +309 -11
  6. package/packages/analyzers/dist/index.js +54 -1
  7. package/packages/chunker/dist/index.d.ts +451 -18
  8. package/packages/chunker/dist/index.js +24 -1
  9. package/packages/cli/dist/{commands/init/constants.js → constants-D3v4VDf0.js} +1 -1
  10. package/packages/cli/dist/index.js +15 -2
  11. package/packages/cli/dist/init-D0CiV9PX.js +7 -0
  12. package/packages/cli/dist/scaffold-CJwkHf-q.js +2 -0
  13. package/packages/cli/dist/{commands/init/templates.js → templates-DJ7EC5vw.js} +1 -1
  14. package/packages/cli/dist/user-HmJYNt5b.js +5 -0
  15. package/packages/core/dist/index.d.ts +357 -6
  16. package/packages/core/dist/index.js +1 -1
  17. package/packages/dashboard/dist/assets/{index-Cdke3KDK.js → index-C6D-PCp0.js} +7 -7
  18. package/packages/dashboard/dist/assets/index-C6D-PCp0.js.map +1 -0
  19. package/packages/dashboard/dist/index.html +1 -1
  20. package/packages/elicitation/dist/index.d.ts +139 -4
  21. package/packages/elicitation/dist/index.js +1 -1
  22. package/packages/embeddings/dist/index.d.ts +45 -2
  23. package/packages/embeddings/dist/index.js +1 -1
  24. package/packages/enterprise-bridge/dist/index.d.ts +275 -7
  25. package/packages/enterprise-bridge/dist/index.js +1 -1
  26. package/packages/flows/dist/index.d.ts +345 -12
  27. package/packages/flows/dist/index.js +15 -1
  28. package/packages/indexer/dist/index.d.ts +196 -6
  29. package/packages/indexer/dist/index.js +1 -1
  30. package/packages/present/dist/index.html +315 -314
  31. package/packages/server/dist/curated-manager-DX-_oJg0.js +5 -0
  32. package/packages/server/dist/index.d.ts +139 -1
  33. package/packages/server/dist/index.js +1 -1
  34. package/packages/server/dist/server-eMZ64H9b.js +1274 -0
  35. package/packages/store/dist/index.d.ts +316 -5
  36. package/packages/store/dist/index.js +90 -1
  37. package/packages/store/dist/lance-store-jdHZp-V4.js +1 -0
  38. package/packages/tools/dist/index.d.ts +2161 -61
  39. package/packages/tools/dist/index.js +117 -1
  40. package/packages/tui/dist/{App-CoMyn2kt.js → App-DobfqTPH.js} +1 -1
  41. package/packages/tui/dist/App.d.ts +1 -1
  42. package/packages/tui/dist/App.js +1 -1
  43. package/packages/tui/dist/{LogPanel-CDItCD0E.js → LogPanel-DGeptKim.js} +3 -3
  44. package/packages/tui/dist/hooks/useKBClient.d.ts +1 -1
  45. package/packages/tui/dist/{index-MXJeXmCf.d.ts → index-floZQwfo.d.ts} +2 -1
  46. package/packages/tui/dist/index.d.ts +1 -1
  47. package/packages/tui/dist/index.js +1 -1
  48. package/packages/tui/dist/panels/LogPanel.js +1 -1
  49. package/scaffold/definitions/bodies.mjs +47 -0
  50. package/scaffold/definitions/protocols.mjs +9 -0
  51. package/scaffold/definitions/tools.mjs +15 -0
  52. package/scaffold/general/agents/Debugger.agent.md +9 -0
  53. package/scaffold/general/agents/Documenter.agent.md +9 -0
  54. package/scaffold/general/agents/Frontend.agent.md +9 -0
  55. package/scaffold/general/agents/Implementer.agent.md +9 -0
  56. package/scaffold/general/agents/Orchestrator.agent.md +47 -0
  57. package/scaffold/general/agents/Planner.agent.md +9 -0
  58. package/scaffold/general/agents/Refactor.agent.md +9 -0
  59. package/scaffold/general/agents/Security.agent.md +9 -0
  60. package/scaffold/general/agents/_shared/code-agent-base.md +9 -0
  61. package/scaffold/general/skills/aikit/SKILL.md +71 -7
  62. package/scaffold/general/skills/c4-architecture/SKILL.md +87 -1
  63. package/scaffold/general/skills/c4-architecture/references/html-design-system.md +337 -0
  64. package/scaffold/general/skills/c4-architecture/references/html-template.html +627 -0
  65. package/scaffold/general/skills/present/SKILL.md +180 -0
  66. package/packages/aikit-client/dist/direct-client.d.ts +0 -37
  67. package/packages/aikit-client/dist/direct-client.js +0 -1
  68. package/packages/aikit-client/dist/mcp-client.d.ts +0 -19
  69. package/packages/aikit-client/dist/mcp-client.js +0 -4
  70. package/packages/aikit-client/dist/parsers.d.ts +0 -35
  71. package/packages/aikit-client/dist/parsers.js +0 -2
  72. package/packages/aikit-client/dist/types.d.ts +0 -62
  73. package/packages/aikit-client/dist/types.js +0 -1
  74. package/packages/analyzers/dist/blast-radius-analyzer.d.ts +0 -19
  75. package/packages/analyzers/dist/blast-radius-analyzer.js +0 -6
  76. package/packages/analyzers/dist/dependency-analyzer.d.ts +0 -32
  77. package/packages/analyzers/dist/dependency-analyzer.js +0 -8
  78. package/packages/analyzers/dist/diagram-generator.d.ts +0 -16
  79. package/packages/analyzers/dist/diagram-generator.js +0 -2
  80. package/packages/analyzers/dist/entry-point-analyzer.d.ts +0 -40
  81. package/packages/analyzers/dist/entry-point-analyzer.js +0 -4
  82. package/packages/analyzers/dist/knowledge-producer.d.ts +0 -40
  83. package/packages/analyzers/dist/knowledge-producer.js +0 -26
  84. package/packages/analyzers/dist/pattern-analyzer.d.ts +0 -15
  85. package/packages/analyzers/dist/pattern-analyzer.js +0 -2
  86. package/packages/analyzers/dist/regex-call-graph.d.ts +0 -10
  87. package/packages/analyzers/dist/regex-call-graph.js +0 -1
  88. package/packages/analyzers/dist/structure-analyzer.d.ts +0 -19
  89. package/packages/analyzers/dist/structure-analyzer.js +0 -4
  90. package/packages/analyzers/dist/symbol-analyzer.d.ts +0 -14
  91. package/packages/analyzers/dist/symbol-analyzer.js +0 -9
  92. package/packages/analyzers/dist/ts-call-graph.d.ts +0 -29
  93. package/packages/analyzers/dist/ts-call-graph.js +0 -1
  94. package/packages/analyzers/dist/types.d.ts +0 -110
  95. package/packages/analyzers/dist/types.js +0 -1
  96. package/packages/chunker/dist/call-graph-extractor.d.ts +0 -25
  97. package/packages/chunker/dist/call-graph-extractor.js +0 -1
  98. package/packages/chunker/dist/chunker-factory.d.ts +0 -19
  99. package/packages/chunker/dist/chunker-factory.js +0 -1
  100. package/packages/chunker/dist/chunker.interface.d.ts +0 -13
  101. package/packages/chunker/dist/chunker.interface.js +0 -1
  102. package/packages/chunker/dist/code-chunker.d.ts +0 -17
  103. package/packages/chunker/dist/code-chunker.js +0 -11
  104. package/packages/chunker/dist/extractors/call-extractor.d.ts +0 -24
  105. package/packages/chunker/dist/extractors/call-extractor.js +0 -1
  106. package/packages/chunker/dist/extractors/entry-point-detector.d.ts +0 -14
  107. package/packages/chunker/dist/extractors/entry-point-detector.js +0 -1
  108. package/packages/chunker/dist/extractors/import-extractor.d.ts +0 -14
  109. package/packages/chunker/dist/extractors/import-extractor.js +0 -1
  110. package/packages/chunker/dist/extractors/pattern-detector.d.ts +0 -14
  111. package/packages/chunker/dist/extractors/pattern-detector.js +0 -1
  112. package/packages/chunker/dist/extractors/scope-resolver.d.ts +0 -26
  113. package/packages/chunker/dist/extractors/scope-resolver.js +0 -1
  114. package/packages/chunker/dist/extractors/symbol-extractor.d.ts +0 -14
  115. package/packages/chunker/dist/extractors/symbol-extractor.js +0 -3
  116. package/packages/chunker/dist/extractors/types.d.ts +0 -44
  117. package/packages/chunker/dist/extractors/types.js +0 -1
  118. package/packages/chunker/dist/generic-chunker.d.ts +0 -15
  119. package/packages/chunker/dist/generic-chunker.js +0 -5
  120. package/packages/chunker/dist/markdown-chunker.d.ts +0 -17
  121. package/packages/chunker/dist/markdown-chunker.js +0 -3
  122. package/packages/chunker/dist/wasm/languages.d.ts +0 -18
  123. package/packages/chunker/dist/wasm/languages.js +0 -1
  124. package/packages/chunker/dist/wasm/query-executor.d.ts +0 -70
  125. package/packages/chunker/dist/wasm/query-executor.js +0 -1
  126. package/packages/chunker/dist/wasm/runtime.d.ts +0 -44
  127. package/packages/chunker/dist/wasm/runtime.js +0 -1
  128. package/packages/chunker/dist/wasm/types.d.ts +0 -84
  129. package/packages/chunker/dist/wasm/types.js +0 -1
  130. package/packages/chunker/dist/wasm-chunker.d.ts +0 -23
  131. package/packages/chunker/dist/wasm-chunker.js +0 -6
  132. package/packages/cli/dist/aikit-init.d.ts +0 -59
  133. package/packages/cli/dist/aikit-init.js +0 -1
  134. package/packages/cli/dist/commands/analyze.d.ts +0 -6
  135. package/packages/cli/dist/commands/analyze.js +0 -2
  136. package/packages/cli/dist/commands/context-cmds.d.ts +0 -6
  137. package/packages/cli/dist/commands/context-cmds.js +0 -1
  138. package/packages/cli/dist/commands/environment.d.ts +0 -6
  139. package/packages/cli/dist/commands/environment.js +0 -1
  140. package/packages/cli/dist/commands/execution.d.ts +0 -6
  141. package/packages/cli/dist/commands/execution.js +0 -1
  142. package/packages/cli/dist/commands/flow.d.ts +0 -6
  143. package/packages/cli/dist/commands/flow.js +0 -1
  144. package/packages/cli/dist/commands/graph.d.ts +0 -6
  145. package/packages/cli/dist/commands/graph.js +0 -6
  146. package/packages/cli/dist/commands/init/adapters.d.ts +0 -28
  147. package/packages/cli/dist/commands/init/adapters.js +0 -1
  148. package/packages/cli/dist/commands/init/config.d.ts +0 -10
  149. package/packages/cli/dist/commands/init/config.js +0 -3
  150. package/packages/cli/dist/commands/init/constants.d.ts +0 -46
  151. package/packages/cli/dist/commands/init/curated.d.ts +0 -7
  152. package/packages/cli/dist/commands/init/curated.js +0 -1
  153. package/packages/cli/dist/commands/init/frontmatter.d.ts +0 -79
  154. package/packages/cli/dist/commands/init/frontmatter.js +0 -2
  155. package/packages/cli/dist/commands/init/index.d.ts +0 -36
  156. package/packages/cli/dist/commands/init/index.js +0 -5
  157. package/packages/cli/dist/commands/init/manifest.d.ts +0 -72
  158. package/packages/cli/dist/commands/init/manifest.js +0 -1
  159. package/packages/cli/dist/commands/init/scaffold.d.ts +0 -58
  160. package/packages/cli/dist/commands/init/scaffold.js +0 -1
  161. package/packages/cli/dist/commands/init/templates.d.ts +0 -9
  162. package/packages/cli/dist/commands/init/user.d.ts +0 -61
  163. package/packages/cli/dist/commands/init/user.js +0 -5
  164. package/packages/cli/dist/commands/knowledge.d.ts +0 -6
  165. package/packages/cli/dist/commands/knowledge.js +0 -1
  166. package/packages/cli/dist/commands/search.d.ts +0 -6
  167. package/packages/cli/dist/commands/search.js +0 -1
  168. package/packages/cli/dist/commands/system.d.ts +0 -6
  169. package/packages/cli/dist/commands/system.js +0 -4
  170. package/packages/cli/dist/commands/upgrade.d.ts +0 -6
  171. package/packages/cli/dist/commands/upgrade.js +0 -1
  172. package/packages/cli/dist/commands/workspace.d.ts +0 -6
  173. package/packages/cli/dist/commands/workspace.js +0 -1
  174. package/packages/cli/dist/context.d.ts +0 -7
  175. package/packages/cli/dist/context.js +0 -1
  176. package/packages/cli/dist/helpers.d.ts +0 -55
  177. package/packages/cli/dist/helpers.js +0 -5
  178. package/packages/cli/dist/types.d.ts +0 -9
  179. package/packages/cli/dist/types.js +0 -1
  180. package/packages/core/dist/constants.d.ts +0 -74
  181. package/packages/core/dist/constants.js +0 -1
  182. package/packages/core/dist/content-detector.d.ts +0 -13
  183. package/packages/core/dist/content-detector.js +0 -1
  184. package/packages/core/dist/errors.d.ts +0 -20
  185. package/packages/core/dist/errors.js +0 -1
  186. package/packages/core/dist/global-registry.d.ts +0 -69
  187. package/packages/core/dist/global-registry.js +0 -1
  188. package/packages/core/dist/logger.d.ts +0 -32
  189. package/packages/core/dist/logger.js +0 -1
  190. package/packages/core/dist/types.d.ts +0 -149
  191. package/packages/core/dist/types.js +0 -1
  192. package/packages/dashboard/dist/assets/index-Cdke3KDK.js.map +0 -1
  193. package/packages/elicitation/dist/build.d.ts +0 -14
  194. package/packages/elicitation/dist/build.js +0 -1
  195. package/packages/elicitation/dist/fields.d.ts +0 -32
  196. package/packages/elicitation/dist/fields.js +0 -1
  197. package/packages/elicitation/dist/normalize.d.ts +0 -15
  198. package/packages/elicitation/dist/normalize.js +0 -1
  199. package/packages/elicitation/dist/types.d.ts +0 -88
  200. package/packages/elicitation/dist/types.js +0 -1
  201. package/packages/embeddings/dist/embedder.interface.d.ts +0 -26
  202. package/packages/embeddings/dist/embedder.interface.js +0 -1
  203. package/packages/embeddings/dist/onnx-embedder.d.ts +0 -23
  204. package/packages/embeddings/dist/onnx-embedder.js +0 -1
  205. package/packages/enterprise-bridge/dist/cache.d.ts +0 -28
  206. package/packages/enterprise-bridge/dist/cache.js +0 -1
  207. package/packages/enterprise-bridge/dist/er-client.d.ts +0 -37
  208. package/packages/enterprise-bridge/dist/er-client.js +0 -1
  209. package/packages/enterprise-bridge/dist/evolution-collector.d.ts +0 -62
  210. package/packages/enterprise-bridge/dist/evolution-collector.js +0 -1
  211. package/packages/enterprise-bridge/dist/policy-store.d.ts +0 -45
  212. package/packages/enterprise-bridge/dist/policy-store.js +0 -1
  213. package/packages/enterprise-bridge/dist/push-adapter.d.ts +0 -23
  214. package/packages/enterprise-bridge/dist/push-adapter.js +0 -1
  215. package/packages/enterprise-bridge/dist/result-merger.d.ts +0 -14
  216. package/packages/enterprise-bridge/dist/result-merger.js +0 -1
  217. package/packages/enterprise-bridge/dist/types.d.ts +0 -81
  218. package/packages/enterprise-bridge/dist/types.js +0 -1
  219. package/packages/flows/dist/adapters/claude-plugin.d.ts +0 -25
  220. package/packages/flows/dist/adapters/claude-plugin.js +0 -3
  221. package/packages/flows/dist/adapters/copilot.d.ts +0 -12
  222. package/packages/flows/dist/adapters/copilot.js +0 -1
  223. package/packages/flows/dist/adapters/index.d.ts +0 -12
  224. package/packages/flows/dist/adapters/index.js +0 -1
  225. package/packages/flows/dist/adapters/native.d.ts +0 -10
  226. package/packages/flows/dist/adapters/native.js +0 -1
  227. package/packages/flows/dist/adapters/openspec.d.ts +0 -40
  228. package/packages/flows/dist/adapters/openspec.js +0 -1
  229. package/packages/flows/dist/builtins.d.ts +0 -16
  230. package/packages/flows/dist/builtins.js +0 -1
  231. package/packages/flows/dist/foundation.d.ts +0 -20
  232. package/packages/flows/dist/foundation.js +0 -11
  233. package/packages/flows/dist/git.d.ts +0 -53
  234. package/packages/flows/dist/git.js +0 -2
  235. package/packages/flows/dist/loader.d.ts +0 -13
  236. package/packages/flows/dist/loader.js +0 -2
  237. package/packages/flows/dist/registry.d.ts +0 -23
  238. package/packages/flows/dist/registry.js +0 -1
  239. package/packages/flows/dist/state-machine.d.ts +0 -23
  240. package/packages/flows/dist/state-machine.js +0 -1
  241. package/packages/flows/dist/symlinks.d.ts +0 -17
  242. package/packages/flows/dist/symlinks.js +0 -1
  243. package/packages/flows/dist/types.d.ts +0 -127
  244. package/packages/flows/dist/types.js +0 -1
  245. package/packages/indexer/dist/file-hasher.d.ts +0 -13
  246. package/packages/indexer/dist/file-hasher.js +0 -1
  247. package/packages/indexer/dist/filesystem-crawler.d.ts +0 -29
  248. package/packages/indexer/dist/filesystem-crawler.js +0 -1
  249. package/packages/indexer/dist/graph-extractor.d.ts +0 -22
  250. package/packages/indexer/dist/graph-extractor.js +0 -1
  251. package/packages/indexer/dist/hash-cache.d.ts +0 -24
  252. package/packages/indexer/dist/hash-cache.js +0 -1
  253. package/packages/indexer/dist/incremental-indexer.d.ts +0 -73
  254. package/packages/indexer/dist/incremental-indexer.js +0 -1
  255. package/packages/indexer/dist/smart-index-scheduler.d.ts +0 -47
  256. package/packages/indexer/dist/smart-index-scheduler.js +0 -1
  257. package/packages/server/dist/api.d.ts +0 -3
  258. package/packages/server/dist/api.js +0 -1
  259. package/packages/server/dist/auto-gc.d.ts +0 -30
  260. package/packages/server/dist/auto-gc.js +0 -1
  261. package/packages/server/dist/background-task.d.ts +0 -47
  262. package/packages/server/dist/background-task.js +0 -1
  263. package/packages/server/dist/completions.d.ts +0 -14
  264. package/packages/server/dist/completions.js +0 -1
  265. package/packages/server/dist/compression-interceptor.d.ts +0 -12
  266. package/packages/server/dist/compression-interceptor.js +0 -1
  267. package/packages/server/dist/config.d.ts +0 -16
  268. package/packages/server/dist/cross-workspace.d.ts +0 -43
  269. package/packages/server/dist/cross-workspace.js +0 -1
  270. package/packages/server/dist/curated-manager.d.ts +0 -92
  271. package/packages/server/dist/curated-manager.js +0 -5
  272. package/packages/server/dist/dashboard-static.d.ts +0 -27
  273. package/packages/server/dist/elicitor.d.ts +0 -18
  274. package/packages/server/dist/elicitor.js +0 -1
  275. package/packages/server/dist/idle-timer.d.ts +0 -33
  276. package/packages/server/dist/idle-timer.js +0 -1
  277. package/packages/server/dist/mcp-logging.d.ts +0 -11
  278. package/packages/server/dist/mcp-logging.js +0 -1
  279. package/packages/server/dist/memory-monitor.d.ts +0 -37
  280. package/packages/server/dist/memory-monitor.js +0 -1
  281. package/packages/server/dist/output-schemas.d.ts +0 -244
  282. package/packages/server/dist/output-schemas.js +0 -1
  283. package/packages/server/dist/prompts.d.ts +0 -13
  284. package/packages/server/dist/prompts.js +0 -13
  285. package/packages/server/dist/replay-interceptor.d.ts +0 -23
  286. package/packages/server/dist/replay-interceptor.js +0 -1
  287. package/packages/server/dist/resource-links.d.ts +0 -34
  288. package/packages/server/dist/resource-links.js +0 -1
  289. package/packages/server/dist/resources/curated-resources.d.ts +0 -13
  290. package/packages/server/dist/resources/curated-resources.js +0 -2
  291. package/packages/server/dist/resources/resource-notifier.d.ts +0 -45
  292. package/packages/server/dist/resources/resource-notifier.js +0 -1
  293. package/packages/server/dist/resources/resources.d.ts +0 -8
  294. package/packages/server/dist/resources/resources.js +0 -2
  295. package/packages/server/dist/sampling.d.ts +0 -41
  296. package/packages/server/dist/sampling.js +0 -2
  297. package/packages/server/dist/server.d.ts +0 -63
  298. package/packages/server/dist/server.js +0 -3
  299. package/packages/server/dist/structured-content-guard.d.ts +0 -28
  300. package/packages/server/dist/structured-content-guard.js +0 -1
  301. package/packages/server/dist/task-manager.d.ts +0 -40
  302. package/packages/server/dist/task-manager.js +0 -1
  303. package/packages/server/dist/tool-metadata.d.ts +0 -38
  304. package/packages/server/dist/tool-metadata.js +0 -1
  305. package/packages/server/dist/tool-prefix.d.ts +0 -12
  306. package/packages/server/dist/tool-prefix.js +0 -1
  307. package/packages/server/dist/tool-timeout.d.ts +0 -27
  308. package/packages/server/dist/tool-timeout.js +0 -1
  309. package/packages/server/dist/tools/analyze.tools.d.ts +0 -14
  310. package/packages/server/dist/tools/analyze.tools.js +0 -8
  311. package/packages/server/dist/tools/audit.tool.d.ts +0 -8
  312. package/packages/server/dist/tools/audit.tool.js +0 -1
  313. package/packages/server/dist/tools/brainstorm.tool.d.ts +0 -7
  314. package/packages/server/dist/tools/brainstorm.tool.js +0 -9
  315. package/packages/server/dist/tools/bridge.tools.d.ts +0 -34
  316. package/packages/server/dist/tools/bridge.tools.js +0 -15
  317. package/packages/server/dist/tools/config.tool.d.ts +0 -8
  318. package/packages/server/dist/tools/config.tool.js +0 -12
  319. package/packages/server/dist/tools/context.tools.d.ts +0 -15
  320. package/packages/server/dist/tools/context.tools.js +0 -10
  321. package/packages/server/dist/tools/evolution.tools.d.ts +0 -7
  322. package/packages/server/dist/tools/evolution.tools.js +0 -5
  323. package/packages/server/dist/tools/execution.tools.d.ts +0 -14
  324. package/packages/server/dist/tools/execution.tools.js +0 -4
  325. package/packages/server/dist/tools/flow.tools.d.ts +0 -7
  326. package/packages/server/dist/tools/flow.tools.js +0 -16
  327. package/packages/server/dist/tools/forge.tools.d.ts +0 -13
  328. package/packages/server/dist/tools/forge.tools.js +0 -10
  329. package/packages/server/dist/tools/forget.tool.d.ts +0 -8
  330. package/packages/server/dist/tools/forget.tool.js +0 -1
  331. package/packages/server/dist/tools/graph.tool.d.ts +0 -7
  332. package/packages/server/dist/tools/graph.tool.js +0 -29
  333. package/packages/server/dist/tools/infra.tools.d.ts +0 -10
  334. package/packages/server/dist/tools/infra.tools.js +0 -5
  335. package/packages/server/dist/tools/list.tool.d.ts +0 -7
  336. package/packages/server/dist/tools/list.tool.js +0 -2
  337. package/packages/server/dist/tools/lookup.tool.d.ts +0 -7
  338. package/packages/server/dist/tools/lookup.tool.js +0 -3
  339. package/packages/server/dist/tools/manipulation.tools.d.ts +0 -10
  340. package/packages/server/dist/tools/manipulation.tools.js +0 -4
  341. package/packages/server/dist/tools/onboard.tool.d.ts +0 -12
  342. package/packages/server/dist/tools/onboard.tool.js +0 -2
  343. package/packages/server/dist/tools/persistence.tools.d.ts +0 -10
  344. package/packages/server/dist/tools/persistence.tools.js +0 -5
  345. package/packages/server/dist/tools/policy.tools.d.ts +0 -7
  346. package/packages/server/dist/tools/policy.tools.js +0 -3
  347. package/packages/server/dist/tools/present/browser.d.ts +0 -4
  348. package/packages/server/dist/tools/present/browser.js +0 -93
  349. package/packages/server/dist/tools/present/helpers.d.ts +0 -19
  350. package/packages/server/dist/tools/present/helpers.js +0 -16
  351. package/packages/server/dist/tools/present/html.d.ts +0 -18
  352. package/packages/server/dist/tools/present/html.js +0 -5
  353. package/packages/server/dist/tools/present/index.d.ts +0 -2
  354. package/packages/server/dist/tools/present/index.js +0 -1
  355. package/packages/server/dist/tools/present/markdown.d.ts +0 -32
  356. package/packages/server/dist/tools/present/markdown.js +0 -11
  357. package/packages/server/dist/tools/present/templates.d.ts +0 -14
  358. package/packages/server/dist/tools/present/templates.js +0 -472
  359. package/packages/server/dist/tools/present/tool.d.ts +0 -27
  360. package/packages/server/dist/tools/present/tool.js +0 -39
  361. package/packages/server/dist/tools/present-blocks.d.ts +0 -46
  362. package/packages/server/dist/tools/present-blocks.js +0 -27
  363. package/packages/server/dist/tools/present-charts.d.ts +0 -31
  364. package/packages/server/dist/tools/present-charts.js +0 -34
  365. package/packages/server/dist/tools/present-theme.d.ts +0 -14
  366. package/packages/server/dist/tools/present-theme.js +0 -396
  367. package/packages/server/dist/tools/present-utils.d.ts +0 -11
  368. package/packages/server/dist/tools/present-utils.js +0 -1
  369. package/packages/server/dist/tools/present.tool.d.ts +0 -2
  370. package/packages/server/dist/tools/present.tool.js +0 -1
  371. package/packages/server/dist/tools/produce.tool.d.ts +0 -7
  372. package/packages/server/dist/tools/produce.tool.js +0 -4
  373. package/packages/server/dist/tools/read.tool.d.ts +0 -7
  374. package/packages/server/dist/tools/read.tool.js +0 -2
  375. package/packages/server/dist/tools/reindex.tool.d.ts +0 -11
  376. package/packages/server/dist/tools/reindex.tool.js +0 -9
  377. package/packages/server/dist/tools/remember.tool.d.ts +0 -9
  378. package/packages/server/dist/tools/remember.tool.js +0 -4
  379. package/packages/server/dist/tools/replay.tool.d.ts +0 -6
  380. package/packages/server/dist/tools/replay.tool.js +0 -3
  381. package/packages/server/dist/tools/restore.tool.d.ts +0 -6
  382. package/packages/server/dist/tools/restore.tool.js +0 -3
  383. package/packages/server/dist/tools/search.tool.d.ts +0 -11
  384. package/packages/server/dist/tools/search.tool.js +0 -10
  385. package/packages/server/dist/tools/status.tool.d.ts +0 -28
  386. package/packages/server/dist/tools/status.tool.js +0 -3
  387. package/packages/server/dist/tools/update.tool.d.ts +0 -8
  388. package/packages/server/dist/tools/update.tool.js +0 -1
  389. package/packages/server/dist/tools/utility.tools.d.ts +0 -15
  390. package/packages/server/dist/tools/utility.tools.js +0 -13
  391. package/packages/server/dist/version-check.d.ts +0 -32
  392. package/packages/store/dist/graph-store.interface.d.ts +0 -159
  393. package/packages/store/dist/graph-store.interface.js +0 -1
  394. package/packages/store/dist/lance-store.d.ts +0 -46
  395. package/packages/store/dist/lance-store.js +0 -1
  396. package/packages/store/dist/sqlite-graph-store.d.ts +0 -57
  397. package/packages/store/dist/sqlite-graph-store.js +0 -90
  398. package/packages/store/dist/store-factory.d.ts +0 -12
  399. package/packages/store/dist/store-factory.js +0 -1
  400. package/packages/store/dist/store.interface.d.ts +0 -54
  401. package/packages/store/dist/store.interface.js +0 -1
  402. package/packages/tools/dist/audit.d.ts +0 -65
  403. package/packages/tools/dist/audit.js +0 -6
  404. package/packages/tools/dist/batch.d.ts +0 -23
  405. package/packages/tools/dist/batch.js +0 -1
  406. package/packages/tools/dist/changelog.d.ts +0 -36
  407. package/packages/tools/dist/changelog.js +0 -2
  408. package/packages/tools/dist/check.d.ts +0 -48
  409. package/packages/tools/dist/check.js +0 -2
  410. package/packages/tools/dist/checkpoint.d.ts +0 -19
  411. package/packages/tools/dist/checkpoint.js +0 -1
  412. package/packages/tools/dist/codemod.d.ts +0 -39
  413. package/packages/tools/dist/codemod.js +0 -2
  414. package/packages/tools/dist/compact.d.ts +0 -47
  415. package/packages/tools/dist/compact.js +0 -3
  416. package/packages/tools/dist/compress-output.d.ts +0 -38
  417. package/packages/tools/dist/compress-output.js +0 -1
  418. package/packages/tools/dist/compression/delta-cache.d.ts +0 -29
  419. package/packages/tools/dist/compression/delta-cache.js +0 -1
  420. package/packages/tools/dist/compression/engine.d.ts +0 -34
  421. package/packages/tools/dist/compression/engine.js +0 -4
  422. package/packages/tools/dist/compression/litm.d.ts +0 -20
  423. package/packages/tools/dist/compression/litm.js +0 -1
  424. package/packages/tools/dist/compression/mmr.d.ts +0 -24
  425. package/packages/tools/dist/compression/mmr.js +0 -1
  426. package/packages/tools/dist/compression/rules/docker.d.ts +0 -11
  427. package/packages/tools/dist/compression/rules/docker.js +0 -3
  428. package/packages/tools/dist/compression/rules/generic.d.ts +0 -11
  429. package/packages/tools/dist/compression/rules/generic.js +0 -3
  430. package/packages/tools/dist/compression/rules/git.d.ts +0 -11
  431. package/packages/tools/dist/compression/rules/git.js +0 -3
  432. package/packages/tools/dist/compression/rules/index.d.ts +0 -14
  433. package/packages/tools/dist/compression/rules/index.js +0 -1
  434. package/packages/tools/dist/compression/rules/kubectl.d.ts +0 -11
  435. package/packages/tools/dist/compression/rules/kubectl.js +0 -3
  436. package/packages/tools/dist/compression/rules/lint.d.ts +0 -11
  437. package/packages/tools/dist/compression/rules/lint.js +0 -3
  438. package/packages/tools/dist/compression/rules/npm.d.ts +0 -11
  439. package/packages/tools/dist/compression/rules/npm.js +0 -3
  440. package/packages/tools/dist/compression/rules/test-runner.d.ts +0 -11
  441. package/packages/tools/dist/compression/rules/test-runner.js +0 -3
  442. package/packages/tools/dist/compression/scoring.d.ts +0 -26
  443. package/packages/tools/dist/compression/scoring.js +0 -1
  444. package/packages/tools/dist/compression/types.d.ts +0 -61
  445. package/packages/tools/dist/compression/types.js +0 -1
  446. package/packages/tools/dist/config-extractor.d.ts +0 -9
  447. package/packages/tools/dist/config-extractor.js +0 -7
  448. package/packages/tools/dist/data-transform.d.ts +0 -12
  449. package/packages/tools/dist/data-transform.js +0 -1
  450. package/packages/tools/dist/dead-symbols.d.ts +0 -28
  451. package/packages/tools/dist/dead-symbols.js +0 -2
  452. package/packages/tools/dist/delegate.d.ts +0 -36
  453. package/packages/tools/dist/delegate.js +0 -1
  454. package/packages/tools/dist/diagram-builder.d.ts +0 -9
  455. package/packages/tools/dist/diagram-builder.js +0 -9
  456. package/packages/tools/dist/diff-parse.d.ts +0 -28
  457. package/packages/tools/dist/diff-parse.js +0 -3
  458. package/packages/tools/dist/digest.d.ts +0 -55
  459. package/packages/tools/dist/digest.js +0 -6
  460. package/packages/tools/dist/dogfood-log.d.ts +0 -49
  461. package/packages/tools/dist/dogfood-log.js +0 -2
  462. package/packages/tools/dist/encode.d.ts +0 -16
  463. package/packages/tools/dist/encode.js +0 -1
  464. package/packages/tools/dist/env-info.d.ts +0 -30
  465. package/packages/tools/dist/env-info.js +0 -1
  466. package/packages/tools/dist/eval.d.ts +0 -15
  467. package/packages/tools/dist/eval.js +0 -2
  468. package/packages/tools/dist/evidence-map.d.ts +0 -92
  469. package/packages/tools/dist/evidence-map.js +0 -2
  470. package/packages/tools/dist/file-cache.d.ts +0 -41
  471. package/packages/tools/dist/file-cache.js +0 -3
  472. package/packages/tools/dist/file-summary.d.ts +0 -52
  473. package/packages/tools/dist/file-summary.js +0 -2
  474. package/packages/tools/dist/file-walk.d.ts +0 -6
  475. package/packages/tools/dist/file-walk.js +0 -1
  476. package/packages/tools/dist/find-examples.d.ts +0 -29
  477. package/packages/tools/dist/find-examples.js +0 -3
  478. package/packages/tools/dist/find.d.ts +0 -49
  479. package/packages/tools/dist/find.js +0 -1
  480. package/packages/tools/dist/forge-classify.d.ts +0 -44
  481. package/packages/tools/dist/forge-classify.js +0 -2
  482. package/packages/tools/dist/forge-ground.d.ts +0 -61
  483. package/packages/tools/dist/forge-ground.js +0 -1
  484. package/packages/tools/dist/git-context.d.ts +0 -25
  485. package/packages/tools/dist/git-context.js +0 -3
  486. package/packages/tools/dist/graph-query.d.ts +0 -98
  487. package/packages/tools/dist/graph-query.js +0 -1
  488. package/packages/tools/dist/guide.d.ts +0 -25
  489. package/packages/tools/dist/guide.js +0 -1
  490. package/packages/tools/dist/health.d.ts +0 -16
  491. package/packages/tools/dist/health.js +0 -2
  492. package/packages/tools/dist/http-request.d.ts +0 -25
  493. package/packages/tools/dist/http-request.js +0 -1
  494. package/packages/tools/dist/lane.d.ts +0 -41
  495. package/packages/tools/dist/lane.js +0 -6
  496. package/packages/tools/dist/measure.d.ts +0 -42
  497. package/packages/tools/dist/measure.js +0 -2
  498. package/packages/tools/dist/onboard-utils.d.ts +0 -12
  499. package/packages/tools/dist/onboard-utils.js +0 -1
  500. package/packages/tools/dist/onboard.d.ts +0 -50
  501. package/packages/tools/dist/onboard.js +0 -18
  502. package/packages/tools/dist/parse-output.d.ts +0 -84
  503. package/packages/tools/dist/parse-output.js +0 -2
  504. package/packages/tools/dist/path-resolver.d.ts +0 -14
  505. package/packages/tools/dist/path-resolver.js +0 -1
  506. package/packages/tools/dist/process-manager.d.ts +0 -20
  507. package/packages/tools/dist/process-manager.js +0 -1
  508. package/packages/tools/dist/queue.d.ts +0 -40
  509. package/packages/tools/dist/queue.js +0 -1
  510. package/packages/tools/dist/regex-test.d.ts +0 -33
  511. package/packages/tools/dist/regex-test.js +0 -1
  512. package/packages/tools/dist/regex-utils.d.ts +0 -8
  513. package/packages/tools/dist/regex-utils.js +0 -1
  514. package/packages/tools/dist/rename.d.ts +0 -31
  515. package/packages/tools/dist/rename.js +0 -2
  516. package/packages/tools/dist/replay.d.ts +0 -59
  517. package/packages/tools/dist/replay.js +0 -4
  518. package/packages/tools/dist/response-envelope.d.ts +0 -43
  519. package/packages/tools/dist/response-envelope.js +0 -1
  520. package/packages/tools/dist/restore-points.d.ts +0 -22
  521. package/packages/tools/dist/restore-points.js +0 -1
  522. package/packages/tools/dist/schema-validate.d.ts +0 -25
  523. package/packages/tools/dist/schema-validate.js +0 -1
  524. package/packages/tools/dist/scope-map.d.ts +0 -51
  525. package/packages/tools/dist/scope-map.js +0 -1
  526. package/packages/tools/dist/snippet.d.ts +0 -35
  527. package/packages/tools/dist/snippet.js +0 -1
  528. package/packages/tools/dist/stash.d.ts +0 -14
  529. package/packages/tools/dist/stash.js +0 -1
  530. package/packages/tools/dist/stratum-card.d.ts +0 -30
  531. package/packages/tools/dist/stratum-card.js +0 -4
  532. package/packages/tools/dist/symbol.d.ts +0 -45
  533. package/packages/tools/dist/symbol.js +0 -3
  534. package/packages/tools/dist/synthesis-engine.d.ts +0 -13
  535. package/packages/tools/dist/synthesis-engine.js +0 -6
  536. package/packages/tools/dist/test-run.d.ts +0 -28
  537. package/packages/tools/dist/test-run.js +0 -2
  538. package/packages/tools/dist/text-utils.d.ts +0 -24
  539. package/packages/tools/dist/text-utils.js +0 -2
  540. package/packages/tools/dist/time-utils.d.ts +0 -20
  541. package/packages/tools/dist/time-utils.js +0 -1
  542. package/packages/tools/dist/trace.d.ts +0 -43
  543. package/packages/tools/dist/trace.js +0 -2
  544. package/packages/tools/dist/truncation.d.ts +0 -66
  545. package/packages/tools/dist/truncation.js +0 -11
  546. package/packages/tools/dist/watch.d.ts +0 -32
  547. package/packages/tools/dist/watch.js +0 -1
  548. package/packages/tools/dist/web-fetch.d.ts +0 -47
  549. package/packages/tools/dist/web-fetch.js +0 -8
  550. package/packages/tools/dist/web-search.d.ts +0 -25
  551. package/packages/tools/dist/web-search.js +0 -1
  552. package/packages/tools/dist/workset.d.ts +0 -47
  553. package/packages/tools/dist/workset.js +0 -1
  554. package/scaffold/__tests__/copilot-inline-shared-protocols.test.mjs +0 -39
  555. /package/packages/server/dist/{config.js → config-C5IU9Lau.js} +0 -0
  556. /package/packages/server/dist/{dashboard-static.js → dashboard-static-BfIe0Si1.js} +0 -0
  557. /package/packages/server/dist/{version-check.js → version-check-D4j0Pykd.js} +0 -0
@@ -1 +1,54 @@
1
- import{DependencyAnalyzer as e}from"./dependency-analyzer.js";import{BlastRadiusAnalyzer as t}from"./blast-radius-analyzer.js";import{StructureAnalyzer as n}from"./structure-analyzer.js";import{DiagramGenerator as r}from"./diagram-generator.js";import{EntryPointAnalyzer as i}from"./entry-point-analyzer.js";import{KnowledgeProducer as a}from"./knowledge-producer.js";import{PatternAnalyzer as o}from"./pattern-analyzer.js";import{extractRegexCallGraph as s}from"./regex-call-graph.js";import{SymbolAnalyzer as c}from"./symbol-analyzer.js";import{extractTsCallGraph as l}from"./ts-call-graph.js";export{t as BlastRadiusAnalyzer,e as DependencyAnalyzer,r as DiagramGenerator,i as EntryPointAnalyzer,a as KnowledgeProducer,o as PatternAnalyzer,n as StructureAnalyzer,c as SymbolAnalyzer,s as extractRegexCallGraph,l as extractTsCallGraph};
1
+ import{access as e,readFile as t,readdir as n,stat as r}from"node:fs/promises";import{basename as i,dirname as a,extname as o,join as s,relative as c,resolve as l}from"node:path";import{SUPPORTED_EXTENSIONS as u,WasmRuntime as d,detectEntryPoints as f,detectPatterns as p,extractCalls as m,extractImports as h,extractSymbols as g}from"../../chunker/dist/index.js";import{existsSync as _,readFileSync as v,readdirSync as y}from"node:fs";const ee=new Set([`.ts`,`.tsx`,`.js`,`.jsx`,`.mjs`,`.cjs`,`.py`,`.java`,`.go`,`.cs`,`.kt`,`.scala`,`.rb`,`.rs`,`.php`,`.swift`]),te=[{regex:/import\s+(?:(?:type\s+)?(?:(?:\{[^}]*\}|[\w*]+)\s+from\s+)?)['"]([^'"]+)['"]/g,confidence:`high`},{regex:/import\(\s*['"]([^'"]+)['"]\s*\)/g,confidence:`medium`},{regex:/require\(\s*['"]([^'"]+)['"]\s*\)/g,confidence:`medium`},{regex:/^from\s+([\w.]+)\s+import\b/gm,confidence:`high`,lang:`python`},{regex:/^import\s+([\w.]+)\s*$/gm,confidence:`high`,lang:`python`},{regex:/^import\s+(?:static\s+)?([\w.]+(?:\.\*)?)\s*;/gm,confidence:`high`,lang:`java`},{regex:/(?:^import\s+|^\s+)[""]([^""]+)[""]/gm,confidence:`high`,lang:`go`},{regex:/^using\s+(?:static\s+)?([\w.]+)\s*;/gm,confidence:`high`,lang:`csharp`},{regex:/^use\s+([\w:]+(?:::\w+)*)/gm,confidence:`high`,lang:`rust`},{regex:/^use\s+([\w\\]+)\s*;/gm,confidence:`high`,lang:`php`},{regex:/require(?:_relative)?\s+['"]([^'"]+)['"]/g,confidence:`medium`,lang:`ruby`},{regex:/^import\s+(\w+)\s*$/gm,confidence:`high`,lang:`swift`}],b=new Set([`node_modules`,`.git`,`dist`,`build`,`coverage`,`.turbo`,`.cache`,`cdk.out`]),ne=[/\.(test|spec)\.[jt]sx?$/,/\/__tests__\//,/\/test\//,/\/tests\//],x={".ts":`js`,".tsx":`js`,".js":`js`,".jsx":`js`,".mjs":`js`,".cjs":`js`,".py":`python`,".java":`java`,".kt":`java`,".scala":`java`,".go":`go`,".cs":`csharp`,".rs":`rust`,".php":`php`,".rb":`ruby`,".swift":`swift`};function re(e,t){return!t||t===`js`?!e.startsWith(`.`)&&!e.startsWith(`/`):t===`python`?!e.startsWith(`.`):t===`java`?!e.startsWith(`com.`)||e.startsWith(`com.amazonaws`)||e.startsWith(`com.google`)||e.startsWith(`com.fasterxml`):t===`go`?e.includes(`.`)&&!e.startsWith(`.`):t===`csharp`?e.startsWith(`System`)||e.startsWith(`Microsoft`)||e.startsWith(`Newtonsoft`)||e.startsWith(`Amazon`):t===`rust`?!e.startsWith(`crate::`)&&!e.startsWith(`self::`)&&!e.startsWith(`super::`):!0}function S(e){return ne.some(t=>t.test(e))}var C=class{name=`dependencies`;workspacePackages=new Map;async analyze(e,n={}){let{format:r=`markdown`}=n,i=Date.now();this.workspacePackages=await this.buildWorkspaceMap(e);let a=!1;try{await d.ensure(),a=!0}catch{}let s=await this.collectFiles(e),l=[];for(let n of s){let r=await t(n,`utf-8`),i=o(n).toLowerCase(),s=c(e,n).replace(/\\/g,`/`);if(a&&u.has(i)){let t=await h(r,i,s);if(t.length>0)l.push(...t);else{let t=this.extractImportsRegex(r,n,e);l.push(...t)}}else{let t=this.extractImportsRegex(r,n,e);l.push(...t)}}let f=this.groupExternalDeps(l),p=this.groupInternalDeps(l,e),m=this.buildReverseGraph(l,e),g=this.buildTestCoverage(l,e);return{output:r===`json`?JSON.stringify({external:f,internal:p,reverseGraph:m,testCoverage:g},null,2):r===`mermaid`?this.formatMermaid(p):this.formatMarkdown(f,p,e,g),data:{external:f,internal:p,reverseGraph:m,testCoverage:g,totalImports:l.length},meta:{analyzedAt:new Date().toISOString(),scope:e,fileCount:s.length,durationMs:Date.now()-i}}}async collectFiles(e){let t=[],i=async e=>{if(!(await r(e).catch(()=>null))?.isDirectory())return;let a=await n(e,{withFileTypes:!0});for(let n of a){if(b.has(n.name)||n.name.startsWith(`.`))continue;let r=s(e,n.name);n.isDirectory()?await i(r):ee.has(o(n.name))&&t.push(r)}};return await i(e),t}extractImportsRegex(e,t,n){let r=[],i=x[o(t).toLowerCase()];for(let a of te){if(a.lang&&a.lang!==i||!a.lang&&i&&i!==`js`)continue;let o=new RegExp(a.regex.source,a.regex.flags),s;for(;(s=o.exec(e))!==null;){let e=s[1],o=re(e,i);r.push({source:e,specifiers:[],filePath:c(n,t).replace(/\\/g,`/`),isExternal:o,confidence:a.confidence})}}return r}groupExternalDeps(e){let t={};for(let n of e){if(!n.isExternal)continue;let e=x[o(n.filePath).toLowerCase()],r;if(e===`java`){let e=n.source.split(`.`);for(;e.length>1;){let t=e[e.length-1];if(t===`*`||/^[A-Z]/.test(t))e.pop();else break}r=e.length>=2?e.slice(0,2).join(`.`):e.join(`.`)}else if(e===`python`)r=n.source.split(`.`)[0];else if(e===`go`)r=n.source;else if(e===`csharp`){let e=n.source.split(`.`);r=e.length>=2?e.slice(0,2).join(`.`):n.source}else r=n.source.startsWith(`@`)?n.source.split(`/`).slice(0,2).join(`/`):n.source.split(`/`)[0];t[r]||(t[r]={count:0,confidence:n.confidence,usedBy:new Set}),t[r].count++,t[r].usedBy.add(n.filePath),n.confidence===`high`?t[r].confidence=`high`:n.confidence===`medium`&&t[r].confidence===`low`&&(t[r].confidence=`medium`)}let n={};for(let[e,r]of Object.entries(t))n[e]={count:r.count,confidence:r.confidence,usedBy:[...r.usedBy]};return n}groupInternalDeps(e,t){let n={};for(let t of e)t.isExternal||(n[t.filePath]||(n[t.filePath]=new Set),n[t.filePath].add(t.source));let r={};for(let[e,t]of Object.entries(n))r[e]=[...t];return r}buildReverseGraph(e,t){let n={};for(let t of e){let e=a(t.filePath),r=this.resolveImportPath(t.source,e);r&&(n[r]||(n[r]=new Set),n[r].add(t.filePath))}let r={};for(let[e,t]of Object.entries(n))r[e]=[...t];return r}buildTestCoverage(e,t){let n={};for(let t of e){if(!S(t.filePath))continue;let e=a(t.filePath),r=this.resolveImportPath(t.source,e);!r||S(r)||(n[r]||(n[r]=new Set),n[r].add(t.filePath))}let r={};for(let[e,t]of Object.entries(n))r[e]=[...t];return r}resolveImportPath(e,t){if(e.startsWith(`.`))return s(t,e).replace(/\\/g,`/`).replace(/\.[jt]sx?$/,``);let n=e.startsWith(`@`)?e.split(`/`).slice(0,2).join(`/`):e.split(`/`)[0],r=this.workspacePackages.get(n);return r?r.replace(/\.[jt]sx?$/,``):null}async buildWorkspaceMap(e){let r=new Map;for(let i of[`packages`,`functions`,`libs`,`apps`,`cdk`]){let a=s(e,i);try{let i=await n(a,{withFileTypes:!0});for(let n of i)if(!(!n.isDirectory()||b.has(n.name)))try{let i=s(a,n.name,`package.json`),o=JSON.parse(await t(i,`utf-8`));if(o.name){let t=o.main??o.exports?.[`.`]??`src/index.ts`,i=c(e,l(a,n.name,t)).replace(/\\/g,`/`);r.set(o.name,i)}}catch{}}catch{}}return r}formatMarkdown(e,t,n,r){let i=[];i.push(`## Dependencies: ${n}\n`);let a=Object.entries(e).sort((e,t)=>t[1].count-e[1].count),o=a.length,s=a.reduce((e,[,t])=>e+t.count,0),c=a.slice(0,5).map(([e])=>e);i.push(`**${o} external packages**, **${s} total imports**, **${Object.keys(t).length} files** with internal imports.\n`),c.length>0&&i.push(`**Top dependencies**: ${c.join(`, `)}\n`),i.push(`### External Dependencies
2
+ `),i.push(`| Package | Imports | Used By |`),i.push(`|---------|---------|---------|`);for(let[e,t]of a)i.push(`| ${e} | ${t.count} | ${t.usedBy.length} ${t.usedBy.length===1?`file`:`files`} |`);if(r&&Object.keys(r).length>0){let e=Object.keys(r).length,n=Object.keys(t).filter(e=>!S(e)&&!r[e.replace(/\\.[jt]sx?$/,``)]);i.push(`
3
+ ### Test Coverage Summary
4
+ `),i.push(`**${e} source modules** with test coverage.`),n.length>0&&i.push(`**${n.length} source files** with no detected test coverage.`);let a=Object.entries(r).sort((e,t)=>t[1].length-e[1].length);i.push(`
5
+ **Most-tested modules:**
6
+ `);for(let[e,t]of a.slice(0,10)){let n=e.replace(/\/dist\/[^/]*$/,`/src/index`).replace(/\.mjs$/,`.ts`);i.push(`- ${n} (${t.length} ${t.length===1?`test`:`tests`})`)}}return i.join(`
7
+ `)}formatMermaid(e){let t=[`graph LR`],n=e=>e.replace(/[^a-zA-Z0-9]/g,`_`);for(let[r,i]of Object.entries(e).slice(0,40)){let e=n(r);for(let a of i){let i=n(a);t.push(` ${e}["${r}"] --> ${i}["${a}"]`)}}return t.join(`
8
+ `)}},ie=class{name=`blast-radius`;depAnalyzer=new C;async analyze(e,t){let{files:n,maxDepth:r=5,format:i=`markdown`}=t,a=Date.now(),o=(await this.depAnalyzer.analyze(e,{format:`json`})).data,s=o.reverseGraph??{},c=o.testCoverage??{},l=new Map,u=[];for(let e of n){l.set(e,{path:e,reason:`changed`,depth:0});let t=e.replace(/\.[jt]sx?$/,``);u.push({path:t,depth:0})}for(;u.length>0;){let e=u.shift();if(!e)break;let{path:t,depth:n}=e;if(n>=r)continue;let i=s[t]??[];for(let e of i){if(l.has(e))continue;let t=n===0?`direct-importer`:`transitive-importer`;l.set(e,{path:e,reason:t,depth:n+1});let r=e.replace(/\.[jt]sx?$/,``);u.push({path:r,depth:n+1})}}let d=new Set;for(let[e]of l){let t=c[e.replace(/\.[jt]sx?$/,``)]??[];for(let e of t)l.has(e)||(d.add(e),l.set(e,{path:e,reason:`test`,depth:999}))}let f=[...l.values()].sort((e,t)=>e.depth-t.depth);return{output:i===`json`?JSON.stringify({changedFiles:n,affected:f},null,2):this.formatMarkdown(n,f,s),data:{changedFiles:n,affected:f},meta:{analyzedAt:new Date().toISOString(),scope:e,fileCount:f.length,durationMs:Date.now()-a}}}formatMarkdown(e,t,n){let r=[];r.push(`## Blast Radius Analysis
9
+ `),r.push(`**Changed files:** ${e.length}`),r.push(`**Total affected:** ${t.length}\n`);let i=t.filter(e=>e.reason===`changed`);if(i.length>0){r.push(`### Changed Files
10
+ `);for(let e of i)r.push(`- \`${e.path}\``)}let a=t.filter(e=>e.reason===`direct-importer`);if(a.length>0){r.push(`\n### Direct Importers (${a.length} files)\n`);for(let e of a)r.push(`- \`${e.path}\``)}let o=t.filter(e=>e.reason===`transitive-importer`);if(o.length>0){r.push(`\n### Transitive Importers (${o.length} files)\n`);for(let e of o.slice(0,20))r.push(`- \`${e.path}\` (depth ${e.depth})`);o.length>20&&r.push(`- ... and ${o.length-20} more`)}let s=t.filter(e=>e.reason===`test`);if(s.length>0){r.push(`\n### Affected Tests (${s.length} files)\n`);for(let e of s)r.push(`- \`${e.path}\``)}return r.push(`
11
+ ### Review Summary
12
+ `),r.push(`| Category | Count |`),r.push(`|----------|-------|`),r.push(`| Changed | ${i.length} |`),r.push(`| Direct importers | ${a.length} |`),r.push(`| Transitive importers | ${o.length} |`),r.push(`| Affected tests | ${s.length} |`),r.push(`| **Total review scope** | **${t.length}** |`),r.join(`
13
+ `)}};const ae={src:`Application source`,lib:`Library code`,dist:`Build output`,build:`Build output`,test:`Tests`,tests:`Tests`,spec:`Tests`,__tests__:`Tests`,docs:`Documentation`,scripts:`Build/utility scripts`,config:`Configuration`,handlers:`Entry point handlers`,controllers:`HTTP controllers`,routes:`API routes`,middleware:`Middleware`,services:`Business logic services`,domain:`Domain/business logic`,infrastructure:`External integrations`,adapters:`Adapter implementations`,ports:`Port interfaces`,models:`Data models`,entities:`Domain entities`,repositories:`Data access`,utils:`Utilities`,helpers:`Helper functions`,types:`Type definitions`,interfaces:`Interface definitions`,constants:`Constants`,cdk:`CDK infrastructure`,stacks:`CDK stacks`,constructs:`CDK constructs`,lambdas:`Lambda functions`,components:`UI components`,hooks:`React hooks`,pages:`Page components`,layouts:`Layout components`,store:`State management`,assets:`Static assets`,styles:`Stylesheets`,fixtures:`Test fixtures`,mocks:`Test mocks`,migrations:`Database migrations`},oe={".ts":`TypeScript`,".tsx":`React TSX`,".js":`JavaScript`,".jsx":`React JSX`,".mjs":`ES Module`,".cjs":`CommonJS`,".json":`JSON`,".yaml":`YAML`,".yml":`YAML`,".md":`Markdown`,".mdx":`MDX`,".py":`Python`,".go":`Go`,".rs":`Rust`,".java":`Java`,".sh":`Shell`,".ps1":`PowerShell`,".css":`CSS`,".scss":`SCSS`,".html":`HTML`,".sql":`SQL`,".graphql":`GraphQL`,".proto":`Protocol Buffers`,".toml":`TOML`,".env":`Environment`},w=new Set([`node_modules`,`.git`,`dist`,`build`,`.next`,`.nuxt`,`coverage`,`.turbo`,`.cache`,`__pycache__`,`.venv`,`.terraform`,`cdk.out`]),T=new Set(`.ts,.tsx,.js,.jsx,.mjs,.cjs,.java,.kt,.kts,.scala,.py,.go,.rs,.rb,.php,.swift,.cs,.c,.cpp,.h,.hpp,.sh,.bash,.ps1,.sql,.graphql,.gql,.proto,.json,.yaml,.yml,.toml,.env,.ini,.cfg,.xml,.pom,.gradle,.tf,.hcl,.lock,.mjs`.split(`,`)),E=new Set([`__tests__`,`test`,`tests`,`spec`,`__mocks__`,`__fixtures__`,`fixtures`,`mocks`]);var D=class{name=`structure`;async analyze(e,t={}){let{format:n=`markdown`,maxDepth:r=6,sourceOnly:i=!1,maxTokens:a}=t,o=Date.now(),s=await this.buildTree(e,0,r,i),c=this.computeStats(s);return{output:n===`json`?JSON.stringify({tree:s,stats:c},null,2):this.formatMarkdownWithBudget(s,c,e,a),data:{tree:s,stats:c},meta:{analyzedAt:new Date().toISOString(),scope:e,fileCount:c.totalFiles,durationMs:Date.now()-o}}}async buildTree(e,t,a,c){if(!(await r(e)).isDirectory())return{name:i(e),type:`file`,children:[]};let l=await n(e,{withFileTypes:!0}),u=[];for(let n of l.sort((e,t)=>e.name.localeCompare(t.name))){if(w.has(n.name)||n.name.startsWith(`.`)&&n.name!==`.env.example`)continue;let i=s(e,n.name);if(n.isDirectory()&&t<a){let e=await this.buildTree(i,t+1,a,c);if(c&&(!e.children||e.children.length===0))continue;u.push(e)}else if(n.isFile()){let e=o(n.name).toLowerCase();if(c&&e&&!T.has(e)||c&&!e)continue;let t=await r(i);u.push({name:n.name,type:`file`,language:oe[e]??(e||`unknown`),size:t.size})}}let d=e.split(/[/\\]/).pop()??e;return{name:d,type:`directory`,purpose:ae[d.toLowerCase()],children:u}}computeStats(e){let t={},n=0,r=0,i=e=>{if(e.type===`file`){n++,r+=e.size??0;let i=e.language??`unknown`;t[i]=(t[i]??0)+1}e.children?.forEach(i)};return i(e),{totalFiles:n,totalSize:r,languages:t}}formatMarkdownWithBudget(e,t,n,r){let i=this.formatMarkdown(e,t,n,1);if(!r||this.estimateTokens(i)<=r)return i;let a=this.formatMarkdown(e,t,n,2);return this.estimateTokens(a)<=r?`${a}\n\n> _Tree pruned to Level 2: leaf directories collapsed to fit token budget._`:this.formatMarkdown(e,t,n,3)+`
14
+
15
+ > _Tree pruned to Level 3: top-level directories only to fit token budget._`}formatMarkdown(e,t,n,r=1){let i=[];return i.push(`## Project Structure: ${n}\n`),i.push(`**${t.totalFiles} files** | Languages: ${Object.entries(t.languages).map(([e,t])=>`${e} (${t})`).join(`, `)}\n`),i.push("```"),r===3?this.renderTreeLevel3(e,i):this.renderTree(e,``,i,r),i.push("```"),i.join(`
16
+ `)}renderTree(e,t,n,r=1){let i=e.purpose?` ── ${e.purpose}`:``;if(e.type===`directory`){let a=e.name.toLowerCase();if(E.has(a)&&e.children){let r=this.countFiles(e);n.push(`${t}${e.name}/${i} (${r} files)`);return}if(r>=2&&this.isLeafDir(e)){n.push(`${t}${e.name}/${i} (${this.leafDirSummary(e)})`);return}n.push(`${t}${e.name}/${i}`),e.children?.forEach((i,a)=>{let o=a===(e.children?.length??0)-1,s=o?`└── `:`├── `,c=t+(o?` `:`│ `);i.type===`directory`?this.renderTree(i,c,n,r):n.push(`${t}${s}${i.name}`)})}else n.push(`${t}${e.name}`)}renderTreeLevel3(e,t){for(let n of e.children??[]){let e=n.purpose?` ── ${n.purpose}`:``;if(n.type===`directory`){let r=this.countFiles(n);t.push(`${n.name}/${e} (${r} files)`)}else t.push(n.name)}}estimateTokens(e){return Math.ceil(e.length/4)}isLeafDir(e){return e.type===`directory`&&(e.children??[]).every(e=>e.type===`file`)}leafDirSummary(e){let t={};for(let n of e.children??[]){let e=n.language??`unknown`;t[e]=(t[e]??0)+1}return`${Object.values(t).reduce((e,t)=>e+t,0)} files — ${Object.entries(t).map(([e,t])=>`${e} (${t})`).join(`, `)}`}countFiles(e){return e.type===`file`?1:(e.children??[]).reduce((e,t)=>e+this.countFiles(t),0)}},se=class{name=`diagrams`;structureAnalyzer=new D;dependencyAnalyzer=new C;async analyze(e,t={}){let{diagramType:n=`architecture`}=t,r=Date.now(),i;switch(n){case`dependencies`:i=await this.generateDependencyDiagram(e);break;default:i=await this.generateArchitectureDiagram(e);break}return{output:i,data:{diagramType:n},meta:{analyzedAt:new Date().toISOString(),scope:e,fileCount:0,durationMs:Date.now()-r}}}async generateArchitectureDiagram(e){let t=(await this.structureAnalyzer.analyze(e,{format:`json`,maxDepth:4})).data.tree,n=await this.dependencyAnalyzer.analyze(e,{format:`json`}),r=n.data,i=["```mermaid",`graph TB`],a=(t.children??[]).filter(e=>e.type===`directory`).slice(0,15);for(let e of a){let t=e.name.replace(/[^a-zA-Z0-9]/g,`_`),n=(e.children??[]).filter(e=>e.type===`directory`);if(n.length>0){i.push(` subgraph ${t}["${e.name}/"]`);for(let e of n.slice(0,12)){let n=`${t}_${e.name.replace(/[^a-zA-Z0-9]/g,`_`)}`,r=Array.isArray(e.children)?e.children.length:0;i.push(` ${n}["${e.name}/ (${r})"]`)}i.push(` end`)}else{let n=Array.isArray(e.children)?e.children.length:0;i.push(` ${t}["${e.name}/ (${n} files)"]`)}}let o=new Set;if(r.internal)for(let[e,t]of Object.entries(r.internal)){let n=e.split(`/`)[0]?.replace(/[^a-zA-Z0-9]/g,`_`);for(let e of t){if(e.startsWith(`.`))continue;let t=e.split(`/`)[0]?.replace(/[^a-zA-Z0-9]/g,`_`);if(n&&t&&n!==t){let e=`${n}->${t}`;o.has(e)||(o.add(e),i.push(` ${n} --> ${t}`))}}}let c=n.data;if(c.external){let t=new Map;for(let n of[`packages`,`apps`,`libs`,`services`,`functions`])try{for(let r of y(s(e,n),{withFileTypes:!0}))if(r.isDirectory())try{let i=JSON.parse(v(s(e,n,r.name,`package.json`),`utf-8`));i.name&&t.set(i.name,`${n}/${r.name}`)}catch{}}catch{}for(let[e,n]of Object.entries(c.external)){let r=t.get(e);if(!r)continue;let a=r.split(`/`)[0]?.replace(/[^a-zA-Z0-9]/g,`_`),s=Array.isArray(n)?n:n.usedBy;for(let e of s??[]){let t=e.split(`/`)[0]?.replace(/[^a-zA-Z0-9]/g,`_`);if(t&&a&&t!==a){let e=`${t}->${a}`;o.has(e)||(o.add(e),i.push(` ${t} --> ${a}`))}}}}return i.push("```"),i.join(`
17
+ `)}async generateDependencyDiagram(e){return`\`\`\`mermaid\n${(await this.dependencyAnalyzer.analyze(e,{format:`mermaid`})).output}\n\`\`\``}};const O=new Set([`node_modules`,`.git`,`dist`,`build`,`coverage`,`.turbo`,`.cache`,`cdk.out`,`__pycache__`,`.venv`,`target`,`bin`,`obj`,`.gradle`,`venv`,`env`]),ce=new Set([`test`,`tests`,`__tests__`,`spec`,`specs`,`test-utils`]),le=[/export\s+const\s+(handler|main)\s*(?::[^=]*)?\s*=/,/export\s+(?:async\s+)?function\s+(handler|main)\s*\(/,/export\s+const\s+(\w+Handler)\s*(?::[^=]*)?\s*=/,/export\s+default\s+app/,/^app\s*=\s*(?:Flask|FastAPI)\s*\(/m,/^urlpatterns\s*=\s*\[/m,/^if\s+__name__\s*==\s*['"]__main__['"]:/m,/public\s+static\s+void\s+main\s*\(\s*String/,/@SpringBootApplication/,/^func\s+main\s*\(\s*\)/m],ue=/export\s+(?:default\s+)?class\s+(\w+)\s+extends\s+(?:Construct|Stack|NestedStack|Stage)/,de=[/from\s+['"]vitest['"]/,/from\s+['"]jest['"]/,/from\s+['"]mocha['"]/,/import\s+.*['"]@jest\/globals['"]/,/require\s*\(\s*['"](?:vitest|jest|mocha)['"]\s*\)/],fe=[{regex:/SqsEventSource|SQSEvent|sqs/i,trigger:`SQS`},{regex:/SnsEventSource|SNSEvent|sns/i,trigger:`SNS`},{regex:/ApiGateway|APIGatewayEvent|httpApi|restApi/i,trigger:`API Gateway`},{regex:/ScheduleExpression|EventBridgeRule|schedule/i,trigger:`EventBridge Schedule`},{regex:/S3EventSource|S3Event|s3/i,trigger:`S3`},{regex:/DynamoEventSource|DynamoDBStream/i,trigger:`DynamoDB Stream`},{regex:/@RequestMapping|@GetMapping|@PostMapping/i,trigger:`HTTP Endpoint`},{regex:/http\.ListenAndServe|gin\.Default|echo\.New/i,trigger:`HTTP Server`},{regex:/app\.route\(|@app\.get|@app\.post|@router\./i,trigger:`HTTP Route`}];var pe=class{name=`entry-points`;async analyze(e,t={}){let n=Date.now(),r=[],i=await this.findWorkspacePackages(e);if(i.length>0)for(let t of i){let n=await this.fromPackageJson(t,e);r.push(...n)}else{let t=await this.fromPackageJson(e,e);r.push(...t)}let a=await this.fromHandlerExports(e);return r.push(...a),{output:this.formatMarkdown(r,e),data:{entryPoints:r,total:r.length},meta:{analyzedAt:new Date().toISOString(),scope:e,fileCount:r.length,durationMs:Date.now()-n}}}async fromPackageJson(n,r){let i=[],a=c(r,n).replace(/\\/g,`/`)||`.`;try{let r=s(n,`package.json`);await e(r);let o=JSON.parse(await t(r,`utf-8`)),c=a===`.`?``:`${a}/`;if(o.main&&i.push({name:o.name?`${o.name}:main`:`main`,type:`main`,filePath:`${c}${o.main}`}),o.bin){let e=typeof o.bin==`string`?{[o.name??`cli`]:o.bin}:o.bin;for(let[t,n]of Object.entries(e))i.push({name:t,type:`cli`,filePath:`${c}${n}`})}if(o.exports){let e=this.parseExportsField(o.exports,o.name??a,c);i.push(...e)}o.scripts?.start&&i.push({name:o.name?`${o.name}:start`:`start`,type:`server`,filePath:o.scripts.start,trigger:`npm start`})}catch{}return i}parseExportsField(e,t,n){let r=[];if(typeof e==`string`)return r.push({name:t,type:`main`,filePath:`${n}${e}`}),r;if(typeof e!=`object`||!e)return r;for(let[i,a]of Object.entries(e)){if(!i.startsWith(`.`))continue;let e=i===`.`?t:`${t}/${i.slice(2)}`,o=this.resolveExportValue(a);o&&r.push({name:e,type:`main`,filePath:`${n}${o}`})}return r}resolveExportValue(e){if(typeof e==`string`)return e;if(typeof e!=`object`||!e)return;let t=e;for(let e of[`import`,`default`,`require`])if(typeof t[e]==`string`)return t[e];for(let e of Object.values(t))if(typeof e==`string`)return e}async findWorkspacePackages(n){let r=[];try{let i=s(n,`pnpm-workspace.yaml`);await e(i);let a=await t(i,`utf-8`),o=this.parsePnpmWorkspaceYaml(a);for(let e of o){let t=await this.expandWorkspaceGlob(n,e);r.push(...t)}if(r.length>0)return r}catch{}try{let e=s(n,`package.json`),i=JSON.parse(await t(e,`utf-8`)),a=Array.isArray(i.workspaces)?i.workspaces:i.workspaces?.packages??[];for(let e of a){let t=await this.expandWorkspaceGlob(n,e);r.push(...t)}}catch{}return r}parsePnpmWorkspaceYaml(e){let t=[],n=!1;for(let r of e.split(`
18
+ `)){let e=r.trim();if(e===`packages:`){n=!0;continue}if(n){if(e.startsWith(`- `))t.push(e.slice(2).replace(/^['"]|['"]$/g,``));else if(e&&!e.startsWith(`#`))break}}return t}async expandWorkspaceGlob(t,r){let i=[],a=r.indexOf(`*`);if(a===-1){let n=l(t,r);try{await e(s(n,`package.json`)),i.push(n)}catch{}return i}let o=l(t,r.slice(0,a));try{let t=await n(o,{withFileTypes:!0});for(let n of t){if(!n.isDirectory()||O.has(n.name))continue;let t=s(o,n.name);try{await e(s(t,`package.json`)),i.push(t)}catch{}}}catch{}return i}async fromHandlerExports(e){let n=[],r=await this.collectFiles(e),i=!1;try{await d.ensure(),i=!0}catch{}for(let a of r)try{let r=await t(a,`utf-8`),s=c(e,a).replace(/\\/g,`/`),l=o(a);if(!s.split(`/`).some(e=>ce.has(e))){let e=!1;if(i&&u.has(l)){let t=await f(r,l,s);for(let i of t)i.trigger||(i.type===`cdk-construct`?i.trigger=`CDK Construct`:i.trigger=this.detectTrigger(r)),n.push(i),e=!0}if(!e)for(let t of le){let i=r.match(t);if(i){let t=i[1]??this.inferNameFromFile(s);(t===`handler`||t===`main`)&&(t=this.deriveContextualName(s)??t);let a=/@SpringBootApplication/.test(r)?`HTTP Server`:this.detectTrigger(r);n.push({name:t,type:this.inferEntryType(i[1]??t,s),filePath:s,trigger:a}),e=!0;break}}if(!e){let e=r.match(ue);e&&n.push({name:e[1],type:`cdk-construct`,filePath:s,trigger:`CDK Construct`})}}this.isTestFile(s,r)&&n.push({name:this.inferNameFromFile(s),type:`test`,filePath:s,trigger:`Test Suite`})}catch{}return n}isTestFile(e,t){return/\.(test|spec)\.[jt]sx?$/.test(e)?de.some(e=>e.test(t)):!1}inferNameFromFile(e){return(e.split(/[/\\]/).pop()??`default`).replace(/\.\w+$/,``)}deriveContextualName(e){let t=e.split(`/`).filter(e=>e!==`src`&&e!==`lib`);if(t.pop(),t.length===0)return;let n=t.filter(e=>![`services`,`functions`,`lambdas`,`handlers`,`packages`,`apps`].includes(e));if(n.length===0)return;let r=n.slice(-2);return r.length===2&&r[1].startsWith(r[0])?r[1]:r.join(`-`)}inferEntryType(e,t){return e===`handler`||e===`main`||t.includes(`handler`)||/functions[/]/.test(t)||e.endsWith(`Handler`)?`lambda-handler`:(t.endsWith(`.py`)||t.endsWith(`.go`)||t.endsWith(`.java`),`main`)}detectTrigger(e){for(let t of fe)if(t.regex.test(e))return t.trigger}async collectFiles(e){let t=[],i=new Set([`.ts`,`.tsx`,`.js`,`.jsx`,`.java`,`.py`,`.go`,`.cs`,`.kt`,`.rb`,`.rs`,`.php`,`.swift`]),a=async(e,c)=>{if(c>10||!(await r(e).catch(()=>null))?.isDirectory())return;let l=await n(e,{withFileTypes:!0});for(let n of l){if(O.has(n.name)||n.name.startsWith(`.`))continue;let r=s(e,n.name);n.isDirectory()?await a(r,c+1):i.has(o(n.name))&&t.push(r)}};return await a(e,0),t}formatMarkdown(e,t){let n=[];if(n.push(`## Entry Points: ${t}\n`),n.push(`**${e.length} entry ${e.length===1?`point`:`points`}** found\n`),e.length===0)return n.push(`No entry points detected.`),n.join(`
19
+ `);let r=new Map;for(let t of e){let e=r.get(t.type)??[];e.push(t),r.set(t.type,e)}let i=[`lambda-handler`,`main`,`server`,`cli`,`bin`,`cdk-construct`,`test`],a=[...r.entries()].sort((e,t)=>i.indexOf(e[0])-i.indexOf(t[0]));n.push(`| Name | Type | File | Trigger |`),n.push(`|------|------|------|---------|`);for(let[,e]of a)for(let t of e)n.push(`| ${t.name} | ${t.type} | ${t.filePath} | ${t.trigger??`—`} |`);return n.join(`
20
+ `)}};const k={structure:`structure`,dependencies:`dependencies`,symbols:`symbols`,patterns:`patterns`,"entry-points":`entryPoints`,diagrams:`diagrams`},A=Object.keys(k);var j=class{constructor(e){this.analyzers=e}async runExtraction(e,t){let n=t.includes(`all`)?A:t,r={},i=[];for(let t of n){let n=k[t];if(!n)continue;let r=this.analyzers[n];r&&(t===`diagrams`?i.push({key:`diagrams`,promise:r.analyze(e,{diagramType:`architecture`})}):i.push({key:t,promise:r.analyze(e)}))}let a=await Promise.allSettled(i.map(async e=>({key:e.key,result:await e.promise})));for(let e of a){if(e.status!==`fulfilled`)continue;let{key:t,result:n}=e.value;t===`diagrams`?r.diagrams=[n]:r[t]=n}return r}buildSynthesisInstructions(e,t){let n=[];if(n.push(`## Knowledge Production Results
21
+ `),n.push(`### Extraction Baselines (auto-generated)
22
+ `),e.structure&&(n.push(`#### File Structure
23
+ `),n.push(e.structure.output),n.push(``)),e.dependencies&&(n.push(`#### Dependencies
24
+ `),n.push(e.dependencies.output),n.push(``)),e.symbols&&(n.push(`#### Symbols
25
+ `),n.push(e.symbols.output),n.push(``)),e.patterns&&(n.push(`#### Detected Patterns
26
+ `),n.push(e.patterns.output),n.push(``)),e.entryPoints&&(n.push(`#### Entry Points
27
+ `),n.push(e.entryPoints.output),n.push(``)),e.diagrams&&e.diagrams.length>0){n.push(`#### Architecture Diagram
28
+ `);for(let t of e.diagrams)n.push(t.output);n.push(``)}let r=this.buildCrossReferences(e);if(r.length>0){n.push(`#### Cross-References
29
+ `),n.push(`_Connections between baselines to aid synthesis:_
30
+ `);for(let e of r)n.push(`- ${e}`);n.push(``)}return n.push(`### Your Task: Synthesize Knowledge
31
+ `),n.push(`Based on the baselines above and your reading of the source files, produce`),n.push("the following knowledge documents using `aikit_remember`:\n"),n.push(`1. **Domain Overview** (category: \`architecture\`)
32
+ - What this service does, boundary with other services
33
+ - Key entities and their lifecycle
34
+ `),n.push(`2. **Architecture Summary** (category: \`architecture\`)
35
+ - Layer structure, dependency flow
36
+ - Key design decisions
37
+ `),n.push(`3. **Pattern Usage** (category: \`patterns\`)
38
+ - Which patterns are used and why
39
+ - Where to find examples
40
+ `),n.push(`4. **Conventions** (category: \`conventions\`)
41
+ - Naming conventions observed
42
+ - File organization rules
43
+ - Testing patterns
44
+ `),n.push("Store each as a separate `aikit_remember` call with descriptive titles.\n"),n.join(`
45
+ `)}buildCrossReferences(e){let t=[],n=new Set;if(e.symbols?.output)for(let t of e.symbols.output.matchAll(/`(\w+)`\s*\((?:function|class|interface|type|const|enum)\)/g))n.add(t[1]);let r=new Set;if(e.entryPoints?.output)for(let t of e.entryPoints.output.matchAll(/`(\w+)`.*?(?:handler|main|server|cli|test|construct)/gi))r.add(t[1]);for(let e of r)n.has(e)&&t.push(`Entry point \`${e}\` is also listed in symbols — check its call graph for downstream dependencies`);if(e.patterns?.output&&n.size>0){for(let r of[`Singleton`,`Factory`,`Observer`,`Builder`,`Strategy`,`Middleware`,`Repository`])if(e.patterns.output.includes(r)){let i=e.patterns.output.split(r)[1]?.slice(0,200)??``;for(let e of n)if(i.includes(e)){t.push(`Symbol \`${e}\` uses the ${r} pattern`);break}}}return t}};const M=new Set([`node_modules`,`.git`,`dist`,`build`,`coverage`,`.turbo`,`.cache`,`cdk.out`,`__pycache__`,`.venv`,`target`,`bin`,`obj`,`.gradle`,`venv`,`env`]),N=[{dirs:[`adapters`,`ports`],pattern:`Hexagonal Architecture`,description:`Ports & adapters (hexagonal) separation`},{dirs:[`domain`,`infrastructure`,`application`],pattern:`Clean Architecture`,description:`Layered with domain/infrastructure separation`},{dirs:[`controllers`,`models`],pattern:`MVC Pattern`,description:`Model-View-Controller structure`},{dirs:[`repositories`],pattern:`Repository Pattern`,description:`Data access abstraction via repositories`},{dirs:[`factories`],pattern:`Factory Pattern`,description:`Object creation via factories`},{dirs:[`handlers`],pattern:`Handler Pattern`,description:`Event/request handler separation`},{dirs:[`middleware`],pattern:`Middleware Pattern`,description:`Request pipeline middleware`},{dirs:[`hooks`],pattern:`React Hooks`,description:`Custom React hooks for logic reuse`},{dirs:[`components`],pattern:`Component Architecture`,description:`UI component-based structure`},{dirs:[`stacks`,`constructs`],pattern:`CDK IaC`,description:`AWS CDK infrastructure as code`},{dirs:[`lambdas`,`functions`],pattern:`Serverless`,description:`Serverless function architecture`}];function P(e){if(e.length<=3)return e;let t=new Map;for(let n of e){let e=n.split(`/`),r=e.length>1?e.slice(0,-1).join(`/`):`.`,i=t.get(r);i?i.push(n):t.set(r,[n])}let n=[];for(let[e,r]of t)r.length>=3?n.push(`${e}/ (${r.length} files)`):n.push(...r);return n.slice(0,5)}const F=[{regex:/container\.register|@injectable|@inject/i,pattern:`Dependency Injection`,description:`IoC container or DI decorators`},{regex:/\.pipe\(|Observable|BehaviorSubject/i,pattern:`Reactive (RxJS)`,description:`Reactive programming with observables`,lang:`js`},{regex:/createContext|useContext/i,pattern:`React Context`,description:`React Context API for state sharing`,lang:`js`},{regex:/createSlice|configureStore/i,pattern:`Redux Toolkit`,description:`Redux state management`,lang:`js`},{regex:/defineStore|usePinia/i,pattern:`Pinia Store`,description:`Vue Pinia state management`,lang:`js`},{regex:/\.(test|spec)\.[jt]sx?|describe\s*\(|\bit\s*\([\s'"]/i,pattern:`Test Suite`,description:`Unit/integration test files`},{regex:/@SpringBootApplication|@EnableAutoConfiguration/,pattern:`Spring Boot`,description:`Spring Boot application framework`,lang:`java`,definitive:!0},{regex:/@Autowired|@Component|@Service|@Repository|@Controller/,pattern:`Spring DI`,description:`Spring dependency injection`,lang:`java`},{regex:/@RestController|@RequestMapping|@GetMapping|@PostMapping/,pattern:`Spring REST`,description:`Spring REST API controllers`,lang:`java`},{regex:/app\s*=\s*Flask\s*\(|@app\.route/,pattern:`Flask`,description:`Flask web framework`,lang:`python`},{regex:/app\s*=\s*FastAPI\s*\(|@app\.get|@app\.post/,pattern:`FastAPI`,description:`FastAPI web framework`,lang:`python`},{regex:/func\s+main\s*\(\s*\)|http\.ListenAndServe/,pattern:`Go Application`,description:`Go main application`,lang:`go`},{regex:/export\s+(?:async\s+)?function\s+create[A-Z]\w+/,pattern:`Factory`,description:`Object creation via create*() functions`,lang:`js`},{regex:/(?:export\s+)?function\s+wrap[A-Z]\w+/,pattern:`Wrapper/Decorator`,description:`Higher-order function wrapping`,lang:`js`},{regex:/(?:const|let)\s+\w+\s*=\s*new\s+(?:Map|WeakMap)\s*[<(]/,pattern:`Singleton Cache`,description:`Module-level cache with lazy initialization`,lang:`js`},{regex:/Record<string,\s*(?:\w+)?Handler>|\.(?:get|post|put|delete)\s*\(/,pattern:`Router/Dispatcher`,description:`Request routing/dispatch table`,lang:`js`},{regex:/export\s+(?:default\s+)?class\s+\w+\s+extends\s+(?:Construct|Stack|NestedStack|Stage)/,pattern:`CDK Construct`,description:`AWS CDK infrastructure construct`,lang:`js`,definitive:!0}];var I=class{name=`patterns`;async analyze(e,t={}){let n=Date.now(),r=await this.collectDirectories(e),i=this.detectDirectoryPatterns(r,e),a=await this.collectCodeFiles(e),o=await this.detectCodePatterns(a,e),s=[...i,...o],c=await this.detectConfigPatterns(e),l=c.find(e=>e.pattern===`Maven`||e.pattern===`Gradle`||e.pattern===`Gradle (Kotlin DSL)`||e.pattern===`Node.js Project`||e.pattern===`Go Module`||e.pattern===`Rust (Cargo)`),u=new Set([`Ruby (Bundler)`,`PHP (Composer)`,`Swift Package`,`SBT`]);for(let e of c)l&&u.has(e.pattern)||s.push(e);return{output:this.formatMarkdown(s,e),data:{patterns:s,total:s.length},meta:{analyzedAt:new Date().toISOString(),scope:e,fileCount:a.length,durationMs:Date.now()-n}}}async collectDirectories(e){let t=[],i=async(e,a)=>{if(a>5||!(await r(e).catch(()=>null))?.isDirectory())return;let o=await n(e,{withFileTypes:!0});for(let n of o){if(!n.isDirectory()||M.has(n.name)||n.name.startsWith(`.`))continue;let r=s(e,n.name);t.push(n.name),await i(r,a+1)}};return await i(e,0),t}async collectCodeFiles(e){let t=[],r=new Set([`.ts`,`.tsx`,`.js`,`.jsx`,`.java`,`.py`,`.go`,`.cs`,`.kt`,`.scala`,`.rb`,`.rs`,`.php`,`.swift`]),i=async e=>{let a=await n(e,{withFileTypes:!0});for(let n of a){if(M.has(n.name)||n.name.startsWith(`.`))continue;let a=s(e,n.name);n.isDirectory()?await i(a):r.has(o(n.name))&&t.push(a)}};return await i(e),t}detectDirectoryPatterns(e,t){let n=new Set(e.map(e=>e.toLowerCase())),r=[];for(let e of N){let t=e.dirs.filter(e=>n.has(e));t.length!==0&&(e.dirs.length>1&&t.length<2||r.push({pattern:e.pattern,description:e.description,locations:t.map(e=>`${e}/`),confidence:t.length===e.dirs.length?`high`:`medium`}))}return r}async detectCodePatterns(e,n){let r=[],i={},a=!1;try{await d.ensure(),a=!0}catch{}let s=e.filter(e=>/Application\.\w+$|Main\.\w+$|app\.\w+$|main\.\w+$/i.test(e)||/Controller|Service|Handler|Router/i.test(e)),l=e.filter(e=>!s.includes(e)),f=[...s.slice(0,50),...l.slice(0,150)];for(let e of f)try{let r=await t(e,`utf-8`),s=o(e).toLowerCase(),l=c(n,e).replace(/\\/g,`/`);if(/analyzers\/src\//.test(l))continue;if(a&&u.has(s)){let e=await p(r,s,l);for(let t of e){i[t.pattern]||(i[t.pattern]=new Set);for(let e of t.locations)i[t.pattern].add(e)}}let d=s===`.java`||s===`.kt`||s===`.scala`?`java`:s===`.py`?`python`:s===`.go`?`go`:`js`;for(let e of F)e.lang&&e.lang!==d||e.regex.test(r)&&(i[e.pattern]||(i[e.pattern]=new Set),i[e.pattern].add(l))}catch{}for(let e of F){let t=i[e.pattern];if(t&&t.size>0){let n=P([...t]);r.push({pattern:e.pattern,description:e.description,locations:n,confidence:e.definitive||t.size>=3?`high`:t.size>=2?`medium`:`low`})}}let m=new Set(F.map(e=>e.pattern));for(let[e,t]of Object.entries(i)){if(m.has(e)||t.size===0)continue;let n=P([...t]);r.push({pattern:e,description:`Detected via AST analysis`,locations:n,confidence:t.size>=3?`high`:t.size>=2?`medium`:`low`})}return r}async detectConfigPatterns(t){let n=[];for(let r of[{file:`Dockerfile`,pattern:`Docker`,description:`Containerized application`},{file:`docker-compose.yml`,pattern:`Docker Compose`,description:`Container orchestration`},{file:`cdk.json`,pattern:`AWS CDK`,description:`AWS CDK infrastructure as code`},{file:`terraform.tf`,pattern:`Terraform`,description:`Terraform IaC`},{file:`main.tf`,pattern:`Terraform`,description:`Terraform IaC`}])try{await e(s(t,r.file)),n.push({pattern:r.pattern,description:r.description,locations:[r.file],confidence:`high`})}catch{}return n}formatMarkdown(e,t){let n=[];n.push(`## Patterns Detected: ${t}\n`),n.push(`**${e.length} patterns** found\n`);let r={high:[],medium:[],low:[]};for(let t of e)r[t.confidence].push(t);for(let[e,t]of Object.entries(r))if(t.length!==0){n.push(`### ${e.charAt(0).toUpperCase()+e.slice(1)} Confidence\n`);for(let e of t)n.push(`- **${e.pattern}**: ${e.description}`),n.push(` Locations: ${e.locations.slice(0,5).join(`, `)}`);n.push(``)}return n.join(`
46
+ `)}};const L=new Set([`node_modules`,`.git`,`dist`,`build`,`coverage`,`.turbo`,`.cache`,`cdk.out`,`.venv`,`venv`,`__pycache__`,`target`,`vendor`,`bin`,`obj`]),R=new Set([`.ts`,`.tsx`,`.js`,`.jsx`,`.java`,`.py`,`.go`,`.cs`,`.kt`,`.scala`,`.rs`,`.rb`,`.php`,`.swift`]);async function z(e){let t=Date.now(),n=ve(e);if(n.length===0)return null;let r=n.slice(0,800),i=new Map,a=new Map;for(let t of r){let n=c(e,t).replace(/\\/g,`/`),r=v(t,`utf-8`),s=o(t).toLowerCase(),l=B(r,s);i.set(n,l);let u=me(r,s);a.set(n,u)}let l=ge(r,e),u=ye(e),d=new Map;for(let[t,n]of i){if(G(t))continue;let r=he(v(s(e,t),`utf-8`),o(t));for(let e of n){if(!e.isRelative){let n=be(e.source,u,l);if(!n)continue;let i=n;if(G(i)||t===i)continue;let a;if(a=e.symbols.length>0?e.symbols.filter(e=>RegExp(`\\b${H(e)}\\b`).test(r)):[`*`],a.length===0)continue;let o=`${t}|${i}`,s=d.get(o);if(s)for(let e of a)s.add(e);else d.set(o,new Set(a));continue}let n=_e(t,e.source,l,o(t));if(n.length===0)continue;let i=n[0];if(G(i)||t===i)continue;let a;if(a=e.symbols.length>0?e.symbols.filter(e=>RegExp(`\\b${H(e)}\\b`).test(r)):[`*`],a.length===0)continue;let s=`${t}|${i}`,c=d.get(s);if(c)for(let e of a)c.add(e);else d.set(s,new Set(a))}}let f=[];for(let[e,t]of d){let[n,r]=e.split(`|`);f.push({from:n,to:r,symbols:[...t].sort().slice(0,10)})}return f.sort((e,t)=>t.symbols.length-e.symbols.length),{edges:f,fileCount:r.length,edgeCount:f.length,durationMs:Date.now()-t}}function B(e,t){let n=[];switch(t){case`.ts`:case`.tsx`:case`.js`:case`.jsx`:{let t=/import\s+(?:type\s+)?\{([^}]+)\}\s+from\s+['"]([^'"]+)['"]/g,r;for(;(r=t.exec(e))!==null;){let e=r[1].split(`,`).map(e=>{let t=e.trim().split(/\s+as\s+/);return(t[t.length-1]||``).trim()}).filter(Boolean);n.push({source:r[2],symbols:e,isRelative:r[2].startsWith(`.`)})}let i=/import\s+(\w+)\s+from\s+['"]([^'"]+)['"]/g;for(;(r=i.exec(e))!==null;)r[1]!==`type`&&n.push({source:r[2],symbols:[r[1]],isRelative:r[2].startsWith(`.`)});let a=/(?:const|let|var)\s+\{([^}]+)\}\s*=\s*require\(\s*['"]([^'"]+)['"]\s*\)/g;for(;(r=a.exec(e))!==null;){let e=r[1].split(`,`).map(e=>e.trim().split(`:`)[0].trim()).filter(Boolean);n.push({source:r[2],symbols:e,isRelative:r[2].startsWith(`.`)})}break}case`.java`:case`.kt`:case`.scala`:{let t=/^import\s+(?:static\s+)?([\w.]+)\s*;/gm,r;for(;(r=t.exec(e))!==null;){let t=r[1].split(`.`),i=t[t.length-1];i===`*`?n.push({source:r[1],symbols:[],isRelative:V(r[1],e)}):n.push({source:r[1],symbols:[i],isRelative:V(r[1],e)})}break}case`.py`:{let t=/^from\s+([\w.]+)\s+import\s+(.+)$/gm,r;for(;(r=t.exec(e))!==null;){let e=r[2].split(`,`).map(e=>{let t=e.trim().split(/\s+as\s+/);return(t[t.length-1]||``).trim()}).filter(e=>e&&e!==`(`);n.push({source:r[1],symbols:e,isRelative:r[1].startsWith(`.`)})}let i=/^import\s+([\w.]+)(?:\s+as\s+(\w+))?\s*$/gm;for(;(r=i.exec(e))!==null;){let e=r[1].split(`.`),t=r[2]||e[e.length-1];n.push({source:r[1],symbols:[t],isRelative:r[1].startsWith(`.`)})}break}case`.go`:{let t=/import\s+(?:(\w+)\s+)?[""]([^""]+)[""]/g,r;for(;(r=t.exec(e))!==null;){let e=r[2].split(`/`),t=r[1]||e[e.length-1];n.push({source:r[2],symbols:[t],isRelative:!r[2].includes(`.`)&&!r[2].startsWith(`github.com`)})}let i=/import\s*\(([\s\S]*?)\)/g;for(;(r=i.exec(e))!==null;){let e=r[1],t=/(?:(\w+)\s+)?[""]([^""]+)[""]/g,i;for(;(i=t.exec(e))!==null;){let e=i[2].split(`/`),t=i[1]||e[e.length-1];n.push({source:i[2],symbols:[t],isRelative:!i[2].includes(`.`)&&!i[2].startsWith(`github.com`)})}}break}case`.cs`:{let t=/^using\s+(?:static\s+)?([\w.]+)\s*;/gm,r;for(;(r=t.exec(e))!==null;){let e=r[1].split(`.`);n.push({source:r[1],symbols:[e[e.length-1]],isRelative:!0})}break}case`.rs`:{let t=/^use\s+([\w:]+(?:::\w+)*)/gm,r;for(;(r=t.exec(e))!==null;){let e=r[1].split(`::`),t=e[e.length-1];n.push({source:r[1],symbols:t===`*`?[]:[t],isRelative:r[1].startsWith(`crate`)||r[1].startsWith(`super`)})}break}}return n}function me(e,t){let n=new Set;switch(t){case`.ts`:case`.tsx`:case`.js`:case`.jsx`:{let t=/export\s+(?:default\s+)?(?:abstract\s+)?(?:async\s+)?(?:function|class|const|let|var|type|interface|enum)\s+(\w+)/g,r;for(;(r=t.exec(e))!==null;)n.add(r[1]);break}case`.java`:case`.kt`:case`.scala`:{let t=/(?:public|protected)\s+(?:static\s+)?(?:abstract\s+)?(?:final\s+)?(?:class|interface|enum|record|@interface)\s+(\w+)/g,r;for(;(r=t.exec(e))!==null;)n.add(r[1]);let i=/(?:public|protected)\s+(?:static\s+)?(?:abstract\s+)?(?:final\s+)?\w+(?:<[^>]+>)?\s+(\w+)\s*\(/g;for(;(r=i.exec(e))!==null;)[`if`,`for`,`while`,`switch`,`catch`,`return`,`class`,`interface`,`enum`,`new`].includes(r[1])||n.add(r[1]);break}case`.py`:{let t=/^(?:def|class)\s+([A-Z_]\w*)/gm,r;for(;(r=t.exec(e))!==null;)r[1].startsWith(`_`)||n.add(r[1]);break}case`.go`:{let t=/^(?:func|type|var|const)\s+(\(?[A-Z]\w*)/gm,r;for(;(r=t.exec(e))!==null;)n.add(r[1].replace(`(`,``));break}}return n}function V(e,t){let n=t.match(/^package\s+([\w.]+)\s*;/m);if(!n)return!1;let r=n[1].split(`.`),i=e.split(`.`);return r.length>=2&&i.length>=2&&r[0]===i[0]&&r[1]===i[1]}function H(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function he(e,t){switch(t){case`.ts`:case`.tsx`:case`.js`:case`.jsx`:return e.replace(/^import\s+.+$/gm,``).replace(/^const\s+.+=\s*require\(.+$/gm,``);case`.java`:case`.kt`:case`.scala`:return e.replace(/^import\s+.+;$/gm,``);case`.py`:return e.replace(/^(?:from\s+.+import\s+.+|import\s+.+)$/gm,``);case`.go`:return e.replace(/^import\s+.+$/gm,``).replace(/import\s*\([\s\S]*?\)/g,``);case`.cs`:return e.replace(/^using\s+.+;$/gm,``);case`.rs`:return e.replace(/^use\s+.+;$/gm,``);default:return e}}function ge(e,t){let n=new Map;for(let r of e){let e=c(t,r).replace(/\\/g,`/`),i=e.replace(/\.[^.]+$/,``);U(n,i,e);let a=i.split(`/`),o=a[a.length-1];U(n,o,e)}return n}function U(e,t,n){let r=e.get(t);r?r.push(n):e.set(t,[n])}function _e(e,t,n,r){switch(r){case`.ts`:case`.tsx`:case`.js`:case`.jsx`:{if(!t.startsWith(`.`))return[];let r=e.split(`/`).slice(0,-1).join(`/`),i=W(r?`${r}/${t}`:t);for(let e of[``,`.ts`,`.tsx`,`.js`,`.jsx`,`/index.ts`,`/index.js`]){let t=n.get(i+e)||n.get((i+e).replace(/\.[^.]+$/,``));if(t&&t.length>0)return[t[0]]}let a=n.get(i.replace(/\.[^.]+$/,``));return a?[a[0]]:[]}case`.java`:case`.kt`:case`.scala`:{let e=t.split(`.`),r=e[e.length-1];if(r===`*`)return[];let i=n.get(r);return i?[i[0]]:[]}case`.py`:{if(t.startsWith(`.`)){let r=e.split(`/`).slice(0,-1).join(`/`),i=t.replace(/^\.+/,``).replace(/\./g,`/`),a=r?`${r}/${i}`:i,o=a.split(`/`),s=n.get(a)||n.get(o[o.length-1]);if(s)return[s[0]]}let r=t.replace(/\./g,`/`),i=n.get(r);return i?[i[0]]:[]}case`.go`:{let e=t.split(`/`),r=e[e.length-1],i=n.get(r);return i?[i[0]]:[]}default:return[]}}function W(e){let t=e.split(`/`),n=[];for(let e of t)if(!(e===`.`||e===``)){if(e===`..`){n.pop();continue}n.push(e)}return n.join(`/`)}function G(e){return e.split(`/`).some(e=>e===`test`||e===`tests`||e===`__tests__`||e===`spec`||e===`test_`||e===`__test__`)||/\.(test|spec)\.[^.]+$/.test(e)}function ve(e){let t=[],n=(r,i)=>{if(!(i>10))try{for(let a of y(r,{withFileTypes:!0})){if(L.has(a.name)||a.name.startsWith(`.`))continue;let l=s(r,a.name);if(a.isDirectory())n(l,i+1);else{let n=o(a.name).toLowerCase();if(!R.has(n)||a.name.endsWith(`.d.ts`)||/\.(test|spec)\.[^.]+$/.test(a.name)||c(e,r).replace(/\\/g,`/`).split(`/`).some(e=>e===`test`||e===`tests`||e===`__tests__`||e===`spec`))continue;t.push(l)}}}catch{}};return n(e,0),t}function ye(e){let t=new Map;for(let n of[`packages`,`apps`,`libs`,`services`,`functions`]){let r=s(e,n),i;try{i=y(r,{withFileTypes:!0})}catch{continue}for(let e of i){if(!e.isDirectory())continue;let i=s(r,e.name,`package.json`);try{let r=JSON.parse(v(i,`utf-8`));if(r.name){let i=r.exports?.[`.`]?.import??r.exports?.[`.`]?.default??r.main??`src/index.ts`,a=s(n,e.name,i).replace(/\\/g,`/`);t.set(r.name,a)}}catch{}}}return t}function be(e,t,n){if(t.has(e))return t.get(e)??null;let r=e.startsWith(`@`)?e.split(`/`):[];if(r.length>=2){let e=`${r[0]}/${r[1]}`,i=t.get(e);if(i){if(r.length===2)return i;let e=i.replace(/\/src\/index\.\w+$/,``).replace(/\/dist\/.*$/,``),t=r.slice(2).join(`/`),a=[`${e}/src/${t}`,`${e}/${t}`];for(let e of a){let t=e.replace(/\.\w+$/,``),r=n.get(t);if(r?.[0])return r[0]}return i}}return null}const K=new Set([`.ts`,`.tsx`,`.js`,`.jsx`,`.java`,`.py`,`.go`,`.cs`,`.rb`,`.kt`,`.scala`,`.rs`,`.php`,`.swift`]),xe=new Set([`node_modules`,`.git`,`dist`,`build`,`coverage`,`.turbo`,`.cache`,`cdk.out`,`__pycache__`,`.venv`,`target`,`bin`,`obj`,`.gradle`,`venv`,`env`]),q={exported:[{pattern:/^export\s+(?:async\s+)?function\s+(\w+)/gm,kind:`function`},{pattern:/^export\s+(?:default\s+)?class\s+(\w+)/gm,kind:`class`},{pattern:/^export\s+interface\s+(\w+)/gm,kind:`interface`},{pattern:/^export\s+type\s+(\w+)/gm,kind:`type`},{pattern:/^export\s+(?:const|let)\s+(\w+)/gm,kind:`const`},{pattern:/^export\s+enum\s+(\w+)/gm,kind:`enum`}],local:[{pattern:/^(?:async\s+)?function\s+(\w+)/gm,kind:`function`},{pattern:/^class\s+(\w+)/gm,kind:`class`},{pattern:/^interface\s+(\w+)/gm,kind:`interface`},{pattern:/^type\s+(\w+)/gm,kind:`type`},{pattern:/^(?:const|let)\s+(\w+)\s*=/gm,kind:`const`},{pattern:/^enum\s+(\w+)/gm,kind:`enum`}]},Se={exported:[{pattern:/^[ \t]*public\s+(?:static\s+)?(?:abstract\s+)?class\s+(\w+)/gm,kind:`class`},{pattern:/^[ \t]*public\s+(?:static\s+)?interface\s+(\w+)/gm,kind:`interface`},{pattern:/^[ \t]*public\s+(?:static\s+)?enum\s+(\w+)/gm,kind:`enum`},{pattern:/^[ \t]*public\s+(?:static\s+)?(?:synchronized\s+)?(?:final\s+)?(?:abstract\s+)?(?:\w+(?:<[^>]*>)?(?:\[\])*)\s+(\w+)\s*\(/gm,kind:`function`}],local:[{pattern:/^[ \t]*(?:private|protected)\s+(?:static\s+)?(?:abstract\s+)?class\s+(\w+)/gm,kind:`class`},{pattern:/^[ \t]*(?:private|protected)\s+(?:static\s+)?(?:synchronized\s+)?(?:final\s+)?(?:\w+(?:<[^>]*>)?(?:\[\])*)\s+(\w+)\s*\(/gm,kind:`function`},{pattern:/^[ \t]*(?:private|protected)\s+(?:static\s+)?(?:final\s+)?(?:\w+(?:<[^>]*>)?)\s+(\w+)\s*[;=]/gm,kind:`variable`}],skipIndentFilter:!0},Ce={exported:[{pattern:/^def\s+(\w+)\s*\(/gm,kind:`function`},{pattern:/^async\s+def\s+(\w+)\s*\(/gm,kind:`function`},{pattern:/^class\s+(\w+)/gm,kind:`class`}],local:[{pattern:/^[ \t]+def\s+(\w+)\s*\(/gm,kind:`function`},{pattern:/^[ \t]+async\s+def\s+(\w+)\s*\(/gm,kind:`function`}],skipIndentFilter:!0},we={exported:[{pattern:/^func\s+([A-Z]\w*)\s*\(/gm,kind:`function`},{pattern:/^func\s+\([^)]+\)\s+([A-Z]\w*)\s*\(/gm,kind:`function`},{pattern:/^type\s+([A-Z]\w*)\s+struct\b/gm,kind:`class`},{pattern:/^type\s+([A-Z]\w*)\s+interface\b/gm,kind:`interface`},{pattern:/^type\s+([A-Z]\w*)\s+/gm,kind:`type`}],local:[{pattern:/^func\s+([a-z]\w*)\s*\(/gm,kind:`function`},{pattern:/^func\s+\([^)]+\)\s+([a-z]\w*)\s*\(/gm,kind:`function`},{pattern:/^type\s+([a-z]\w*)\s+struct\b/gm,kind:`class`},{pattern:/^type\s+([a-z]\w*)\s+/gm,kind:`type`}],skipIndentFilter:!0},Te={exported:[{pattern:/^[ \t]*public\s+(?:static\s+)?(?:partial\s+)?(?:abstract\s+)?class\s+(\w+)/gm,kind:`class`},{pattern:/^[ \t]*public\s+(?:static\s+)?interface\s+(\w+)/gm,kind:`interface`},{pattern:/^[ \t]*public\s+(?:static\s+)?enum\s+(\w+)/gm,kind:`enum`},{pattern:/^[ \t]*public\s+(?:static\s+)?(?:virtual\s+)?(?:override\s+)?(?:async\s+)?(?:\w+(?:<[^>]*>)?(?:\[\])?)\s+(\w+)\s*\(/gm,kind:`function`}],local:[{pattern:/^[ \t]*(?:private|protected|internal)\s+(?:static\s+)?(?:abstract\s+)?class\s+(\w+)/gm,kind:`class`},{pattern:/^[ \t]*(?:private|protected|internal)\s+(?:static\s+)?(?:async\s+)?(?:\w+(?:<[^>]*>)?)\s+(\w+)\s*\(/gm,kind:`function`}],skipIndentFilter:!0},Ee={exported:[{pattern:/^(?:open\s+|data\s+|sealed\s+)?class\s+(\w+)/gm,kind:`class`},{pattern:/^(?:fun|suspend\s+fun)\s+(\w+)\s*[(<]/gm,kind:`function`},{pattern:/^interface\s+(\w+)/gm,kind:`interface`},{pattern:/^object\s+(\w+)/gm,kind:`class`},{pattern:/^enum\s+class\s+(\w+)/gm,kind:`enum`}],local:[{pattern:/^[ \t]+(?:private|internal)\s+(?:fun|suspend\s+fun)\s+(\w+)/gm,kind:`function`},{pattern:/^[ \t]+(?:private|internal)\s+(?:val|var)\s+(\w+)/gm,kind:`variable`}],skipIndentFilter:!0},De={exported:[{pattern:/^class\s+(\w+)/gm,kind:`class`},{pattern:/^module\s+(\w+)/gm,kind:`class`},{pattern:/^[ \t]+def\s+self\.(\w+)/gm,kind:`function`}],local:[{pattern:/^[ \t]+def\s+(\w+)/gm,kind:`function`}],skipIndentFilter:!0},Oe={exported:[{pattern:/^pub\s+(?:async\s+)?fn\s+(\w+)/gm,kind:`function`},{pattern:/^pub\s+struct\s+(\w+)/gm,kind:`class`},{pattern:/^pub\s+trait\s+(\w+)/gm,kind:`interface`},{pattern:/^pub\s+enum\s+(\w+)/gm,kind:`enum`},{pattern:/^pub\s+type\s+(\w+)/gm,kind:`type`}],local:[{pattern:/^(?:async\s+)?fn\s+(\w+)/gm,kind:`function`},{pattern:/^struct\s+(\w+)/gm,kind:`class`},{pattern:/^trait\s+(\w+)/gm,kind:`interface`},{pattern:/^enum\s+(\w+)/gm,kind:`enum`}],skipIndentFilter:!0},ke={exported:[{pattern:/^[ \t]*(?:abstract\s+)?class\s+(\w+)/gm,kind:`class`},{pattern:/^[ \t]*interface\s+(\w+)/gm,kind:`interface`},{pattern:/^[ \t]*public\s+(?:static\s+)?function\s+(\w+)/gm,kind:`function`},{pattern:/^function\s+(\w+)\s*\(/gm,kind:`function`}],local:[{pattern:/^[ \t]*(?:private|protected)\s+(?:static\s+)?function\s+(\w+)/gm,kind:`function`}],skipIndentFilter:!0},Ae={exported:[{pattern:/^[ \t]*(?:open|public)\s+class\s+(\w+)/gm,kind:`class`},{pattern:/^[ \t]*(?:open|public)\s+struct\s+(\w+)/gm,kind:`class`},{pattern:/^[ \t]*(?:open|public)\s+protocol\s+(\w+)/gm,kind:`interface`},{pattern:/^[ \t]*(?:open|public)\s+enum\s+(\w+)/gm,kind:`enum`},{pattern:/^[ \t]*(?:open|public)\s+func\s+(\w+)/gm,kind:`function`}],local:[{pattern:/^[ \t]*(?:private|fileprivate|internal)\s+func\s+(\w+)/gm,kind:`function`},{pattern:/^[ \t]*(?:private|fileprivate|internal)\s+class\s+(\w+)/gm,kind:`class`}],skipIndentFilter:!0},je={exported:[{pattern:/^[ \t]*(?:case\s+)?class\s+(\w+)/gm,kind:`class`},{pattern:/^[ \t]*object\s+(\w+)/gm,kind:`class`},{pattern:/^[ \t]*trait\s+(\w+)/gm,kind:`interface`},{pattern:/^[ \t]*def\s+(\w+)/gm,kind:`function`}],local:[],skipIndentFilter:!0};function Me(e){switch(e){case`.ts`:case`.tsx`:case`.js`:case`.jsx`:return q;case`.java`:return Se;case`.py`:return Ce;case`.go`:return we;case`.cs`:return Te;case`.kt`:return Ee;case`.rb`:return De;case`.rs`:return Oe;case`.php`:return ke;case`.swift`:return Ae;case`.scala`:return je;default:return q}}function J(e,t){let n=``,r=0,i=!1;for(let a=t;a<Math.min(t+5,e.length);a++){let t=e[a].trim();n+=(n?` `:``)+t;for(let e of t)e===`(`&&(r++,i=!0),e===`)`&&r--;if(i&&r<=0)return n.replace(/\s*\{.*$/,``).replace(/\s*:\s*$/,``).trim()}return n.trim()||void 0}function Y(e,t){let n=J(e,t);if(!n)return;let r=n.match(/\)\s*:\s*([^{=]+)/);if(r)return r[1].trim().slice(0,200)||void 0;let i=n.match(/=>\s*([^{]+)/);if(i)return i[1].trim().slice(0,200)||void 0}function X(e,t){for(let n=t-1;n>=Math.max(0,t-10);n--){let t=e[n].trim();if(t!==``){if(t.endsWith(`*/`)){for(let t=n;t>=Math.max(0,n-20);t--)if(e[t].trim().startsWith(`/**`)||e[t].trim().startsWith(`/*`)){for(let r=t;r<=n;r++){let t=e[r].replace(/^\s*\/\*\*?\s*/,``).replace(/\s*\*\/\s*$/,``).replace(/^\s*\*\s?/,``).trim();if(t.length>0&&!t.startsWith(`@`))return t.slice(0,200)}return}}if(t.startsWith(`//`))return t.replace(/^\/\/\s*/,``).slice(0,200)||void 0;break}}}function Z(e,t){let n=``,r=0,i=!1;for(let a=t;a<Math.min(t+30,e.length);a++){let t=e[a];n+=` ${t.trim()}`;for(let e of t)e===`{`&&(r++,i=!0),e===`}`&&r--;if(i&&r<=0){let e=n.match(/\{([\s\S]*)\}/);if(e){let t=`{ ${e[1].replace(/\n\s*/g,` `).replace(/\s+/g,` `).trim()} }`;return t.length>500?`${t.slice(0,500)}…`:t}return}}}var Ne=class{name=`symbols`;async analyze(e,n={}){let{format:r=`markdown`,filter:i}=n,s=Date.now(),l=await this.collectFiles(e),f=l.length===1&&l[0]===e?a(e):e,p=[],h=[],_=!1;try{await d.ensure(),_=!0}catch{}for(let e of l){let n=await t(e,`utf-8`),r=c(f,e).replace(/\\/g,`/`),i=o(e);if(_&&u.has(i)){let e=await g(n,i,r);if(e.length>0){p.push(...e);let t=await m(n,i,r);h.push(...t)}else{let e=this.extractSymbolsRegex(n,r);p.push(...e)}}else{let e=this.extractSymbolsRegex(n,r);p.push(...e)}}if(i){let e=i.toLowerCase();p=p.filter(t=>t.name.toLowerCase().includes(e))}return{output:r===`json`?JSON.stringify(p,null,2):this.formatMarkdown(p,f,h),data:{symbols:p,byKind:this.groupByKind(p),exportedCount:p.filter(e=>e.exported).length,totalCount:p.length,callEdges:h},meta:{analyzedAt:new Date().toISOString(),scope:e,fileCount:l.length,durationMs:Date.now()-s}}}async collectFiles(e){let t=[],i;try{i=await r(e)}catch{throw Error(`Path does not exist: ${e}`)}if(i.isFile()){if(K.has(o(e)))return[e];throw Error(`Not a recognized source file: ${e}`)}if(!i.isDirectory())throw Error(`Not a file or directory: ${e}`);let a=async e=>{let r=await n(e,{withFileTypes:!0});for(let n of r){if(xe.has(n.name)||n.name.startsWith(`.`))continue;let r=s(e,n.name);n.isDirectory()?await a(r):K.has(o(n.name))&&t.push(r)}};return await a(e),t}extractSymbolsRegex(e,t){let n=[],r=e.split(`
47
+ `),i=new Set,a=Me(o(t));for(let{pattern:o,kind:s}of a.exported){let a=new RegExp(o.source,o.flags),c;for(;(c=a.exec(e))!==null;){let a=c[1];i.add(a);let o=e.slice(0,c.index).split(`
48
+ `).length,l=s===`function`||s===`method`?J(r,o-1):void 0,u=s===`function`||s===`method`?Y(r,o-1):void 0,d=X(r,o-1),f=s===`interface`||s===`type`?Z(r,o-1):void 0;n.push({name:a,kind:s,exported:!0,filePath:t,line:o,signature:l,returnType:u,jsdoc:d,typeBody:f})}}for(let{pattern:o,kind:s}of a.local){let c=new RegExp(o.source,o.flags),l;for(;(l=c.exec(e))!==null;){let o=l[1];if(i.has(o))continue;if(!a.skipIndentFilter){let t=r[e.slice(0,l.index).split(`
49
+ `).length-1]??``;if(t.startsWith(` `)||t.startsWith(` `))continue}let c=e.slice(0,l.index).split(`
50
+ `).length,u=s===`function`||s===`method`?J(r,c-1):void 0,d=s===`function`||s===`method`?Y(r,c-1):void 0,f=X(r,c-1),p=s===`interface`||s===`type`?Z(r,c-1):void 0;n.push({name:o,kind:s,exported:!1,filePath:t,line:c,signature:u,returnType:d,jsdoc:f,typeBody:p})}}return n}groupByKind(e){let t={};for(let n of e)t[n.kind]=(t[n.kind]??0)+1;return t}formatMarkdown(e,t,n=[]){let r=[],i=e.filter(e=>e.exported).length;r.push(`## Symbols: ${t}\n`),r.push(`**${e.length} symbols** (${i} exported)\n`);let a={};for(let t of e)a[t.kind]=(a[t.kind]??0)+1;let o=Object.entries(a).sort((e,t)=>t[1]-e[1]).map(([e,t])=>`${t} ${e===`class`?`classes`:`${e}s`}`).join(`, `);r.push(`**Breakdown**: ${o}\n`);let s={};for(let t of e)s[t.filePath]||(s[t.filePath]=[]),s[t.filePath].push(t);r.push(`**${Object.keys(s).length} files** with symbols\n`);let c=0,l=Object.entries(s).sort((e,t)=>{let n=e[1].filter(e=>e.exported).length;return t[1].filter(e=>e.exported).length-n});for(let[e,t]of l){let n=t.filter(e=>e.exported);if(n.length===0)continue;let i=[`### ${e}\n`];for(let e of n){let t=e.signature?` — \`${e.signature}\``:``,n=e.returnType?`: ${e.returnType}`:``,r=e.decorators?.length?` ${e.decorators.join(` `)}`:``;i.push(`- 📤 \`${e.kind}\` **${e.name}** (line ${e.line})${t}${n}`),r&&i.push(` ${r}`),e.jsdoc&&i.push(` > ${e.jsdoc}`),e.typeBody&&i.push(` \`${e.typeBody}\``)}let a=t.length-n.length;a>0&&i.push(`- _${a} internal ${a===1?`symbol`:`symbols`}_`),i.push(``);let o=i.join(`
51
+ `);if(c+=o.length,c>81920){r.push(`\n_Output truncated at 80KB. ${Object.keys(s).length-r.filter(e=>e.startsWith(`### `)).length} files omitted._`);break}r.push(o)}return n.length>0&&r.push(this.formatCallGraph(n)),r.join(`
52
+ `)}formatCallGraph(e){let t=new Map;for(let n of e){if(n.callerName===`<module>`)continue;let e=`${n.callerFile}:${n.callerName}->${n.calleeName}`,r=t.get(e);r?r.count++:t.set(e,{callerFile:n.callerFile,callerName:n.callerName,calleeName:n.calleeName,count:1})}if(t.size===0)return``;let n=[];n.push(`### Call Graph Summary
53
+ `),n.push(`**${e.length} call edges** across analyzed files\n`);let r=new Map;for(let e of t.values()){let t=`${e.callerFile}#${e.callerName}`;r.has(t)||r.set(t,[]),r.get(t)?.push(e.calleeName)}let i=[...r.entries()].sort((e,t)=>t[1].length-e[1].length).slice(0,30);for(let[e,t]of i){let[r,i]=e.split(`#`);n.push(`- **${i}** (${r}) → ${t.join(`, `)}`)}return n.push(``),n.join(`
54
+ `)}};const Q=new Set([`node_modules`,`.git`,`dist`,`build`,`coverage`,`.turbo`,`.cache`,`cdk.out`]);async function Pe(e){let t=Date.now();if(!Fe(e))return null;let n;try{n=await import(`typescript`)}catch{return null}let r=Le(e);if(r.length===0)return null;let i=r.slice(0,800),a=Ie(n,e),o=n.createProgram(i,{...a,noEmit:!0,skipLibCheck:!0,allowJs:!0,target:n.ScriptTarget.ESNext,module:n.ModuleKind.ESNext,moduleResolution:n.ModuleResolutionKind.Bundler}),s=o.getTypeChecker(),l=new Map;for(let t of o.getSourceFiles()){let r=t.fileName;if(t.isDeclarationFile||r.includes(`node_modules`))continue;let i=c(e,r).replace(/\\/g,`/`);i.startsWith(`..`)||$(n,t,t,s,e,i,l)}let u=[];for(let[e,t]of l){let[n,r]=e.split(`|`);u.push({from:n,to:r,symbols:[...t].sort().slice(0,10)})}return u.sort((e,t)=>t.symbols.length-e.symbols.length),{edges:u,fileCount:i.length,edgeCount:u.length,durationMs:Date.now()-t}}function Fe(e){if(_(s(e,`tsconfig.json`))||_(s(e,`tsconfig.build.json`)))return!0;try{for(let t of y(e,{withFileTypes:!0}))if(t.isDirectory()&&!Q.has(t.name)&&!t.name.startsWith(`.`)&&_(s(e,t.name,`tsconfig.json`)))return!0}catch{}return!1}function Ie(e,t){let n=s(t,`tsconfig.json`);if(!_(n))return{};try{let r=e.readConfigFile(n,e=>v(e,`utf-8`));return r.error?{}:e.parseJsonConfigFileContent(r.config,e.sys,t).options}catch{return{}}}function Le(e){let t=[],n=new Set([`.ts`,`.tsx`]),r=(i,a)=>{if(!(a>10))try{for(let l of y(i,{withFileTypes:!0})){if(Q.has(l.name)||l.name.startsWith(`.`))continue;let u=s(i,l.name);if(l.isDirectory())r(u,a+1);else if(n.has(o(l.name))){if(l.name.endsWith(`.d.ts`)||/\.(test|spec)\.[jt]sx?$/.test(l.name)||c(e,i).replace(/\\/g,`/`).split(`/`).some(e=>e===`test`||e===`tests`||e===`__tests__`||e===`spec`))continue;t.push(u)}}}catch{}};return r(e,0),t}function $(e,t,n,r,i,a,o){if(e.isCallExpression(t)||e.isNewExpression(t)){let n=t.expression;ze(e,n,r,i,a,o)}e.forEachChild(t,t=>{$(e,t,n,r,i,a,o)})}function Re(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 ze(e,t,n,r,i,a){try{let o,s;if(e.isIdentifier(t)?(o=n.getSymbolAtLocation(t),s=t.text):e.isPropertyAccessExpression(t)&&(o=n.getSymbolAtLocation(t.name),s=t.name.text),!o||!s)return;o.flags&e.SymbolFlags.Alias&&(o=n.getAliasedSymbol(o));let l=o.getDeclarations();if(!l||l.length===0)return;let u=l[0].getSourceFile().fileName;if(u.includes(`node_modules`))return;let d=c(r,u).replace(/\\/g,`/`);if(d=Re(d),d===i||d.startsWith(`..`))return;let f=`${i}|${d}`,p=a.get(f);p?p.add(s):a.set(f,new Set([s]))}catch{}}export{ie as BlastRadiusAnalyzer,C as DependencyAnalyzer,se as DiagramGenerator,pe as EntryPointAnalyzer,j as KnowledgeProducer,I as PatternAnalyzer,D as StructureAnalyzer,Ne as SymbolAnalyzer,z as extractRegexCallGraph,Pe as extractTsCallGraph};