@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,117 @@
1
- import{parseBiome as e,parseGitStatus as t,parseOutput as n,parseTsc as r,parseVitest as i}from"./parse-output.js";import{check as a,summarizeCheckResult as o}from"./check.js";import{escapeRegExp as s}from"./regex-utils.js";import{findDeadSymbols as c}from"./dead-symbols.js";import{health as l}from"./health.js";import{resolvePath as u}from"./path-resolver.js";import{bookendReorder as d,cosineSimilarity as f,estimateTokens as p,segment as m}from"./text-utils.js";import{errorResponse as h,okResponse as g}from"./response-envelope.js";import{audit as _}from"./audit.js";import{batch as v}from"./batch.js";import{changelog as y,formatChangelog as b}from"./changelog.js";import{checkpointLatest as x,checkpointList as S,checkpointLoad as C,checkpointSave as w}from"./checkpoint.js";import{createRestorePoint as T,listRestorePoints as E,restoreFromPoint as D}from"./restore-points.js";import{codemod as O}from"./codemod.js";import{bpeSurprise as k,scoreLine as A,scoreLines as j,shannonEntropy as M}from"./compression/scoring.js";import{compact as N}from"./compact.js";import{compressOutput as P,detectOutputTool as F,getRegisteredRules as I,registerRule as L,registerRules as R}from"./compression/engine.js";import{compressTerminalOutput as z}from"./compress-output.js";import{dataTransform as B}from"./data-transform.js";import{delegate as V,delegateListModels as H}from"./delegate.js";import{diffParse as U}from"./diff-parse.js";import{digest as W}from"./digest.js";import{dogfoodLog as G}from"./dogfood-log.js";import{encode as K}from"./encode.js";import{envInfo as q}from"./env-info.js";import{evaluate as J}from"./eval.js";import{autoClaimTestFailures as Y,evidenceMap as X}from"./evidence-map.js";import{FileCache as Z}from"./file-cache.js";import{fileSummary as Q}from"./file-summary.js";import{findExamples as $}from"./find-examples.js";import{find as ee}from"./find.js";import{forgeClassify as te}from"./forge-classify.js";import{scopeMap as ne}from"./scope-map.js";import{forgeGround as re}from"./forge-ground.js";import{gitContext as ie}from"./git-context.js";import{graphAugmentSearch as ae,graphQuery as oe}from"./graph-query.js";import{guide as se}from"./guide.js";import{headTailTruncate as ce,paragraphTruncate as le,truncateToTokenBudget as ue}from"./truncation.js";import{httpRequest as de}from"./http-request.js";import{laneCreate as fe,laneDiff as pe,laneDiscard as me,laneList as he,laneMerge as ge,laneStatus as _e}from"./lane.js";import{analyzeFile as ve,measure as ye}from"./measure.js";import{onboard as be}from"./onboard.js";import{processList as xe,processLogs as Se,processStart as Ce,processStatus as we,processStop as Te}from"./process-manager.js";import{queueClear as Ee,queueCreate as De,queueDelete as Oe,queueDone as ke,queueFail as Ae,queueGet as je,queueList as Me,queueNext as Ne,queuePush as Pe}from"./queue.js";import{regexTest as Fe}from"./regex-test.js";import{rename as Ie}from"./rename.js";import{replayAppend as Le,replayCapture as Re,replayClear as ze,replayList as Be,replayTrim as Ve}from"./replay.js";import{schemaValidate as He}from"./schema-validate.js";import{snippet as Ue}from"./snippet.js";import{stashClear as We,stashDelete as Ge,stashGet as Ke,stashList as qe,stashSet as Je}from"./stash.js";import{stratumCard as Ye}from"./stratum-card.js";import{symbol as Xe}from"./symbol.js";import{classifyExitCode as Ze,testRun as Qe}from"./test-run.js";import{timeUtils as $e}from"./time-utils.js";import{trace as et}from"./trace.js";import{watchList as tt,watchStart as nt,watchStop as rt}from"./watch.js";import{webFetch as it}from"./web-fetch.js";import{parseSearchResults as at,webSearch as ot}from"./web-search.js";import{addToWorkset as st,deleteWorkset as ct,getWorkset as lt,listWorksets as ut,removeFromWorkset as dt,saveWorkset as ft}from"./workset.js";export{Z as FileCache,st as addToWorkset,ve as analyzeFile,_ as audit,Y as autoClaimTestFailures,v as batch,d as bookendReorder,k as bpeSurprise,y as changelog,a as check,x as checkpointLatest,S as checkpointList,C as checkpointLoad,w as checkpointSave,Ze as classifyExitCode,O as codemod,N as compact,P as compressOutput,z as compressTerminalOutput,f as cosineSimilarity,T as createRestorePoint,B as dataTransform,V as delegate,H as delegateListModels,ct as deleteWorkset,F as detectOutputTool,U as diffParse,W as digest,G as dogfoodLog,K as encode,q as envInfo,h as errorResponse,s as escapeRegExp,p as estimateTokens,J as evaluate,X as evidenceMap,Q as fileSummary,ee as find,c as findDeadSymbols,$ as findExamples,te as forgeClassify,re as forgeGround,b as formatChangelog,I as getRegisteredRules,lt as getWorkset,ie as gitContext,ae as graphAugmentSearch,oe as graphQuery,se as guide,ce as headTailTruncate,l as health,de as httpRequest,fe as laneCreate,pe as laneDiff,me as laneDiscard,he as laneList,ge as laneMerge,_e as laneStatus,E as listRestorePoints,ut as listWorksets,ye as measure,g as okResponse,be as onboard,le as paragraphTruncate,e as parseBiome,t as parseGitStatus,n as parseOutput,at as parseSearchResults,r as parseTsc,i as parseVitest,xe as processList,Se as processLogs,Ce as processStart,we as processStatus,Te as processStop,Ee as queueClear,De as queueCreate,Oe as queueDelete,ke as queueDone,Ae as queueFail,je as queueGet,Me as queueList,Ne as queueNext,Pe as queuePush,Fe as regexTest,L as registerRule,R as registerRules,dt as removeFromWorkset,Ie as rename,Le as replayAppend,Re as replayCapture,ze as replayClear,Be as replayList,Ve as replayTrim,u as resolvePath,D as restoreFromPoint,ft as saveWorkset,He as schemaValidate,ne as scopeMap,A as scoreLine,j as scoreLines,m as segment,M as shannonEntropy,Ue as snippet,We as stashClear,Ge as stashDelete,Ke as stashGet,qe as stashList,Je as stashSet,Ye as stratumCard,o as summarizeCheckResult,Xe as symbol,Qe as testRun,$e as timeUtils,et as trace,ue as truncateToTokenBudget,tt as watchList,nt as watchStart,rt as watchStop,it as webFetch,ot as webSearch};
1
+ import{DependencyAnalyzer as e,DiagramGenerator as t,EntryPointAnalyzer as n,PatternAnalyzer as r,StructureAnalyzer as i,SymbolAnalyzer as a,extractRegexCallGraph as o,extractTsCallGraph as s}from"../../analyzers/dist/index.js";import{exec as c,execFile as l,execFileSync as u,spawn as d}from"node:child_process";import{mkdir as f,readFile as p,readdir as m,rm as h,stat as g,writeFile as _}from"node:fs/promises";import{basename as v,dirname as y,extname as b,isAbsolute as x,join as S,relative as C,resolve as w}from"node:path";import{promisify as T}from"node:util";import{SUPPORTED_EXTENSIONS as E,WasmRuntime as D,extractCalls as ee,extractImports as O,extractSymbols as k,resolveScopes as A}from"../../chunker/dist/index.js";import{appendFileSync as te,cpSync as j,existsSync as M,mkdirSync as N,readFileSync as P,readdirSync as F,renameSync as I,rmSync as ne,statSync as L,unlinkSync as re,watch as ie,writeFileSync as R}from"node:fs";import{AIKIT_PATHS as z,resolveStateDir as B}from"../../core/dist/index.js";import{createHash as V}from"node:crypto";import{createTwoFilesPatch as ae}from"diff";import{LRUCache as oe}from"lru-cache";import{encode as se}from"gpt-tokenizer/model/gpt-4o";import{request as ce}from"node:http";import{arch as le,cpus as ue,freemem as de,hostname as fe,platform as pe,release as me,totalmem as he,type as ge}from"node:os";import _e from"node:vm";import ve from"turndown";function ye(e){let t=[];for(let n of e.matchAll(/^(.+?)\((\d+),(\d+)\):\s+(error|warning)\s+(TS\d+):\s+(.+)$/gm))t.push({file:n[1],line:Number.parseInt(n[2],10),column:Number.parseInt(n[3],10),severity:n[4],code:n[5],message:n[6]});if(t.length===0)for(let n of e.matchAll(/^(.+?):(\d+):(\d+)\s+-\s+(error|warning)\s+(TS\d+):\s+(.+)$/gm))t.push({file:n[1],line:Number.parseInt(n[2],10),column:Number.parseInt(n[3],10),severity:n[4],code:n[5],message:n[6]});return t}function be(e){return e.replace(/\x1B(?:[@-Z\\-_]|\[[0-?]*[ -/]*[@-~])/g,``)}function xe(e){let t=be(e),n=[];for(let e of t.matchAll(/^\s*([✓✕×-])\s+(.+?)(?:\s+(\d+)ms)?$/gm)){let t=e[1],r=t===`✓`?`pass`:t===`-`?`skip`:`fail`;n.push({name:e[2].trim(),status:r,duration:e[3]?Number.parseInt(e[3],10):void 0})}for(let e of t.matchAll(/^\s*([✓✕×])\s+(\S+\.test\.\w+)\s+\((\d+)\s+tests?\)\s*(\d+ms)?$/gm)){let t=e[1]===`✓`?`pass`:`fail`;n.push({name:e[2],file:e[2],status:t,duration:e[4]?Number.parseInt(e[4],10):void 0})}let r=/Tests\s+(?:(\d+)\s+passed)?(?:\s*\|\s*)?(?:(\d+)\s+failed)?(?:\s*\|\s*)?(?:(\d+)\s+skipped)?\s*\((\d+)\)/.exec(t),i=r?Number.parseInt(r[1]??`0`,10):n.filter(e=>e.status===`pass`).length,a=r?Number.parseInt(r[2]??`0`,10):n.filter(e=>e.status===`fail`).length,o=r?Number.parseInt(r[3]??`0`,10):n.filter(e=>e.status===`skip`).length,s=/Duration\s+(\d+(?:\.\d+)?)(?:ms|s)/.exec(t),c=s?s[0].includes(`s`)&&!s[0].includes(`ms`)?Number.parseFloat(s[1])*1e3:Number.parseFloat(s[1]):void 0,l=/Test Files\s+(\d+)\s+passed/.exec(t);return{tests:n,passed:i,failed:a,skipped:o,duration:c,suites:l?Number.parseInt(l[1],10):void 0}}function Se(e){let t=[];for(let n of e.matchAll(/^(.+?):(\d+):(\d+)\s+([\w/]+)\s+━+$/gm)){let r=n[1],i=Number.parseInt(n[2],10),a=Number.parseInt(n[3],10),o=n[4],s=e.slice((n.index??0)+n[0].length,(n.index??0)+n[0].length+500),c=/^\s*[×!i]\s+(.+)$/m.exec(s),l=c?c[1].trim():o,u=o.includes(`lint`)?`warning`:`error`;t.push({file:r,line:i,column:a,severity:u,code:o,message:l})}return t}function Ce(e){let t=[],n=[],r=[],i;for(let a of e.split(`
2
+ `)){if(!a)continue;if(a.startsWith(`## `)){i=a.slice(3).split(`...`)[0];continue}let e=a[0],o=a[1],s=a.slice(3).trim();e===`?`&&o===`?`?r.push(s):(e!==` `&&e!==`?`&&t.push({status:we(e),file:s}),o!==` `&&o!==`?`&&n.push({status:we(o),file:s}))}return{staged:t,unstaged:n,untracked:r,branch:i}}function we(e){return{M:`modified`,A:`added`,D:`deleted`,R:`renamed`,C:`copied`,U:`unmerged`}[e]??e}function Te(e,t){let n=t??Ee(e);switch(n){case`tsc`:return{tool:`tsc`,errors:ye(e)};case`vitest`:return{tool:`vitest`,summary:xe(e)};case`biome`:return{tool:`biome`,errors:Se(e)};case`git-status`:return{tool:`git-status`,status:Ce(e)};default:throw Error(`Unknown tool: ${n}. Supported: tsc, vitest, biome, git-status`)}}function Ee(e){return e.includes(`error TS`)||/\(\d+,\d+\):\s+error/.test(e)?`tsc`:e.includes(`vitest`)||e.includes(`Test Files`)||e.includes(`✓`)?`vitest`:e.includes(`biome`)||/\w+\/\w+\s+━+/.test(e)?`biome`:/^##\s/.test(e)||/^[MADRCU?! ]{2}\s/.test(e)?`git-status`:`unknown`}const De=T(c);let Oe=0;function ke(e){let t=e;return[t.stdout?.toString()??``,t.stderr?.toString()??``].filter(Boolean).join(`
3
+ `).trim()||t.message||`Command failed`}async function Ae(e={}){if(Oe>=2)throw Error(`Too many concurrent check runs (max 2). Try again later.`);Oe++;try{return await je(e)}finally{Oe--}}async function je(e){let t=e.cwd??process.cwd(),n={errors:[],passed:!0,raw:``},r={errors:[],passed:!0,raw:``};if(!e.skipTypes)try{let n=S(t,`package.json`),r=!1;try{r=!!JSON.parse(await p(n,`utf-8`)).scripts?.typecheck}catch{}if(r&&!e.files?.length)await De(`npx turbo run typecheck`,{cwd:t,timeout:12e4});else{let n=[`--noEmit`];e.files?.length&&n.push(...e.files),await De(`npx tsc ${n.join(` `)}`,{cwd:t,timeout:12e4})}}catch(e){n.raw=ke(e),n.errors=ye(n.raw),n.passed=n.errors.length===0}if(!e.skipLint)try{let n=[`check`];e.files?.length&&n.push(...e.files),await De(`npx biome ${n.join(` `)}`,{cwd:t,timeout:12e4})}catch(e){r.raw=ke(e),r.errors=Se(r.raw),r.passed=r.errors.length===0}let i=e.detail??`errors`,a={tsc:n,biome:r,passed:n.passed&&r.passed};return i===`full`?a:{tsc:{errors:n.errors,passed:n.passed},biome:{errors:r.errors,passed:r.passed},passed:a.passed}}function Me(e){let t=e.tsc.errors.filter(e=>e.severity===`error`),n=e.tsc.errors.filter(e=>e.severity===`warning`),r=e.biome.errors.filter(e=>e.severity===`error`),i=e.biome.errors.filter(e=>e.severity===`warning`);return{passed:e.passed,tsc:{passed:e.tsc.passed,errorCount:t.length,warningCount:n.length,topErrors:t.slice(0,3).map(e=>`${e.file}:${e.line} — ${e.message}`)},biome:{passed:e.biome.passed,errorCount:r.length,warningCount:i.length,topErrors:r.slice(0,3).map(e=>`${e.file}:${e.line} — ${e.message}`)}}}function H(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}const Ne=new Set([`.md`,`.mdx`]);async function Pe(e,t,n={}){let{rootPath:r,limit:i=100}=n,a=await e.embed(`export function class const type interface enum`),o=await t.search(a,{limit:i*3}),s=/^export\s+(?:async\s+)?(?:function|class|const|let|interface|type|enum)\s+(\w+)/gm,c=[],l=new Map;for(let e of o){if(!Fe(e.record.sourcePath,r))continue;let t=l.get(e.record.sourcePath)??[];t.push(e),l.set(e.record.sourcePath,t)}let u=new Set;if(D.get())for(let[e]of l){let t=b(e);if(E.has(t))try{let n=await k(await p(e,`utf-8`),t,e);for(let t of n)t.exported&&c.push({name:t.name,path:e,line:t.line,kind:t.kind});u.add(e)}catch{}}for(let[e,t]of l)if(!u.has(e))for(let e of t){let t=e.record.content;s.lastIndex=0;for(let n of t.matchAll(s)){let r=n.index??0,i=t.slice(0,r).split(`
4
+ `).length-1,a=t.slice(r).match(/export\s+(?:async\s+)?(\w+)/);c.push({name:n[1],path:e.record.sourcePath,line:e.record.startLine+i,kind:a?.[1]??`unknown`})}}let d=new Map;for(let e of c){let t=`${e.path}:${e.name}`;d.has(t)||d.set(t,e)}let f=[];for(let e of d.values()){let n=H(e.name),r=RegExp(`import\\s+.*\\b${n}\\b.*from`,`m`),i=RegExp(`export\\s+\\{[^}]*\\b${n}\\b`,`m`),a=await t.ftsSearch(`import ${e.name}`,{limit:10}),o=a.some(t=>t.record.sourcePath!==e.path&&r.test(t.record.content)),s=a.some(t=>t.record.sourcePath!==e.path&&i.test(t.record.content));!o&&!s&&f.push(e)}let m=(e,t)=>e.path===t.path?e.line-t.line:e.path.localeCompare(t.path),h=[],g=[];for(let e of f){let t=b(e.path).toLowerCase();Ne.has(t)?g.push(e):h.push(e)}return h.sort(m),g.sort(m),{deadInSource:h,deadInDocs:g,totalExports:d.size,totalDeadSource:h.length,totalDeadDocs:g.length}}function Fe(e,t){if(!t)return!0;let n=Ie(t).replace(/\/+$/,``),r=Ie(e);return r===n||r.startsWith(`${n}/`)}function Ie(e){return e.replace(/\\/g,`/`).replace(/^\.\//,``)}function Le(e){let t=w(e??process.cwd()),n=[],r=S(t,`package.json`);if(M(r)){n.push({name:`package.json`,status:`pass`,message:`Found`});try{let e=JSON.parse(P(r,`utf-8`));e.name?n.push({name:`package.name`,status:`pass`,message:e.name}):n.push({name:`package.name`,status:`warn`,message:`Missing package name`});let t=e.scripts??{};for(let e of[`build`,`test`,`lint`])t[e]?n.push({name:`script:${e}`,status:`pass`,message:t[e]}):n.push({name:`script:${e}`,status:`warn`,message:`No "${e}" script defined`});e.type===`module`?n.push({name:`esm`,status:`pass`,message:`ESM ("type": "module")`}):e.type===`commonjs`?n.push({name:`esm`,status:`pass`,message:`CJS ("type": "commonjs")`}):n.push({name:`esm`,status:`warn`,message:`No "type" field — defaults to CJS`}),e.engines?.node?n.push({name:`engines.node`,status:`pass`,message:e.engines.node}):n.push({name:`engines.node`,status:`warn`,message:`No Node.js engine constraint`})}catch{n.push({name:`package.json`,status:`fail`,message:`Failed to parse package.json`})}}else n.push({name:`package.json`,status:`fail`,message:`Missing — not a Node.js project`});let i=S(t,`tsconfig.json`);M(i)?n.push({name:`tsconfig.json`,status:`pass`,message:`Found`}):n.push({name:`tsconfig.json`,status:`warn`,message:`Missing`});let a=S(t,`.gitignore`);if(M(a)){let e=P(a,`utf-8`),t=e.includes(`node_modules`),r=e.includes(`dist`);t&&r?n.push({name:`.gitignore`,status:`pass`,message:`Includes node_modules and dist`}):n.push({name:`.gitignore`,status:`warn`,message:`Missing: ${t?``:`node_modules `}${r?``:`dist`}`.trim()})}else n.push({name:`.gitignore`,status:`warn`,message:`Missing`});let o=[`pnpm-lock.yaml`,`package-lock.json`,`yarn.lock`,`bun.lock`].find(e=>M(S(t,e)));o?n.push({name:`lockfile`,status:`pass`,message:o}):n.push({name:`lockfile`,status:`warn`,message:`No lock file found`});let s=S(t,`README.md`);if(M(s)){let e=P(s,`utf-8`).length;n.push({name:`README.md`,status:e>100?`pass`:`warn`,message:e>100?`Found (${e} chars)`:`Found but very short`})}else n.push({name:`README.md`,status:`warn`,message:`Missing`});if(M(S(t,`LICENSE`))||M(S(t,`LICENSE.md`))?n.push({name:`LICENSE`,status:`pass`,message:`Found`}):n.push({name:`LICENSE`,status:`warn`,message:`Missing`}),M(i))try{let e=P(i,`utf-8`).replace(/\/\/.*$/gm,``).replace(/\/\*[\s\S]*?\*\//g,``);JSON.parse(e).compilerOptions?.strict===!0?n.push({name:`typescript.strict`,status:`pass`,message:`strict: true`}):n.push({name:`typescript.strict`,status:`warn`,message:`strict mode not enabled in tsconfig.json`})}catch{}if(M(r))try{let e=JSON.parse(P(r,`utf-8`));e.exports?n.push({name:`package.exports`,status:`pass`,message:`Has exports field`}):e.workspaces||M(S(t,`pnpm-workspace.yaml`))||n.push({name:`package.exports`,status:`warn`,message:`Missing — consider adding exports field for explicit public API`});let i=Re(t,e);i.length>0&&ze(t,i,n)}catch{}let c=S(t,`dist`),l=S(t,`src`);if(M(c)&&M(l))try{let e=L(c).mtimeMs;Be(l)>e?n.push({name:`build.freshness`,status:`warn`,message:`Source files are newer than dist/ — rebuild may be needed`}):n.push({name:`build.freshness`,status:`pass`,message:`Build output is fresh`})}catch{}if(M(l)){let e=Ue(l);if(e.length===0)n.push({name:`circular_deps`,status:`pass`,message:`No circular imports detected`});else{let t=e.slice(0,3).map(e=>e.join(` → `));n.push({name:`circular_deps`,status:`warn`,message:`${e.length} circular import(s): ${t.join(`; `)}${e.length>3?` (+${e.length-3} more)`:``}`})}}let u=n.length,d=n.filter(e=>e.status===`pass`).length,f=n.filter(e=>e.status===`fail`).length;return{path:t,checks:n,score:u>0?Math.round(d/u*100):0,summary:f>0?`${f} critical issue(s), ${u-d-f} warning(s)`:u-d>0?`${u-d} warning(s)`:`All checks passed`}}function Re(e,t){let n=[];Array.isArray(t.workspaces)?n.push(...t.workspaces):t.workspaces&&typeof t.workspaces==`object`&&Array.isArray(t.workspaces.packages)&&n.push(...t.workspaces.packages);let r=S(e,`pnpm-workspace.yaml`);if(M(r)){let e=P(r,`utf-8`);for(let t of e.split(`
5
+ `)){let e=t.match(/^\s*-\s+['"]?([^'"#\s]+)['"]?\s*$/);e&&n.push(e[1])}}let i=[];for(let t of n)if(t.endsWith(`/*`)||t.endsWith(`/**`)){let n=S(e,t.replace(/\/\*+$/,``));if(M(n))try{for(let e of F(n,{withFileTypes:!0}))e.isDirectory()&&M(S(n,e.name,`package.json`))&&i.push(S(n,e.name))}catch{}}else{let n=S(e,t);M(S(n,`package.json`))&&i.push(n)}return i}function ze(e,t,n){let r=0,i=0,a=new Map;for(let e of t)try{let t=JSON.parse(P(S(e,`package.json`),`utf-8`));t.scripts?.test||r++,!t.exports&&!t.main&&i++;let n={...t.dependencies,...t.devDependencies};for(let e of Object.values(n))if(typeof e==`string`&&e.startsWith(`workspace:`)){let t=e.startsWith(`workspace:*`)?`workspace:*`:e.startsWith(`workspace:^`)?`workspace:^`:`workspace:~`;a.set(t,(a.get(t)??0)+1)}}catch{}if(r>0?n.push({name:`workspace.test-scripts`,status:`warn`,message:`${r}/${t.length} workspace packages missing test script`}):n.push({name:`workspace.test-scripts`,status:`pass`,message:`All ${t.length} workspace packages have test scripts`}),i>0?n.push({name:`workspace.exports`,status:`warn`,message:`${i}/${t.length} packages missing exports field`}):t.length>0&&n.push({name:`workspace.exports`,status:`pass`,message:`All ${t.length} packages have exports or main field`}),a.size>1){let e=[...a.entries()].map(([e,t])=>`${e} (${t})`).join(`, `);n.push({name:`workspace.protocol`,status:`warn`,message:`Mixed workspace protocols: ${e} — consider standardizing`})}else if(a.size===1){let[e]=a.keys();n.push({name:`workspace.protocol`,status:`pass`,message:`Consistent workspace protocol: ${e}`})}}function Be(e){let t=0;try{for(let n of F(e,{withFileTypes:!0})){if(n.name.startsWith(`.`)||n.name===`node_modules`)continue;let r=S(e,n.name);t=n.isDirectory()?Math.max(t,Be(r)):Math.max(t,L(r).mtimeMs)}}catch{}return t}const Ve=/(?:import|export)\s+.*?from\s+['"](\.[^'"]+)['"]/g,He=new Set([`.ts`,`.tsx`,`.mts`]);function Ue(e){let t=new Map;We(e,e,t);let n=[],r=new Set,i=new Set;function a(e,o){if(i.has(e)){let t=o.indexOf(e);t>=0&&n.push(o.slice(t).concat(e));return}if(!r.has(e)){r.add(e),i.add(e),o.push(e);for(let n of t.get(e)??[])a(n,o);o.pop(),i.delete(e)}}for(let e of t.keys())a(e,[]);return n}function We(e,t,n){let r;try{r=F(e)}catch{return}for(let i of r){if(i.startsWith(`.`)||i===`node_modules`||i===`__tests__`)continue;let r=S(e,i);try{if(L(r).isDirectory())We(r,t,n);else if(He.has(b(i))){let i=C(t,r).replace(/\\/g,`/`),a=P(r,`utf-8`),o=[];for(let n of a.matchAll(Ve)){let r=n[1],i=Ge(e,r,t);i&&o.push(i)}n.set(i,o)}}catch{}}}function Ge(e,t,n){let r=w(e,t);for(let e of[`.ts`,`.tsx`,`.mts`,`.js`,`.mjs`,``])return C(n,e?r.replace(/\.[^.]+$/,``)+e:r).replace(/\\/g,`/`).replace(/\.js$/,`.ts`).replace(/\.mjs$/,`.mts`);return null}function Ke(e){return!e||e===`.`?process.cwd():x(e)?e:w(process.cwd(),e)}function U(e){return Math.ceil(e.length/4)}function qe(e,t){switch(t){case`paragraph`:return e.split(/\n\s*\n/).map(e=>e.trim()).filter(e=>e.length>0);case`sentence`:return e.split(/(?<=[.!?])\s+/).map(e=>e.trim()).filter(e=>e.length>0);case`line`:return e.split(`
6
+ `).map(e=>e.trim()).filter(e=>e.length>0)}}function Je(e,t){let n=0,r=0,i=0;for(let a=0;a<e.length;a++)n+=e[a]*t[a],r+=e[a]*e[a],i+=t[a]*t[a];let a=Math.sqrt(r)*Math.sqrt(i);return a===0?0:n/a}function Ye(e){if(e.length<=2)return e;let t=Array(e.length),n=0,r=e.length-1;for(let i=0;i<e.length;i++)i%2==0?t[n++]=e[i]:t[r--]=e[i];return t}function Xe(e,t,n,r,i){let a=typeof n==`string`?n:JSON.stringify(n);return{ok:!0,tool:e,summary:t,data:n,meta:{durationMs:r.durationMs,tokensEstimate:r.tokensEstimate??U(a),detail:r.detail??`summary`,cached:r.cached??!1,truncated:r.truncated??!1,...r.caveats?.length?{caveats:r.caveats}:{}},next:i}}function Ze(e,t,n){return{ok:!1,tool:e,summary:t.message,meta:{durationMs:n,tokensEstimate:U(t.message),detail:`summary`,cached:!1,truncated:!1},error:t}}const Qe=[`structure`,`dependencies`,`patterns`,`health`,`dead_symbols`,`check`,`entry_points`];async function $e(t,a,o={}){let s=Date.now(),c=Ke(o.path),l=o.checks??Qe,u=o.detail??`summary`,d=[],f={score:100,recommendations:d};try{let o=[];l.includes(`structure`)&&o.push((async()=>{let e=await new i().analyze(c,{format:`json`}),t=e.data;f.structure={files:t.stats?.totalFiles??e.meta.fileCount,packages:Array.isArray(t.packages)?t.packages.length:0,languages:t.stats?.languages??{}}})()),l.includes(`dependencies`)&&o.push((async()=>{let t=(await new e().analyze(c)).data,n=t.imports??[];f.dependencies={external:t.external?.length??n.filter(e=>e.isExternal).length,internal:t.internal?.length??n.filter(e=>!e.isExternal).length}})()),l.includes(`patterns`)&&o.push((async()=>{f.patterns=((await new r().analyze(c)).data.patterns??[]).map(e=>({name:e.pattern,confidence:e.confidence,count:e.locations.length}))})()),l.includes(`entry_points`)&&o.push((async()=>{let e=(await new n().analyze(c)).data,t=e.entryPoints??[],r={};for(let e of t)r[e.type]=(r[e.type]??0)+1;f.entryPoints={total:e.total??t.length,types:r}})()),l.includes(`health`)&&o.push((async()=>{let e=Le(c);f.health={score:e.score,checks:e.checks.length,passed:e.checks.filter(e=>e.status===`pass`).length,warned:e.checks.filter(e=>e.status===`warn`).length,failed:e.checks.filter(e=>e.status===`fail`).length},e.score<70&&d.push({priority:`medium`,area:`health`,message:`Health score ${e.score}/100 — ${f.health.failed} failed checks`})})()),l.includes(`dead_symbols`)&&o.push((async()=>{let e=await Pe(a,t,{rootPath:c});f.deadSymbols={source:e.totalDeadSource,docs:e.totalDeadDocs},e.totalDeadSource>0&&d.push({priority:e.totalDeadSource>10?`high`:`medium`,area:`dead-code`,message:`${e.totalDeadSource} unused exports in source files`})})()),l.includes(`check`)&&o.push((async()=>{let e=Me(await Ae({cwd:c}));f.typecheck={passed:e.tsc.passed,errorCount:e.tsc.errorCount,topErrors:e.tsc.topErrors},f.lint={passed:e.biome.passed,errorCount:e.biome.errorCount,topErrors:e.biome.topErrors},e.tsc.passed||d.push({priority:`high`,area:`type-safety`,message:`Fix ${e.tsc.errorCount} tsc error(s)`}),e.biome.passed||d.push({priority:`medium`,area:`lint`,message:`Fix ${e.biome.errorCount} lint error(s)`})})()),await Promise.all(o);let p=0;f.typecheck&&!f.typecheck.passed&&(p+=15),f.lint&&!f.lint.passed&&(p+=5),f.health&&f.health.score<80&&(p+=10),f.deadSymbols&&f.deadSymbols.source>10&&(p+=5),f.entryPoints&&f.entryPoints.total===0&&(p+=5),f.score=Math.max(0,100-p);let m={high:0,medium:1,low:2};d.sort((e,t)=>m[e.priority]-m[t.priority]);let h=et(f,u),g=[];return f.typecheck&&!f.typecheck.passed&&g.push({tool:`check`,reason:`Get full error details`,suggested_args:{detail:`errors`}}),f.deadSymbols&&f.deadSymbols.source>0&&g.push({tool:`dead_symbols`,reason:`See which exports are unused`,suggested_args:{root_path:c}}),Xe(`audit`,h,f,{durationMs:Date.now()-s,detail:u},g)}catch(e){return Ze(`audit`,{code:`ANALYSIS_FAILED`,category:`runtime`,retryable:!1,message:`Audit failed: ${e instanceof Error?e.message:String(e)}`},Date.now()-s)}}function et(e,t){let n=[];if(n.push(`## Audit Report — Score: ${e.score}/100\n`),e.structure&&n.push(`**Structure:** ${e.structure.files} files, ${e.structure.packages} packages, ${Object.keys(e.structure.languages).length} languages`),e.entryPoints){let t=Object.entries(e.entryPoints.types).map(([e,t])=>`${t} ${e}`).join(`, `);n.push(`**Entry Points:** ${e.entryPoints.total} (${t||`none`})`)}if(e.dependencies&&n.push(`**Dependencies:** ${e.dependencies.external} external, ${e.dependencies.internal} internal`),e.health&&n.push(`**Health:** ${e.health.score}/100 (${e.health.passed}✓ ${e.health.warned}⚠ ${e.health.failed}✗)`),e.deadSymbols&&n.push(`**Dead Symbols:** ${e.deadSymbols.source} in source (actionable), ${e.deadSymbols.docs} in docs`),e.typecheck){let t=e.typecheck.passed?`✓ passed`:`✗ ${e.typecheck.errorCount} errors`;n.push(`**Typecheck:** ${t}`)}if(e.lint){let t=e.lint.passed?`✓ passed`:`✗ ${e.lint.errorCount} errors`;n.push(`**Lint:** ${t}`)}if(e.recommendations.length>0){n.push(`
7
+ ### Recommendations
8
+ `);for(let t of e.recommendations){let e=t.priority===`high`?`🔴`:t.priority===`medium`?`🟡`:`🟢`;n.push(`${e} **${t.area}:** ${t.message}`)}}if(t===`full`&&e.patterns&&e.patterns.length>0){n.push(`
9
+ ### Patterns Detected
10
+ `),n.push(`| Pattern | Confidence | Count |`),n.push(`|---------|-----------|-------|`);for(let t of e.patterns)n.push(`| ${t.name} | ${t.confidence} | ${t.count} |`)}return n.join(`
11
+ `)}async function tt(e,t,n={}){let r=Math.max(1,n.concurrency??4),i=[],a=[...e];async function o(e){let n=Date.now();try{let r=await t(e);return{id:e.id,status:`success`,result:r,durationMs:Date.now()-n}}catch(t){return{id:e.id,status:`error`,error:t instanceof Error?t.message:String(t),durationMs:Date.now()-n}}}for(;a.length>0;){let e=a.splice(0,r),t=await Promise.allSettled(e.map(e=>o(e)));for(let n=0;n<t.length;n++){let r=t[n];if(r.status===`fulfilled`){i.push(r.value);continue}i.push({id:e[n]?.id??`unknown`,status:`error`,error:r.reason instanceof Error?r.reason.message:`Promise rejected`,durationMs:0})}}return i}const nt=/^[a-zA-Z0-9_./\-~^@{}]+$/;function rt(e){let{from:t,to:n=`HEAD`,format:r=`grouped`,includeBreaking:i=!0,cwd:a=process.cwd()}=e;if(!nt.test(t))throw Error(`Invalid git ref: ${t}`);if(!nt.test(n))throw Error(`Invalid git ref: ${n}`);let o;try{o=u(`git`,[`log`,`${t}..${n}`,`--format=%H%s%b%an%ai`],{cwd:a,encoding:`utf8`,maxBuffer:10*1024*1024,timeout:3e4})}catch{throw Error(`Git log failed. Ensure "${t}" and "${n}" are valid refs.`)}let s=o.split(``).map(e=>e.trim()).filter(Boolean).map(e=>{let[t=``,n=``,r=``,i=``,a=``]=e.split(``),o=n.match(/^(\w+)(?:\(([^)]*)\))?(!)?:\s*(.+)/);return{hash:t.slice(0,8),type:o?.[1]??`other`,scope:o?.[2]??``,subject:o?.[4]??n,body:r.trim(),author:i.trim(),date:a.trim().split(` `)[0],breaking:!!(o?.[3]||/BREAKING[\s-]CHANGE/i.test(r))}}),c={},l=0;for(let e of s)c[e.type]=(c[e.type]??0)+1,e.breaking&&l++;return{entries:s,markdown:it(s,r,i),stats:{total:s.length,breaking:l,types:c}}}function it(e,t,n){let r=[`# Changelog`,``];if(n){let t=e.filter(e=>e.breaking);if(t.length>0){r.push(`## Breaking Changes`,``);for(let e of t)r.push(`- ${e.subject} (${e.hash})`);r.push(``)}}if(t===`grouped`){let t={};for(let n of e)t[n.type]||(t[n.type]=[]),t[n.type].push(n);let n=[`feat`,`fix`,`refactor`,`perf`,`test`,`docs`,`chore`],i={feat:`Features`,fix:`Bug Fixes`,refactor:`Refactoring`,perf:`Performance`,test:`Tests`,docs:`Documentation`,chore:`Chores`,other:`Other`};for(let e of[...n,...Object.keys(t).filter(e=>!n.includes(e))])if(t[e]?.length){r.push(`## ${i[e]??e}`,``);for(let n of t[e]){let e=n.scope?`**${n.scope}:** `:``;r.push(`- ${e}${n.subject} (${n.hash})`)}r.push(``)}}else if(t===`chronological`)for(let t of e){let e=t.scope?`(${t.scope}) `:``;r.push(`- \`${t.date}\` ${t.type}: ${e}${t.subject} (${t.hash})`)}else{let t={};for(let n of e){let e=n.scope||`general`;t[e]||(t[e]=[]),t[e].push(n)}for(let[e,n]of Object.entries(t)){r.push(`## ${e}`,``);for(let e of n)r.push(`- ${e.type}: ${e.subject} (${e.hash})`);r.push(``)}}return r.join(`
12
+ `)}function at(e){let t=w(B(e??process.cwd()),`checkpoints`);return M(t)||N(t,{recursive:!0}),t}function ot(e,t,n){let r=e.toLowerCase().replace(/[^a-z0-9]+/g,`-`).replace(/^-|-$/g,``)||`checkpoint`,i={id:`${Date.now()}-${r}`,label:e,createdAt:new Date().toISOString(),data:t,files:n?.files,notes:n?.notes},a=w(at(n?.cwd),`${i.id}.json`),o=`${a}.tmp`;return R(o,`${JSON.stringify(i,null,2)}\n`,`utf-8`),I(o,a),i}function st(e,t){let n=at(t),r=w(n,`${e}.json`);if(r.startsWith(w(n))&&M(r))try{return JSON.parse(P(r,`utf-8`))}catch(e){if(e?.code===`ENOENT`)return;console.warn(`Corrupt state file ${r}: ${e instanceof Error?e.message:String(e)}`);return}}function ct(e){let t=at(e);return F(t).filter(e=>e.endsWith(`.json`)).flatMap(e=>{let n=w(t,e);try{return[JSON.parse(P(n,`utf-8`))]}catch(e){return e?.code===`ENOENT`||console.warn(`Corrupt state file ${n}: ${e instanceof Error?e.message:String(e)}`),[]}}).sort((e,t)=>t.createdAt.localeCompare(e.createdAt))}function lt(e){return ct(e)[0]}const ut=[`.ts`,`.tsx`,`.js`,`.jsx`],dt=new Set([`node_modules`,`.git`,`dist`,`build`,`coverage`,`.turbo`,`.cache`,`cdk.out`,z.state]);function ft(e){return e.replace(/\\/g,`/`)}function pt(e){return e.replace(/[.+^${}()|[\]\\]/g,`\\$&`)}function mt(e,t){let n=ft(e),r=ft(t).trim();if(!r)return!1;let i=pt(r).replace(/\*\*/g,`::DOUBLE_STAR::`).replace(/\*/g,`[^/]*`).replace(/\?/g,`[^/]`).replace(/::DOUBLE_STAR::/g,`.*`);return RegExp(`^${i}$`).test(n)}function ht(e,t,n){return t.some(t=>mt(e,t)?!0:n?mt(`${e}/`,t):!1)}async function gt(e,t,n){let r=[],i=t.map(e=>e.toLowerCase());async function a(t){let o=await m(t);for(let s of o){if(dt.has(s))continue;let o=S(t,s),c=await g(o),l=ft(C(e,o));if(c.isDirectory()){ht(l,n,!0)||await a(o);continue}ht(l,n,!1)||i.includes(b(s).toLowerCase())&&r.push(o)}}return await a(e),r.sort((e,t)=>e.localeCompare(t)),r}const _t=z.restorePoints;function vt(){let e=S(process.cwd(),_t);return M(e)||N(e,{recursive:!0}),e}function yt(e,t,n){let r=vt(),i=`${Date.now()}-${e}`,a={id:i,timestamp:new Date().toISOString(),operation:e,files:t,description:n};R(S(r,`${i}.json`),`${JSON.stringify(a,null,2)}\n`,`utf-8`);let o=F(r).filter(e=>e.endsWith(`.json`)).sort();for(;o.length>50;){let e=o.shift();if(!e)break;try{re(S(r,e))}catch{}}return i}function bt(){let e=S(process.cwd(),_t);return M(e)?F(e).filter(e=>e.endsWith(`.json`)).sort().reverse().map(t=>{try{return JSON.parse(P(S(e,t),`utf-8`))}catch(n){return console.debug(`Skipping corrupt restore point ${S(e,t)}: ${n instanceof Error?n.message:String(n)}`),null}}).filter(e=>e!==null):[]}async function xt(e){let t=S(S(process.cwd(),_t),`${e}.json`);if(!M(t))throw Error(`Restore point not found: ${e}`);let n=JSON.parse(P(t,`utf-8`)),r=[];for(let e of n.files){let t=y(e.path);M(t)||N(t,{recursive:!0}),await _(e.path,e.content,`utf-8`),r.push(e.path)}return r}function St(e){return e.replace(/\\/g,`/`)}async function Ct(e){let{rootPath:t,rules:n,extensions:r=ut,exclude:i=[],dryRun:a=!1}=e,o=n.map(e=>({...e,regex:new RegExp(e.pattern,`g`)})),s=await gt(t,r,i),c=[],l=new Set,u=0,d=[];for(let e of s){let n=St(C(t,e)),r=await p(e,`utf-8`),i=r.split(/\r?\n/),s=!1;for(let[e,t]of o.entries())if(!(t.fileFilter&&!mt(n,t.fileFilter)))for(let r=0;r<i.length;r++){let a=i[r];t.regex.lastIndex=0;let o=a.replace(t.regex,t.replacement);a!==o&&(i[r]=o,s=!0,l.add(e),c.push({rule:t.description,path:n,line:r+1,before:a,after:o}))}s&&(u+=1,a||(d.push({path:e,content:r}),await _(e,i.join(`
13
+ `),`utf-8`)))}return!a&&d.length>0&&yt(`codemod`,d,`codemod: ${n.length} rules, ${u} files`),{changes:c,rulesApplied:l.size,filesModified:u,dryRun:a}}const wt=new oe({max:200,ttl:1e3*60*30});function Tt(e){return V(`sha256`).update(e).digest(`hex`).slice(0,16)}function Et(e,t){let n=Tt(t),r=wt.get(e);if(wt.set(e,{hash:n,text:t,timestamp:Date.now()}),!r||r.hash===n)return{text:r?.hash===n?`[No changes since last read]`:t,isDelta:r?.hash===n,hash:n};let i=ae(e,e,r.text,t,`previous`,`current`,{context:3});return i.length>=t.length*.8?{text:t,isDelta:!1,hash:n}:{text:i,isDelta:!0,hash:n}}const Dt=.6;function Ot(e){if(!e||e.length===0)return 0;let t=se(e),n=e.length;return n===0?0:Math.min(t.length/n,Dt)/Dt}function kt(e){if(e.length===0)return[];let t=new Map,n=[];for(let r of e){let e=se(r);n.push(e);for(let n of e)t.set(n,(t.get(n)??0)+1)}let r=[];for(let i=0;i<e.length;i++){let a=e[i],o=n[i];if(!a||o.length===0){r.push(0);continue}let s=Math.min(o.length/a.length,Dt)/Dt,c=0;for(let e of o)(t.get(e)??0)===1&&c++;let l=c/o.length,u=.6*s+.4*l;r.push(Math.min(u,1))}return r}function At(e){if(!e||e.length===0)return 0;let t=new Map;for(let n of e)t.set(n,(t.get(n)??0)+1);let n=0,r=e.length;for(let e of t.values()){let t=e/r;t>0&&(n-=t*Math.log2(t))}return Math.min(n/6.6,1)}function jt(e){try{return Ot(e)}catch{return At(e)}}async function Mt(e,t){let{query:n,maxChars:r=3e3,minScore:i=.3,segmentation:a=`paragraph`}=t,o=t.tokenBudget?t.tokenBudget*4:r,s;if(t.text)s=t.text;else if(t.path){let e;try{e=await g(t.path)}catch(e){let n=e.code;throw n===`ENOENT`?Error(`File not found: ${t.path}. Check the path and try again.`):n===`EACCES`||n===`EPERM`?Error(`Permission denied reading ${t.path}. The file exists but is not accessible.`):e}if(e.isDirectory())throw Error(`Path is a directory: ${t.path}. compact requires a file path, not a directory. Use analyze_structure or find to explore directories.`);if(e.size>1e7)throw Error(`File too large (${(e.size/1e6).toFixed(1)}MB). compact supports files up to 10MB. Consider splitting or using search instead.`);s=t.cache?(await t.cache.get(t.path)).content:await p(t.path,`utf-8`)}else throw Error(`Either "text" or "path" must be provided`);if(t.mode===`delta`&&t.path){let e=Et(t.path,s);if(e.isDelta)return{text:e.text,originalChars:s.length,compressedChars:e.text.length,ratio:e.text.length/s.length,segmentsKept:1,segmentsTotal:1}}if(s.length<=o)return{text:s,originalChars:s.length,compressedChars:s.length,ratio:1,segmentsKept:1,segmentsTotal:1};let c=qe(s,a);if(c.length===0)return{text:``,originalChars:s.length,compressedChars:0,ratio:0,segmentsKept:0,segmentsTotal:0};let l=await e.embed(n),u=kt(c),d=[];for(let t=0;t<c.length;t++){let n=.85*Je(l,await e.embed(c[t]))+.15*(u[t]??0);d.push({text:c[t],score:n,index:t})}let f=d.filter(e=>e.score>=i).sort((e,t)=>t.score-e.score),m=[],h=0;for(let e of f){if(h+e.text.length>o){h===0&&(m.push({...e,text:e.text.slice(0,o)}),h=o);break}m.push(e),h+=e.text.length+2}let _=Ye(m.sort((e,t)=>t.score-e.score)).map(e=>e.text).join(`
14
+
15
+ `);return{text:_,originalChars:s.length,compressedChars:_.length,ratio:_.length/s.length,segmentsKept:m.length,segmentsTotal:c.length}}const Nt=[];function Pt(e){Nt.push(e),Nt.sort((e,t)=>t.priority-e.priority)}function Ft(e){for(let t of e)Pt(t)}function It(){return Nt}function Lt(e){return/^(diff --git|commit [0-9a-f]{7,40}|On branch |Your branch )/m.test(e)?`git`:/^\s*[MADRCU?!]{1,2}\s+\S/m.test(e)&&/^##\s/m.test(e)?`git-status`:/^(npm (warn|ERR!|notice)|added \d+ packages?|up to date)/m.test(e)?`npm`:/^(Packages|Progress):/m.test(e)||/pnpm/.test(e)?`pnpm`:/✓|✗|PASS|FAIL|Tests?\s+\d+\s+(passed|failed)/m.test(e)||/^(PASS|FAIL)\s+\S/m.test(e)?`test-runner`:/^(error TS\d+|warning TS\d+|\S+\.tsx?[(:]\d+)/m.test(e)?`tsc`:/^\S+\.\w+:\d+:\d+\s+(error|warning|info)/m.test(e)||/Found \d+ (error|warning)/m.test(e)?`lint`:/^(CONTAINER ID|IMAGE|REPOSITORY|Step \d+\/\d+|--->)/m.test(e)||/docker|Dockerfile/i.test(e)?`docker`:/^(NAME\s+READY|NAMESPACE\s|kubectl)/m.test(e)?`kubectl`:`unknown`}function Rt(e,t={}){let{mode:n=`structural`,maxChars:r=4e3}=t,i=be(e),a=t.tool??Lt(i),o=i.length;if(o<=r)return{text:i,originalChars:o,compressedChars:i.length,ratio:1,rule:`passthrough`,tool:a,_meta:{truncated:!1,mode:n}};let s={text:i,tool:a,mode:n,maxChars:r,originalChars:o};for(let e of Nt)if(e.match(s)){let t=e.compress(s),i=t.length,c=i>r?`${t.slice(0,r-50)}\n... [truncated ${i-r+50} chars, ~${U(t.slice(r-50))} tokens]`:t;return{text:c,originalChars:o,compressedChars:c.length,ratio:c.length/o,rule:e.name,tool:a,_meta:{truncated:i>r,mode:n}}}let c=Math.floor(r*.6),l=r-c-60,u=i.split(`
16
+ `),d=``,f=0;for(let e of u){if(d.length+e.length+1>c)break;d+=`${d?`
17
+ `:``}${e}`,f++}let p=``,m=0;for(let e=u.length-1;e>=f&&!(p.length+u[e].length+1>l);e--)p=`${u[e]}${p?`
18
+ `:``}${p}`,m++;let h=`\n... [${u.length-f-m} lines omitted (${Math.max(0,o-d.length-p.length)} chars, ~${U(i.slice(d.length,Math.max(d.length,i.length-p.length)))} tokens)] ...\n`,g=`${d}${h}${p}`;return{text:g,originalChars:o,compressedChars:g.length,ratio:g.length/o,rule:`fallback-truncation`,tool:a,_meta:{truncated:!0,mode:n}}}Ft([{name:`git`,toolPatterns:[`git`,`git-status`],priority:10,match(e){return e.tool===`git`||e.tool===`git-status`},compress(e){let t=e.text.split(`
19
+ `),n=[],r=!1,i=0,a=0,o=``;for(let s of t){if(s.startsWith(`diff --git`)||s.startsWith(`---`)||s.startsWith(`+++`)){r&&(i>0||a>0)&&n.push(` [${i}+ ${a}- lines in ${o}]`),r=!1,i=0,a=0,n.push(s),s.startsWith(`diff --git`)&&(o=s.replace(/^diff --git a\/\S+ b\//,``));continue}if(s.startsWith(`@@`)){r&&(i>0||a>0)&&n.push(` [${i}+ ${a}- lines]`),r=!0,i=0,a=0,n.push(s);continue}if(e.tool===`git-status`){n.push(s);continue}if(r){s.startsWith(`+`)?i++:s.startsWith(`-`)&&a++;continue}if(s.startsWith(`commit `)||s.startsWith(`Author:`)||s.startsWith(`Date:`)||s.startsWith(`On branch`)||s.match(/^\s*\d+ file/)||s.match(/insertion|deletion/)){n.push(s);continue}if(s.startsWith(`error:`)||s.startsWith(`fatal:`)||s.startsWith(`warning:`)){n.push(s);continue}/^\s{4}\S/.test(s)&&n.push(s)}return r&&(i>0||a>0)&&n.push(` [${i}+ ${a}- lines in ${o}]`),n.join(`
20
+ `)}},{name:`npm`,toolPatterns:[`npm`,`pnpm`,`yarn`],priority:10,match(e){return e.tool===`npm`||e.tool===`pnpm`},compress(e){let t=e.text.split(`
21
+ `),n=[],r=0,i=0,a=[];for(let e of t){if(e.includes(`ERR!`)||e.startsWith(`npm error`)||e.includes(`ERESOLVE`)){a.push(e);continue}if(e.includes(`npm warn`)||e.includes(`WARN`)){r++,r<=3&&n.push(e);continue}if(e.includes(`notice`)){i++;continue}if(!(e.includes(`timing`)||e.includes(`http fetch`)||/^\s*$/.test(e))){if(e.match(/^(added|removed|changed|up to date|audited|found \d+)/)){n.push(e);continue}if(e.match(/^(Packages:|Progress:|Done in|dependencies:)/)){n.push(e);continue}e.match(/^(>|\$)\s/)&&n.push(e)}}return r>3&&n.push(`[${r-3} more warnings]`),i>0&&n.push(`[${i} notices]`),a.length>0&&(n.unshift(`=== ERRORS ===`),n.splice(1,0,...a)),n.join(`
22
+ `)}},{name:`test-runner`,toolPatterns:[`test-runner`,`vitest`,`jest`,`mocha`],priority:10,match(e){return e.tool===`test-runner`},compress(e){let t=e.text.split(`
23
+ `),n=[],r=0,i=!1,a=[];for(let e of t){if(e.match(/Tests?\s+\d+\s+(passed|failed)|Test Suites:|test.*files?|Duration/i)){n.push(e);continue}if(e.match(/^(FAIL|✗|×|✖)\s/)||e.match(/^\s*(FAIL|Error|AssertionError)/)){i&&a.length>0&&n.push(...a),i=!0,a=[e];continue}if(i){if(e.match(/^\s+(at\s|Expected|Received|>\s|\d+\s*\||⎯|─)/)||e.trim().length===0){a.length<12&&a.push(e);continue}n.push(...a),i=!1,a=[]}if(e.match(/^(PASS|✓|✔|√)\s/)||e.match(/^\s*✓\s/)){r++;continue}if(e.match(/^\s*(PASS|FAIL|RUN)\s+\S+\.(test|spec)\./)){n.push(e);continue}e.match(/^(Rerun|Watch|press|Waiting|stdout)/)||e.trim()}return i&&a.length>0&&n.push(...a),r>0&&n.unshift(`[${r} tests passed]`),n.join(`
24
+ `)}},{name:`lint`,toolPatterns:[`lint`,`tsc`,`eslint`,`biome`],priority:10,match(e){return e.tool===`lint`||e.tool===`tsc`},compress(e){let t=e.text.split(`
25
+ `),n=[],r=[],i=0;for(let e of t){if(e.match(/:\d+:\d+\s+error\b/i)||e.match(/^error\s+TS\d+/)){n.push(e);continue}if(e.match(/:\d+:\d+\s+warning\b/i)||e.match(/^warning\s+TS\d+/)){r.push(e);continue}if(e.match(/:\d+:\d+\s+(info|hint)\b/i)){i++;continue}if(e.match(/Found \d+|✖\s+\d+|errors?\s+and\s+\d+\s+warning|problems?.*error/i)){n.push(e);continue}e.match(/^\s*\d+ error/)&&n.push(e)}let a=[];return n.length>0&&(a.push(`=== ERRORS (${n.length}) ===`),a.push(...n.slice(0,30)),n.length>30&&a.push(`[${n.length-30} more errors]`)),r.length>0&&(a.push(`=== WARNINGS (${r.length}) ===`),a.push(...r.slice(0,10)),r.length>10&&a.push(`[${r.length-10} more warnings]`)),i>0&&a.push(`[${i} info/hint messages]`),a.length===0&&a.push(`[No errors or warnings found]`),a.join(`
26
+ `)}},{name:`docker`,toolPatterns:[`docker`],priority:8,match(e){return e.tool===`docker`},compress(e){let t=e.text.split(`
27
+ `),n=[],r=0,i=0;for(let e of t){if(e.match(/^(ERROR|error|Error|WARNING|SECURITY)/i)||e.includes(`failed`)){n.push(e);continue}if(e.match(/^Step \d+\/\d+\s*:/)){n.push(e);continue}if(e.match(/^\s*(FROM|RUN|COPY|ADD|WORKDIR|ENV|EXPOSE|CMD|ENTRYPOINT)\s/i)){n.push(e);continue}if(e.includes(`CACHED`)||e.includes(`Using cache`)){r++;continue}if(e.match(/^[a-f0-9]+:\s*(Pull|Download|Extract|Waiting|Verifying)/)){i++;continue}if(e.match(/^(Successfully|sha256:|REPOSITORY|IMAGE ID|CONTAINER ID)/)){n.push(e);continue}if(e.match(/^\S{12}\s+\S+/)&&!e.match(/^[a-f0-9]+:/)){n.push(e);continue}e.match(/^#\d+\s/)&&n.push(e)}return r>0&&n.push(`[${r} cached layers]`),i>0&&n.push(`[${i} download/extract operations]`),n.join(`
28
+ `)}},{name:`kubectl`,toolPatterns:[`kubectl`,`k8s`],priority:8,match(e){return e.tool===`kubectl`},compress(e){let t=e.text.split(`
29
+ `),n=[],r=0;for(let e of t){if(e.match(/^(NAME|NAMESPACE|LAST SEEN|TYPE)\s+/)){n.push(e);continue}if(e.match(/\b(Warning|Error|Failed|CrashLoopBackOff|OOMKilled|Evicted|Pending)\b/i)){n.push(e);continue}if(e.match(/^\S+\s+\d+\/\d+\s+(Running|Error|CrashLoop|Pending|Completed|Terminating)/)){n.push(e);continue}if(e.match(/^\d+[smhd]\s+.*Normal\s/)){r++;continue}e.match(/^\S+\s+/)&&e.trim().length>0&&n.push(e)}return r>0&&n.push(`[${r} normal events]`),n.join(`
30
+ `)}},{name:`generic`,toolPatterns:[/.*/],priority:0,match(e){return e.tool===`unknown`||!e.tool},compress(e){let t=e.text.split(`
31
+ `),n=[],r=``,i=0,a=0;for(let e of t){let t=e.trim();if(t===``){a++,a<=1&&n.push(``);continue}if(a=0,t===r.trim()){i++;continue}i>0&&(n.push(` [repeated ${i} more times]`),i=0),r=e,n.push(e)}return i>0&&n.push(` [repeated ${i} more times]`),n.join(`
32
+ `)}}]);function zt(e){let{text:t,tool:n,mode:r=`structural`,maxChars:i,tokenBudget:a}=e;return Rt(t,{mode:r,maxChars:a?a*4:i??4e3,tool:n})}function Bt(e){let{input:t,expression:n}=e,r;if(typeof t==`string`)try{r=JSON.parse(t)}catch{throw Error(`Invalid JSON input`)}else r=t;let i;if(n===`.`)i=r;else if(n===`keys`)i=Object.keys(Wt(r));else if(n===`values`)i=Object.values(Wt(r));else if(n===`length`)i=Array.isArray(r)?r.length:Object.keys(Wt(r)).length;else if(n===`flatten`)i=W(r).flat();else if(n===`unique`)i=[...new Set(W(r))];else if(n===`sort`)i=[...W(r)].sort();else if(n===`reverse`)i=[...W(r)].reverse();else if(n.startsWith(`.`))i=Ut(r,n.slice(1));else if(n.startsWith(`map(`)&&n.endsWith(`)`)){let e=n.slice(4,-1).trim(),t=e.startsWith(`.`)?e.slice(1):e;i=W(r).map(e=>Ut(e,t))}else if(n.startsWith(`select(`)&&n.endsWith(`)`))i=Vt(W(r),n.slice(7,-1).trim());else if(n.startsWith(`group_by(`)&&n.endsWith(`)`)){let e=n.slice(9,-1).trim().replace(/^\./,``),t={};for(let n of W(r)){let r=String(Ut(n,e)??`null`);t[r]||(t[r]=[]),t[r].push(n)}i=t}else if(n.startsWith(`pick(`)&&n.endsWith(`)`)){let e=n.slice(5,-1).split(`,`).map(e=>e.trim().replace(/^\./,``)).filter(Boolean);i=Array.isArray(r)?W(r).map(t=>Ht(t,e)):Ht(r,e)}else throw Error(`Unsupported expression: ${n}. Supported: ., .path.to.field, keys, values, length, flatten, unique, sort, reverse, map(.field), select(.field == | != | > | < | >= | <= "value"), group_by(.field), pick(.a, .b)`);return{output:i,outputString:typeof i==`string`?i:JSON.stringify(i,null,2)??`null`}}function Vt(e,t){let n=t.match(/^\.?([\w.[\]]+)\s*(==|!=|>=|<=|>|<)\s*"?([^"]*)"?$/);if(!n)throw Error(`Unsupported select expression: ${t}`);let[,r,i,a]=n;return e.filter(e=>{let t=Ut(e,r),n=String(t);switch(i){case`==`:return n===a;case`!=`:return n!==a;case`>`:case`<`:case`>=`:case`<=`:{let e=Number(t),n=Number(a);return Number.isNaN(e)||Number.isNaN(n)?!1:i===`>`?e>n:i===`<`?e<n:i===`>=`?e>=n:e<=n}default:return!1}})}function Ht(e,t){let n={};for(let r of t)n[r]=Ut(e,r);return n}function Ut(e,t){if(!t)return e;let n=[...t.matchAll(/([^.[\]]+)|\[(\d+)\]/g)].map(e=>e[1]??Number.parseInt(e[2],10)),r=e;for(let e of n){if(r==null)return;if(typeof e==`number`){if(!Array.isArray(r))return;r=r[e];continue}if(typeof r!=`object`)return;r=r[e]}return r}function W(e){if(!Array.isArray(e))throw Error(`Operation requires an array input.`);return e}function Wt(e){if(!e||typeof e!=`object`||Array.isArray(e))throw Error(`Operation requires an object input.`);return e}const Gt=`http://localhost:11434`;async function Kt(e=Gt){let t=await Jt(`${e}/api/tags`),n;try{n=JSON.parse(t)}catch{throw Error(`Ollama returned invalid JSON`)}return(n.models??[]).map(e=>e.name)}async function qt(e){let t=e.baseUrl??Gt,n=e.timeout??12e4,r;try{r=await Kt(t)}catch{return{model:e.model??`unknown`,response:``,durationMs:0,error:`Ollama is not running at ${t}. Start it with: ollama serve`}}if(r.length===0)return{model:`none`,response:``,durationMs:0,error:`No Ollama models available. Pull one with: ollama pull gemma4:e2b`};let i=e.model??r[0];if(!r.includes(i))return{model:i,response:``,durationMs:0,error:`Model "${i}" not found. Available: ${r.join(`, `)}`};let a=``;e.context&&(a+=`<context>\n${e.context}\n</context>\n\n`),a+=e.prompt;let o=Date.now(),s=JSON.stringify({model:i,prompt:a,system:e.system,stream:!1,options:{temperature:e.temperature??.3}});try{let e=await Yt(`${t}/api/generate`,s,n),r=JSON.parse(e);return r.error?{model:i,response:``,durationMs:Date.now()-o,error:r.error}:{model:i,response:(r.response??``).trim(),durationMs:Date.now()-o,tokenCount:r.eval_count}}catch(e){return{model:i,response:``,durationMs:Date.now()-o,error:e instanceof Error?e.message:String(e)}}}function Jt(e){return new Promise((t,n)=>{let r=new URL(e),i=ce({hostname:r.hostname,port:r.port,path:r.pathname,method:`GET`,timeout:5e3},e=>{let n=[];e.on(`data`,e=>n.push(e)),e.on(`end`,()=>t(Buffer.concat(n).toString(`utf-8`)))});i.on(`error`,n),i.on(`timeout`,()=>{i.destroy(),n(Error(`Connection timeout`))}),i.end()})}function Yt(e,t,n){return new Promise((r,i)=>{let a=new URL(e),o=ce({hostname:a.hostname,port:a.port,path:a.pathname,method:`POST`,headers:{"Content-Type":`application/json`,"Content-Length":Buffer.byteLength(t)},timeout:n},e=>{let t=[];e.on(`data`,e=>t.push(e)),e.on(`end`,()=>r(Buffer.concat(t).toString(`utf-8`)))});o.on(`error`,i),o.on(`timeout`,()=>{o.destroy(),i(Error(`Ollama request timed out after ${n}ms`))}),o.write(t),o.end()})}function Xt(e){let{diff:t}=e,n=t.split(/^diff --git /m).filter(Boolean);return n.length>0&&/^a\//.test(n[0])?Zt(n):Qt(t)}function Zt(e){let t=[];for(let n of e){let e=n.split(`
33
+ `),r=e[0]?.match(/a\/(.+?)\s+b\/(.+)/);if(!r)continue;let i=r[1],a=r[2],o=`modified`;n.includes(`new file mode`)?o=`added`:n.includes(`deleted file mode`)?o=`deleted`:i!==a&&(o=`renamed`);let s=[],c=0,l=0,u=null,d=0,f=0;for(let t of e){let e=t.match(/^@@\s+-(\d+)(?:,(\d+))?\s+\+(\d+)(?:,(\d+))?\s+@@(.*)$/);if(e){u={oldStart:Number(e[1]),oldLines:Number(e[2]??1),newStart:Number(e[3]),newLines:Number(e[4]??1),header:e[5]?.trim()??``,changes:[]},s.push(u),d=u.oldStart,f=u.newStart;continue}if(!(!u||t.startsWith(`\\`))){if(t.startsWith(`+`)&&!t.startsWith(`+++`)){u.changes.push({type:`add`,line:f,content:t.slice(1)}),c+=1,f+=1;continue}if(t.startsWith(`-`)&&!t.startsWith(`---`)){u.changes.push({type:`delete`,line:d,content:t.slice(1)}),l+=1,d+=1;continue}t.startsWith(` `)&&(u.changes.push({type:`context`,line:f,content:t.slice(1)}),d+=1,f+=1)}}t.push({path:a,oldPath:o===`renamed`?i:void 0,status:o,hunks:s,additions:c,deletions:l})}return t}function Qt(e){let t=[],n=e.split(`
34
+ `),r=0;for(;r<n.length;){let e=n[r]?.match(/^---\s+(?:a\/)?(.+)/),i=n[r+1]?.match(/^\+\+\+\s+(?:b\/)?(.+)/);if(!e||!i){r++;continue}let a=e[1].trim(),o=i[1].trim(),s=`modified`;a===`/dev/null`?s=`added`:o===`/dev/null`?s=`deleted`:a!==o&&(s=`renamed`),r+=2;let c=[],l=0,u=0;for(;r<n.length&&!n[r]?.startsWith(`--- `);){let e=n[r]?.match(/^@@\s+-(\d+)(?:,(\d+))?\s+\+(\d+)(?:,(\d+))?\s+@@(.*)$/);if(e){let t={oldStart:Number(e[1]),oldLines:Number(e[2]??1),newStart:Number(e[3]),newLines:Number(e[4]??1),header:e[5]?.trim()??``,changes:[]};c.push(t);let i=t.oldStart,a=t.newStart;for(r++;r<n.length;){let e=n[r];if(e?.startsWith(`@@`)||e?.startsWith(`--- `)||e?.startsWith(`diff `))break;if(e?.startsWith(`\\`)){r++;continue}if(e?.startsWith(`+`))t.changes.push({type:`add`,line:a,content:e.slice(1)}),l++,a++;else if(e?.startsWith(`-`))t.changes.push({type:`delete`,line:i,content:e.slice(1)}),u++,i++;else if(e?.startsWith(` `))t.changes.push({type:`context`,line:a,content:e.slice(1)}),i++,a++;else break;r++}}else r++}let d=s===`deleted`?a:o;t.push({path:d,oldPath:s===`renamed`?a:void 0,status:s,hunks:c,additions:l,deletions:u})}return t}function $t(e){if(e.length<=2)return e;let t=[...e].sort((e,t)=>t.maxScore-e.maxScore),n=Array(t.length),r=0,i=t.length-1;for(let e=0;e<t.length;e++)e%2==0?n[r++]=t[e]:n[i--]=t[e];return n}function en(e){let t=new Set,n=e.toLowerCase().replace(/\s+/g,` `);for(let e=0;e<n.length-1;e++)t.add(n.slice(e,e+2));return t}function tn(e,t){if(e.size===0&&t.size===0)return 1;let n=0;for(let r of e)t.has(r)&&n++;let r=e.size+t.size-n;return r===0?0:n/r}function nn(e,t=.7,n,r=.8){if(e.length===0)return[];let i=n??e.length,a=[],o=[],s=new Set(e.map((e,t)=>t)),c=e.map(e=>en(e.text));for(;a.length<i&&s.size>0;){let n=-1,i=-1/0;for(let l of s){let s=e[l];if(s.relevance>=r&&a.length===0){n=l;break}let u=0;for(let e of o){let t=tn(c[l],e);t>u&&(u=t)}let d=t*s.relevance-(1-t)*u;d>i&&(i=d,n=l)}if(n===-1)break;a.push(e[n]),o.push(c[n]),s.delete(n)}return a}const rn=[`status`,`files`,`decisions`,`blockers`,`artifacts`,`next`],an={status:/\b(?:status|result)\s*[:=]/i,files:/\b(?:files?|modified|created|deleted)\s*[:=]/i,artifacts:/\b(?:artifacts?)\s*[:=]/i,decisions:/\b(?:decisions?|decided|chose|selected)\s*[:=]/i,blockers:/\b(?:blockers?|blocked|blocking)\s*[:=]/i,next:/\b(?:next\s*(?:steps?|actions?)|todo|follow.up)\s*[:=]/i},on={status:/(?:^|\b)(?:status|result)\s*[:=]\s*(.+)$/i,files:/(?:^|\b)(?:files?|modified|created|deleted)\s*[:=]\s*(.+)$/i,artifacts:/(?:^|\b)(?:artifacts?)\s*[:=]\s*(.+)$/i,decisions:/(?:^|\b)(?:decisions?|decided|chose|selected)\s*[:=]\s*(.+)$/i,blockers:/(?:^|\b)(?:blockers?|blocked|blocking)\s*[:=]\s*(.+)$/i,next:/(?:^|\b)(?:next\s*(?:steps?|actions?)|todo|follow.up)\s*[:=]\s*(.+)$/i},sn=/\b(?:APPROVED|NEEDS_REVISION|BLOCKED|SUCCESS|PARTIAL|FAILED|ESCALATE)\b/i,G=.01;function cn(e){let t=e??[...rn];return[...new Set(t.map(e=>e.toLowerCase()))]}function ln(e){return typeof e!=`number`||!Number.isFinite(e)||e<=0?1:e}function un(e,t){let n=new Set;for(let r of t)an[r]?.test(e)&&n.add(r);return t.includes(`status`)&&sn.test(e)&&n.add(`status`),[...n]}function dn(e,t){let n=t.split(`
35
+ `).map(e=>e.trim()).filter(e=>e.length>0);for(let t of n){let n=on[e]?.exec(t);if(n?.[1])return n[1].trim();if(e===`status`){let e=t.match(sn);if(e)return e[0]}}return t.trim()}function fn(e,t,n,r){e[t]||(e[t]=[]),e[t].push({sourceId:n,value:r})}function pn(e,t,n,r){return e.map(e=>{let i=qe(e.text,t).map((t,i)=>{let a=un(t,n);for(let n of a)fn(r,n,e.id,dn(n,t));return{index:i,text:t,pinnedFields:a,score:0}}),a=i.filter(e=>e.pinnedFields.length>0).reduce((e,t)=>e+t.text.length,0),o=i.filter(e=>e.pinnedFields.length===0).reduce((e,t)=>e+t.text.length,0);return{id:e.id,originalText:e.text,weight:ln(e.weight),segments:i,pinnedChars:a,nonPinnedChars:o}})}function mn(e,t){let n=new Map(e.map(e=>[e.id,0])),r=Math.max(0,t),i=e.filter(e=>e.nonPinnedChars>0);for(;r>G&&i.length>0;){let e=i.reduce((e,t)=>e+t.weight,0),t=0,a=[];for(let o of i){let i=n.get(o.id)??0,s=o.nonPinnedChars-i;if(s<=G)continue;let c=r*(o.weight/e),l=Math.min(c,s);n.set(o.id,i+l),t+=l,s-l>G&&a.push(o)}if(t<=G)break;r-=t,i=a}return n}function hn(e){return e.map(e=>`[${e.id}]\n${e.text}`).join(`
36
+
37
+ `)}function gn(e,t){return e===0?0:t/e}async function _n(e,t){let{sources:n,query:r,maxChars:i=4e3,pinFields:a,segmentation:o=`paragraph`}=t,s={},c=pn(n,o,cn(a),s),l=n.reduce((e,t)=>e+t.text.length,0);if(l<=i){let e=c.filter(e=>e.originalText.trim().length>0).map(e=>({id:e.id,text:e.originalText})),t=c.map(e=>({id:e.id,originalChars:e.originalText.length,keptChars:e.originalText.length,segmentsKept:e.segments.length,segmentsTotal:e.segments.length}));return{text:hn(e),fields:s,sourceStats:t,totalOriginalChars:l,totalCompressedChars:l,ratio:l===0?0:1}}let u=await e.embedQuery(r);for(let t of c)for(let n of t.segments)n.pinnedFields.length>0||(n.score=Je(u,await e.embed(n.text)));let d=mn(c,i-c.reduce((e,t)=>e+t.pinnedChars,0)),f=[],p=[],m=0;for(let e of c){let n=d.get(e.id)??0,r=new Map,i=0,a=e.segments.filter(e=>e.pinnedFields.length===0).sort((e,t)=>t.score-e.score||U(e.text)-U(t.text)||e.index-t.index);if(t.dedup!==!1&&a.length>1){let e=nn(a.map(e=>({index:e.index,text:e.text,relevance:e.score}))),t=new Set(e.map(e=>e.index));a=a.filter(e=>t.has(e.index))}let o;for(let e of a){let t=n-i;if(t<=G)break;if(e.text.length<=t+G){r.set(e.index,e.text),i+=e.text.length;continue}o||=e}let s=Math.floor(n-i);if(o&&s>0){let e=o.text.slice(0,s).trimEnd();e.length>0&&(r.set(o.index,e),i+=e.length)}let c=e.segments.filter(e=>e.pinnedFields.length>0||r.has(e.index)).map(e=>({index:e.index,text:r.get(e.index)??e.text})),l=c.reduce((e,t)=>e+t.text.length,0);f.push({id:e.id,originalChars:e.originalText.length,keptChars:l,segmentsKept:c.length,segmentsTotal:e.segments.length}),m+=l,c.length!==0&&p.push({id:e.id,text:c.map(e=>e.text).join(`
38
+
39
+ `)})}return{text:hn($t(p.map(e=>{let t=c.find(t=>t.id===e.id),n=t?Math.max(0,...t.segments.map(e=>e.score)):0;return{...e,maxScore:n}}))),fields:s,sourceStats:f,totalOriginalChars:l,totalCompressedChars:m,ratio:gn(l,m)}}function vn(){return S(B(process.cwd()),`logs`)}function yn(e={}){let{days:t=7,level:n,component:r,limit:i=50}=e,a=vn(),o=new Date,s=new Date(o.getTime()-t*864e5).toISOString().slice(0,10),c=o.toISOString().slice(0,10),l;try{l=F(a).filter(e=>e.endsWith(`.jsonl`)&&e.slice(0,10)>=s).sort()}catch{return{totalEntries:0,groups:[],recent:[],dateRange:{from:s,to:c}}}let u=[];for(let e of l)try{let t=P(S(a,e),`utf-8`);for(let e of t.trim().split(`
40
+ `))if(e)try{let t=JSON.parse(e);if(n&&t.level!==n||r&&t.component!==r)continue;u.push(t)}catch{}}catch{}let d=new Map;for(let e of u){let t=`${e.component}::${e.msg}`,n=d.get(t);n?(n.count++,e.ts<n.firstSeen&&(n.firstSeen=e.ts),e.ts>n.lastSeen&&(n.lastSeen=e.ts)):d.set(t,{component:e.component,msg:e.msg,level:e.level,count:1,firstSeen:e.ts,lastSeen:e.ts})}let f=[...d.values()].sort((e,t)=>t.count-e.count),p=u.slice(-i);return{totalEntries:u.length,groups:f,recent:p,dateRange:{from:l.length>0?l[0].slice(0,10):s,to:c}}}function bn(e){let{operation:t,input:n}=e,r;switch(t){case`base64_encode`:r=Buffer.from(n).toString(`base64`);break;case`base64_decode`:r=Buffer.from(n,`base64`).toString(`utf8`);break;case`url_encode`:r=encodeURIComponent(n);break;case`url_decode`:r=decodeURIComponent(n);break;case`sha256`:r=V(`sha256`).update(n).digest(`hex`);break;case`md5`:r=V(`md5`).update(n).digest(`hex`);break;case`jwt_decode`:{let e=n.split(`.`);if(e.length!==3)throw Error(`Invalid JWT: expected 3 dot-separated parts`);let t,i;try{t=JSON.parse(Buffer.from(e[0],`base64url`).toString()),i=JSON.parse(Buffer.from(e[1],`base64url`).toString())}catch{throw Error(`Invalid JWT: header or payload is not valid JSON`)}r=JSON.stringify({header:t,payload:i},null,2);break}case`hex_encode`:r=Buffer.from(n).toString(`hex`);break;case`hex_decode`:r=Buffer.from(n,`hex`).toString(`utf8`);break;default:throw Error(`Unknown operation: ${t}`)}return{output:r,operation:t}}const xn=[/key/i,/secret/i,/token/i,/password/i,/passwd/i,/credential/i,/private/i,/certificate/i];function Sn(e={}){let{includeEnv:t=!1,filterEnv:n,showSensitive:r=!1}=e,i={system:{platform:pe(),arch:le(),release:me(),hostname:fe(),type:ge(),cpus:ue().length,memoryTotalGb:Math.round(he()/1024**3*10)/10,memoryFreeGb:Math.round(de()/1024**3*10)/10},runtime:{node:process.versions.node,v8:process.versions.v8},cwd:process.cwd()};if(t){let e={};for(let[t,i]of Object.entries(process.env))i&&(n&&!t.toLowerCase().includes(n.toLowerCase())||(!r&&xn.some(e=>e.test(t))?e[t]=`[REDACTED]`:e[t]=i));i.env=e}return i}function Cn(e){let{code:t,lang:n=`js`,timeout:r=5e3}=e,i=Math.min(Math.max(r,100),1e4),a=Date.now();try{let e=n===`ts`?Tn(t):t,r=[],o={console:{log:(...e)=>r.push(e.map(String).join(` `)),error:(...e)=>r.push(`[error] ${e.map(String).join(` `)}`),warn:(...e)=>r.push(`[warn] ${e.map(String).join(` `)}`)},setTimeout:void 0,setInterval:void 0,setImmediate:void 0,fetch:void 0,process:void 0,require:void 0,JSON,Math,Date,Array,Object,String,Number,Boolean,Map,Set,RegExp,Error,Promise,parseInt,parseFloat,isNaN,isFinite},s=_e.createContext(o,{codeGeneration:{strings:!1,wasm:!1}}),c=_e.runInContext(e,s,{timeout:i});return{success:!0,output:r.length>0?r.join(`
41
+ `)+(c===void 0?``:`\n→ ${wn(c)}`):c===void 0?`(no output)`:wn(c),durationMs:Date.now()-a}}catch(e){return{success:!1,output:``,error:e.message,durationMs:Date.now()-a}}}function wn(e){if(e===void 0)return`undefined`;if(e===null)return`null`;if(typeof e==`object`)try{return JSON.stringify(e,null,2)}catch{return String(e)}return String(e)}function Tn(e){return e.replace(/^\s*import\s+type\s+.*?;\s*$/gm,``).replace(/^\s*(?:export\s+)?interface\s+\w+[^{]*\{[\s\S]*?^\s*}\s*$/gm,``).replace(/^\s*(?:export\s+)?type\s+\w+\s*=.*?;\s*$/gm,``).replace(/([,(]\s*[A-Za-z_$][\w$]*)\s*:\s*[^,)=\n]+/g,`$1`).replace(/\)\s*:\s*[^={\n]+(?=\s*(?:=>|\{))/g,`)`).replace(/\s+as\s+[A-Za-z_$][\w$<>,[\]|&\s.]*/g,``).replace(/<(?:[A-Za-z_$][\w$]*\s*,?\s*)+>(?=\s*\()/g,``)}function En(e){return w(B(e??process.cwd()),`evidence-maps.json`)}function Dn(e){let t=En(e);if(!M(t))return{};try{let e=P(t,`utf-8`);return JSON.parse(e)}catch(e){return e?.code===`ENOENT`||console.warn(`Corrupt state file ${t}: ${e instanceof Error?e.message:String(e)}`),{}}}function On(e,t){let n=En(t),r=y(n);M(r)||N(r,{recursive:!0});let i=`${n}.tmp`;R(i,`${JSON.stringify(e,null,2)}\n`,`utf-8`),I(i,n)}function kn(e,t){let n=Dn(t),r=n[e];if(!r)throw Error(`Evidence map not found: ${e}`);return{maps:n,state:r}}function An(e){return e.reduce((e,t)=>Math.max(e,t.id),0)+1}function jn(e){let t=e.trim();if(!t)throw Error(`Claim is required`);if(/\r?\n/.test(t))throw Error(`Claim must be a single line`);return t}function Mn(e){return(e??``).replace(/\r?\n/g,` `).replace(/\|/g,`\\|`)}function Nn(e){let t=[`| # | Claim | Status | Receipt | Critical | Type | Safety |`,`|---|-------|--------|---------|----------|------|--------|`];for(let n of e.entries)t.push(`| ${n.id} | ${Mn(n.claim)} | ${n.status} | ${Mn(n.receipt)} | ${n.criticalPath?`yes`:`no`} | ${Mn(n.unknownType)} | ${Mn(n.safetyGate)} |`);return t.join(`
42
+ `)}function Pn(e){return{total:e.length,verified:e.filter(e=>e.status===`V`).length,assumed:e.filter(e=>e.status===`A`).length,unresolved:e.filter(e=>e.status===`U`).length}}function Fn(e){let t=[];for(let n of e.entries)n.status===`V`&&n.receipt.trim()===``&&t.push(`V entry without receipt`),n.status===`A`&&e.tier===`critical`&&n.unknownType===`contract`&&t.push(`Assumed contract at Critical tier — should be Verified`);return t}function In(e){return`FORCED DELIVERY annotation: unresolved entries remain -> ${e.filter(e=>e.status===`U`).map(e=>`#${e.id} ${e.claim}`).join(`; `)}`}function Ln(e){let t=[],n=e.entries.filter(e=>e.status===`V`&&!e.receipt.trim());n.length>0&&t.push(`Provenance: ${n.length} verified claim(s) lack receipts`);let r=e.entries.filter(e=>e.safetyGate===`commitment`&&e.status!==`V`);r.length>0&&t.push(`Commitment: ${r.length} commitment(s) not verified`);let i=e.entries.some(e=>e.safetyGate===`coverage`&&e.status===`U`);return i&&t.push(`Coverage: unresolved coverage entries remain`),{provenance:n.length>0?`fail`:`pass`,commitment:r.length>0?`fail`:`pass`,coverage:i?`fail`:`pass`,failures:t}}function Rn(e,t=0){let n=e.entries.filter(e=>e.criticalPath&&e.status===`U`),r=Fn(e),i=Pn(e.entries);return n.find(e=>e.unknownType===`contract`)?{decision:`HARD_BLOCK`,reason:`Unresolved contract unknown on critical path`,unresolvedCritical:n,warnings:r,stats:i}:n.length>0&&t===0?{decision:`HOLD`,reason:`Unresolved critical-path unknown — retry available`,unresolvedCritical:n,warnings:r,stats:i}:n.length>0&&t>=1?{decision:`FORCED_DELIVERY`,reason:`Unresolved critical-path unknown after retry`,unresolvedCritical:n,warnings:r,stats:i,annotation:In(e.entries)}:{decision:`YIELD`,reason:`All critical-path claims satisfy gate rules`,unresolvedCritical:[],warnings:r,stats:i,...zn(e,r,i)}}function zn(e,t,n){if(!e.entries.some(e=>e.safetyGate)||e.tier===`floor`)return{};let r=Ln(e);return r.failures.length>0?{safetyGates:r,decision:`HOLD`,reason:`Safety gate failure: ${r.failures.join(`; `)}`,warnings:[...t,...r.failures]}:{safetyGates:r}}function Bn(e,t){switch(e.action){case`create`:{let n=Dn(t),r=new Date().toISOString(),i={taskId:e.taskId,tier:e.tier,entries:[],createdAt:r,updatedAt:r};return n[e.taskId]=i,On(n,t),{state:i,formattedMap:Nn(i)}}case`add`:{let{maps:n,state:r}=kn(e.taskId,t),i={id:An(r.entries),claim:jn(e.claim),status:e.status,receipt:e.receipt,criticalPath:e.criticalPath??!1,unknownType:e.unknownType,safetyGate:e.safetyGate};return r.entries.push(i),r.updatedAt=new Date().toISOString(),n[e.taskId]=r,On(n,t),{state:r,entry:i,formattedMap:Nn(r)}}case`update`:{let{maps:n,state:r}=kn(e.taskId,t),i=r.entries.find(t=>t.id===e.id);if(!i)throw Error(`Evidence entry not found: ${e.id}`);return i.status=e.status,i.receipt=e.receipt,r.updatedAt=new Date().toISOString(),n[e.taskId]=r,On(n,t),{state:r,entry:i,formattedMap:Nn(r)}}case`get`:{let{state:n}=kn(e.taskId,t);return{state:n,formattedMap:Nn(n)}}case`gate`:{let{state:n}=kn(e.taskId,t);return{state:n,gate:Rn(n,e.retryCount??0),formattedMap:Nn(n)}}case`list`:return{states:Object.values(Dn(t)).sort((e,t)=>e.createdAt.localeCompare(t.createdAt))};case`delete`:{let n=Dn(t);return e.taskId in n?(delete n[e.taskId],On(n,t),{deleted:!0}):{deleted:!1}}}}function Vn(e,t,n){let r=[];for(let i of t){let t=Bn({action:`add`,taskId:e,claim:`Test failure: ${i}`,status:`U`,receipt:``,criticalPath:!0},n);t.entry&&r.push(t.entry)}return r}var Hn=class e{cache=new Map;totalReads=0;cacheHits=0;static MAX_ENTRIES=500;async get(t){let n=w(t);this.totalReads++;let r=await g(n);if(r.isDirectory())throw Error(`Path is a directory: ${t}. Expected a file path, not a directory. Use analyze_structure or find to explore directories.`);let i=r.mtimeMs,a=this.cache.get(n);if(a){if(a.mtimeMs===i)return this.cacheHits++,a.hitCount++,{content:a.content,hash:a.hash,lines:a.lines,estimatedTokens:a.estimatedTokens,hitCount:a.hitCount,changed:!1};let e=await p(n,`utf-8`),t=Un(e);if(t===a.hash)return this.cacheHits++,a.hitCount++,a.mtimeMs=i,{content:a.content,hash:a.hash,lines:a.lines,estimatedTokens:a.estimatedTokens,hitCount:a.hitCount,changed:!1};let r=e.split(`
43
+ `).length,o=U(e);return a.content=e,a.hash=t,a.lines=r,a.estimatedTokens=o,a.hitCount++,a.mtimeMs=i,{content:e,hash:t,lines:r,estimatedTokens:o,hitCount:a.hitCount,changed:!0}}let o=await p(n,`utf-8`),s=Un(o),c=o.split(`
44
+ `).length,l=U(o);if(this.cache.set(n,{content:o,hash:s,lines:c,estimatedTokens:l,hitCount:1,mtimeMs:i}),this.cache.size>e.MAX_ENTRIES){let e=this.cache.keys().next().value;e&&this.cache.delete(e)}return{content:o,hash:s,lines:c,estimatedTokens:l,hitCount:1,changed:!0}}invalidate(e){return this.cache.delete(w(e))}clear(){let e=this.cache.size;return this.cache.clear(),e}stats(){return{totalReads:this.totalReads,cacheHits:this.cacheHits,filesTracked:this.cache.size}}};function Un(e){return V(`sha256`).update(e).digest(`hex`)}async function Wn(e){let{path:t,previewLines:n=3}=e;if(!e.content){let e;try{e=await g(t)}catch(e){let n=e.code;throw n===`ENOENT`?Error(`File not found: ${t}. Check the path and try again.`):n===`EACCES`||n===`EPERM`?Error(`Permission denied reading ${t}. The file exists but is not accessible.`):e}if(e.isDirectory())throw Error(`Path is a directory: ${t}. file_summary requires a file path, not a directory. Use analyze_structure or find to explore directories.`);if(e.size>1e7)throw Error(`File too large (${(e.size/1e6).toFixed(1)}MB). file_summary supports files up to 10MB. Use search or compact with a query instead.`)}let r=e.content??await p(t,`utf-8`),i=r.split(`
45
+ `),a=t.split(`.`).pop()??``,o=b(t);return D.get()&&E.has(o)?Gn(t,r,i,a,o):Kn(t,r,i,a)}async function Gn(e,t,n,r,i){let[a,o,s]=await Promise.all([k(t,i,e),O(t,i,e),ee(t,i,e).catch(()=>[])]),c=o.map(e=>`import ${e.specifiers.length>0?`{ ${e.specifiers.join(`, `)} }`:`*`} from '${e.source}'`),l=[],u=[],d=[],f=[],p=[];for(let e of a)switch(e.exported&&l.push(e.name),e.kind){case`function`:case`method`:u.push({name:e.name,line:e.line,exported:e.exported,signature:e.signature});break;case`class`:d.push({name:e.name,line:e.line,exported:e.exported,signature:e.signature});break;case`interface`:f.push({name:e.name,line:e.line,exported:e.exported});break;case`type`:p.push({name:e.name,line:e.line,exported:e.exported});break}let m=o.map(e=>({source:e.source,specifiers:e.specifiers,isExternal:e.isExternal})),h=s.map(e=>({caller:e.callerName,callee:e.calleeName,line:e.line}));return{path:e,lines:n.length,language:qn(r),imports:c,exports:l,functions:u,classes:d,interfaces:f,types:p,importDetails:m,callEdges:h.length>0?h:void 0,estimatedTokens:Math.ceil(t.length/4)}}function Kn(e,t,n,r){let i=[],a=[],o=[],s=[],c=[],l=[];for(let e=0;e<n.length;e+=1){let t=n[e],r=e+1;if(/^import\s+.+/.test(t)){i.push(t.trim());continue}let u=t.match(/^export\s+(?:async\s+)?function\s+(\w+)/);if(u){o.push({name:u[1],line:r,exported:!0}),a.push(u[1]);continue}let d=t.match(/^(?:async\s+)?function\s+(\w+)/);if(d){o.push({name:d[1],line:r,exported:!1});continue}let f=t.match(/^(export\s+)?const\s+(\w+)\s*=.*(?:=>|\bfunction\b)/);if(f){let e=!!f[1];o.push({name:f[2],line:r,exported:e}),e&&a.push(f[2]);continue}let p=t.match(/^export\s+const\s+(\w+)\s*=/);if(p){a.push(p[1]);continue}let m=t.match(/^(export\s+)?(?:abstract\s+)?class\s+(\w+)/);if(m){let e=!!m[1];s.push({name:m[2],line:r,exported:e}),e&&a.push(m[2]);continue}let h=t.match(/^(export\s+)?interface\s+(\w+)/);if(h){let e=!!h[1];c.push({name:h[2],line:r,exported:e}),e&&a.push(h[2]);continue}let g=t.match(/^(export\s+)?type\s+(\w+)/);if(g){let e=!!g[1];l.push({name:g[2],line:r,exported:e}),e&&a.push(g[2]);continue}let _=t.match(/^export\s+\{(.+)\}/);if(_){let e=_[1].split(`,`).map(e=>e.trim().split(/\s+as\s+/).pop()?.trim()??``).filter(Boolean);a.push(...e)}}return{path:e,lines:n.length,language:qn(r),imports:i,exports:a,functions:o,classes:s,interfaces:c,types:l,estimatedTokens:Math.ceil(t.length/4)}}function qn(e){return{ts:`typescript`,tsx:`typescript-jsx`,js:`javascript`,jsx:`javascript-jsx`,py:`python`,rs:`rust`,go:`go`,java:`java`,rb:`ruby`,md:`markdown`,json:`json`,yaml:`yaml`,yml:`yaml`,css:`css`,html:`html`,sh:`shell`,bash:`shell`}[e]??e}async function Jn(e,t,n){let{query:r,glob:i,pattern:a,limit:o=10,contentType:s,cwd:c=process.cwd()}=n,l=[],u=[],d=new Set,f=[];if(r){l.push(`vector`);let n=await e.embed(r),i={limit:o,contentType:s},a=await t.search(n,i);for(let e of a){let t=`${e.record.sourcePath}:${e.record.startLine}`;d.has(t)||(d.add(t),u.push({path:e.record.sourcePath,source:`vector`,score:e.score,lineRange:{start:e.record.startLine,end:e.record.endLine},preview:e.record.content.slice(0,200)}))}}if(r){l.push(`keyword`);try{let e=await t.ftsSearch(r,{limit:o,contentType:s});for(let t of e){let e=`${t.record.sourcePath}:${t.record.startLine}`;d.has(e)||(d.add(e),u.push({path:t.record.sourcePath,source:`keyword`,score:t.score,lineRange:{start:t.record.startLine,end:t.record.endLine},preview:t.record.content.slice(0,200)}))}}catch(e){f.push({strategy:`keyword`,reason:e instanceof Error?e.message:String(e)})}}if(i){l.push(`glob`);try{let{globSync:e}=await import(`node:fs`),t=e(i,{cwd:c,withFileTypes:!1}),n=new Set([`node_modules`,`.git`,`dist`,`build`,`coverage`,`.turbo`,`.cache`,`cdk.out`,z.state,z.data]),r=t.filter(e=>!e.replace(/\\/g,`/`).split(`/`).some(e=>n.has(e)));for(let e of r.slice(0,o)){let t=`glob:${e}`;d.has(t)||(d.add(t),u.push({path:e,source:`glob`,score:1}))}}catch(e){f.push({strategy:`glob`,reason:e instanceof Error?e.message:String(e)})}}if(a){l.push(`pattern`);try{let e=Yn(a),n=e?Xn(a):a,r=new RegExp(n,`i`),i=e?Zn(a):a,c=await t.ftsSearch(i,{limit:o*2,contentType:s});for(let t of c){let n=e?t.record.sourcePath:t.record.content;if(r.test(n)){let e=`${t.record.sourcePath}:${t.record.startLine}`;d.has(e)||(d.add(e),u.push({path:t.record.sourcePath,source:`pattern`,score:t.score,lineRange:{start:t.record.startLine,end:t.record.endLine},preview:t.record.content.slice(0,200)}))}}}catch(e){f.push({strategy:`pattern`,reason:e instanceof Error?e.message:String(e)})}}return u.sort((e,t)=>t.score-e.score),{results:u.slice(0,o),strategies:l,totalFound:u.length,...f.length>0&&{failedStrategies:f}}}function Yn(e){return/\*\*|^[*?]|\/\*|^\*\./.test(e)}function Xn(e){let t=`\0DS\0`,n=`\0SS\0`,r=e.replace(/\*\*/g,t).replace(/\*/g,n);return r=r.replace(/[.+^${}()|[\]\\]/g,`\\$&`),r=r.replace(/\?/g,`.`),r=r.replace(new RegExp(t.replace(/\0/g,`\\0`),`g`),`.*`),r=r.replace(new RegExp(n.replace(/\0/g,`\\0`),`g`),`[^/]*`),r}function Zn(e){return e.replace(/\*+/g,` `).replace(/[/\\]/g,` `).trim().split(/\s+/).filter(e=>e.length>1).join(` `)||e}async function Qn(e,t,n){let{query:r,limit:i=5,contentType:a}=n,o=`usage example of ${r}`,s=await e.embed(o),c=await t.search(s,{limit:i*3,contentType:a}),l=RegExp(`\\b${H(r)}\\b`,`i`),u=c.filter(e=>l.test(e.record.content));return{query:r,examples:u.map(e=>{let t=e.record.content,n=/export\s+(?:async\s+)?(?:function|class|const|interface|type)\s/.test(t),r=/^\s*import\s/m.test(t),i=/(?:^|[\\/])(test|tests|__tests__|spec)(?:[\\/]|$)/i.test(e.record.sourcePath)||/\.(test|spec)\.[jt]sx?$/i.test(e.record.sourcePath),a=0;n||(a+=.1),r||(a+=.05),i&&(a+=.05);let o=t.split(`
46
+ `),s=o.findIndex(e=>l.test(e)),c=Math.max(0,s-2),u=Math.min(o.length,s+5),d=o.slice(c,u).join(`
47
+ `);return{path:e.record.sourcePath,startLine:e.record.startLine,endLine:e.record.endLine,content:d||t.slice(0,300),relevance:Math.min(1,e.score+a),context:i?`test`:n?`definition`:`usage`}}).sort((e,t)=>t.relevance-e.relevance).slice(0,i),totalFound:u.length}}const $n=new Set([`.ts`,`.tsx`,`.js`,`.jsx`,`.mts`,`.cts`,`.mjs`,`.cjs`]),er=new Set([`.git`,z.data,z.state,`.turbo`,`.yarn`,`build`,`coverage`,`dist`,`node_modules`]),tr=/auth|token|permission|acl|encrypt|secret|credential|jwt|oauth|password/i,nr=/\b(hash|sign|verify|bcrypt|jwt|decrypt|secret|password)\b/i,rr=/auth|security|permission|encrypt|secret|credential/i,ir=/types\.ts$|schema\.ts$|contract\.ts$|\.proto$|openapi|swagger|\.graphql$/i,ar=/(?:^|\/)(events|contracts|shared)(?:\/|$)/i,or=/export\s+interface\b|export\s+type\b|export\s+const\s+\w*Schema\w*\s*=\s*z\./i,sr=/schema|contract|migration|breaking.change|api.change/i,cr=/migration|data.?model|multi.?service|breaking|backward.?compat/i,lr={floor:{ground:`Parasitic — read target file only`,build:`Implement directly`,break:`Skip`,evidenceMap:`Not required`,gate:`Self-certify`},standard:{ground:`Scope map + blast radius + constraint seed`,build:`TDD — test first, then implement`,break:`Error paths + edge cases`,evidenceMap:`3-8 critical-path entries`,gate:`YIELD/HOLD evaluation`},critical:{ground:`Full scope map + blast radius + trace + patterns + constraint pack`,build:`TDD + contract verification + cross-service validation`,break:`Error paths + edge cases + security dimensions + data-flow verification`,evidenceMap:`Comprehensive — all critical-path claims with receipts`,gate:`Strict YIELD/HOLD/HARD_BLOCK evaluation`}};async function ur(e){let t=w(e.rootPath),n=e.task.trim(),r=e.files.map(e=>w(t,e)),i=[],a=!1,o=!1;for(let e of r){let r=fr(e,t),i=mr(e);(tr.test(r)||nr.test(i)||rr.test(n))&&(a=!0),(ir.test(r)||ar.test(r)||sr.test(n)||or.test(i)||await hr(e))&&(o=!0)}a&&dr(i,{rule:`security-path`,detail:`Security/auth path, task, or content matched security heuristics`,source:`security_auth`}),o&&dr(i,{rule:`schema-contract`,detail:`Schema or contract path, task, or export shape matched contract heuristics`,source:`schema_contract`});let s=gr(r,t);s.affectedFiles>5&&dr(i,{rule:`blast-radius-importers`,detail:`${s.affectedFiles} affected files via direct import scanning`,source:`blast_radius`});let c=[...new Set(r.map(e=>xr(e,t)).filter(e=>!!e))].sort();c.length>=2&&dr(i,{rule:`cross-package-boundary`,detail:`Files span ${c.length} packages: ${c.join(`, `)}`,source:`cross_package`}),cr.test(n)&&dr(i,{rule:`task-hint-critical`,detail:`Task description matched migration or compatibility criticality hints`,source:`task_hint`});let l=i.length>0?`critical`:r.length===1?`floor`:`standard`;l===`floor`&&(a||o)&&(l=`standard`);let u=br(i),d=l===`floor`&&u.some(e=>e.type===`contract`)?{suggestedTier:`standard`,reason:`Contract-type unknowns detected — Floor may be insufficient`}:void 0;return{tier:l,triggers:i,packagesCrossed:c,hasSchemaChange:o,hasSecurityPath:a,typedUnknownSeeds:u,ceremony:lr[l],reclassifyHint:d}}function dr(e,t){e.some(e=>e.rule===t.rule&&e.source===t.source)||e.push(t)}function fr(e,t){let n=w(t,e),r=C(t,n);return(r&&!r.startsWith(`..`)?r:n).replace(/\\/g,`/`)}function pr(e){if(!M(e))return!1;try{return L(e).size<=1e5}catch{return!1}}function mr(e){if(!pr(e))return``;try{return P(e,`utf-8`).split(/\r?\n/).slice(0,200).join(`
48
+ `)}catch{return``}}async function hr(e){if(!pr(e))return!1;try{let t=await Wn({path:e}),n=new Set(t.exports);return t.interfaces.some(e=>n.has(e.name))||t.types.some(e=>n.has(e.name))}catch{return!1}}function gr(e,t){let n=new Set(e.filter(e=>M(e)));if(n.size===0)return{affectedFiles:e.length,importers:[]};let r=new Set;for(let e of _r(t)){if(n.has(e)||!pr(e))continue;let t=mr(e);t&&vr(t).some(t=>yr(t,e,n))&&r.add(e)}return{affectedFiles:e.length+r.size,importers:[...r].map(e=>C(t,e).replace(/\\/g,`/`))}}function _r(e){let t=[];function n(e){let r=[];try{r=F(e)}catch{return}for(let i of r){if(er.has(i))continue;let r=w(e,i),a;try{a=L(r)}catch{continue}if(a.isDirectory()){n(r);continue}$n.has(b(i).toLowerCase())&&t.push(r)}}return n(e),t}function vr(e){let t=new Set;for(let n of e.matchAll(/(?:from\s+['"]([^'"]+)['"]|import\s+['"]([^'"]+)['"]|require\(\s*['"]([^'"]+)['"]\s*\))/g)){let e=n[1]??n[2]??n[3];e&&t.add(e)}return[...t]}function yr(e,t,n){if(!e.startsWith(`.`))return!1;let r=w(y(t),e);return[r,`${r}.ts`,`${r}.tsx`,`${r}.js`,`${r}.jsx`,`${r}.mts`,`${r}.cts`,`${r}.mjs`,`${r}.cjs`,w(r,`index.ts`),w(r,`index.tsx`),w(r,`index.js`),w(r,`index.jsx`)].some(e=>n.has(e))}function br(e){return e.map(e=>{switch(e.source){case`security_auth`:return{description:`Verify auth and security assumptions before yielding`,type:`contract`,suggestedTool:`aikit_search`};case`schema_contract`:return{description:`Confirm schema and contract compatibility`,type:`contract`,suggestedTool:`aikit_schema_validate`};case`blast_radius`:return{description:`Inspect affected importers before delivery`,type:`impact`,suggestedTool:`aikit_blast_radius`};case`cross_package`:return{description:`Assess downstream package impact across boundaries`,type:`impact`,suggestedTool:`aikit_blast_radius`};case`task_hint`:return{description:`Check established conventions for migrations or compatibility work`,type:`convention`,suggestedTool:`aikit_find`};default:return{description:`No explicit unknown routing required`,type:`freshness`,suggestedTool:`aikit_lookup`}}})}function xr(e,t){let n=y(w(t,e)),r=w(t);for(;n.length>=r.length;){let e=w(n,`package.json`);if(M(e))try{return JSON.parse(P(e,`utf-8`)).name??C(r,n).replace(/\\/g,`/`)}catch{return C(r,n).replace(/\\/g,`/`)}let t=y(n);if(t===n)break;n=t}}function Sr(e){return Math.ceil(e.length/4)}async function Cr(e,t,n){let{task:r,maxFiles:i=15,contentType:a,origin:o}=n,s=await e.embed(r),c={limit:i*3,contentType:a,origin:o},l=await t.search(s,c),u=new Map;for(let e of l){let t=e.record.sourcePath,n=u.get(t);n?(n.chunks.push(e),n.totalChars+=e.record.content.length,n.maxScore=Math.max(n.maxScore,e.score)):u.set(t,{chunks:[e],totalChars:e.record.content.length,maxScore:e.score})}let d=[...u.entries()].sort(([,e],[,t])=>t.maxScore-e.maxScore).slice(0,i).map(([e,{chunks:t,maxScore:n}])=>{let r=t.sort((e,t)=>e.record.startLine-t.record.startLine).map(e=>({start:e.record.startLine,end:e.record.endLine,heading:e.record.headingPath})),i=t.sort((e,t)=>t.score-e.score)[0];return{path:e,reason:i.record.headingPath?`Matches: ${i.record.headingPath}`:`Contains relevant ${i.record.contentType} content`,estimatedTokens:0,relevance:n,focusRanges:r}});for(let e of d){let t=u.get(e.path);t&&(e.estimatedTokens=Sr(t.chunks.map(e=>e.record.content).join(``)))}let f=d.reduce((e,t)=>e+t.estimatedTokens,0),p=[...d].sort((e,t)=>{let n=e.path.includes(`config`)||e.path.includes(`types`)?-1:0,r=t.path.includes(`config`)||t.path.includes(`types`)?-1:0;return n===r?t.relevance-e.relevance:n-r}).map(e=>e.path),m=[];for(let e of d)e.estimatedTokens<=100?m.push(`aikit_file_summary({ path: "${e.path}" }) → ~${e.estimatedTokens} tokens`):m.push(`aikit_compact({ path: "${e.path}", query: "${r}" }) → ~${Math.ceil(e.estimatedTokens/5)} tokens`);return{task:r,files:d,totalEstimatedTokens:f,readingOrder:p,compactCommands:m}}const wr={floor:{ground:`Parasitic — read target file only`,build:`Implement directly`,break:`Skip`,evidenceMap:`Not required`,gate:`Self-certify`},standard:{ground:`Scope map + blast radius + constraint seed`,build:`TDD — test first, then implement`,break:`Error paths + edge cases`,evidenceMap:`3-8 critical-path entries`,gate:`YIELD/HOLD evaluation`},critical:{ground:`Full scope map + blast radius + trace + patterns + constraint pack`,build:`TDD + contract verification + cross-service validation`,break:`Error paths + edge cases + security dimensions + data-flow verification`,evidenceMap:`Comprehensive — all critical-path claims with receipts`,gate:`Strict YIELD/HOLD/HARD_BLOCK evaluation`}};async function Tr(e,t,n){let r=n.maxConstraints??3,i=await Er(n),a=await kr(n.files);if(i.tier===`floor`)return Ir({tier:i.tier,classifyTriggers:i.classifyTriggers,scopeMap:null,typedUnknownSeeds:i.typedUnknownSeeds,constraints:[],fileSummaries:a,evidenceMapTaskId:null,ceremony:i.ceremony});let[o,s,c]=await Promise.all([Dr(e,t,n.task,i.tier),Or(e,t,n.task,r),jr(n.rootPath,n.taskId??Lr(n.task),i.tier)]);return Ir({tier:i.tier,classifyTriggers:i.classifyTriggers,scopeMap:o,typedUnknownSeeds:i.typedUnknownSeeds,constraints:s,fileSummaries:a,evidenceMapTaskId:c,ceremony:i.ceremony})}async function Er(e){if(e.forceTier)return{tier:e.forceTier,classifyTriggers:[],typedUnknownSeeds:[],ceremony:Fr(e.forceTier)};try{let t=await ur({files:e.files,task:e.task,rootPath:e.rootPath});return{tier:t.tier,classifyTriggers:t.triggers,typedUnknownSeeds:t.typedUnknownSeeds,ceremony:t.ceremony}}catch{return{tier:`standard`,classifyTriggers:[],typedUnknownSeeds:[],ceremony:Fr(`standard`)}}}async function Dr(e,t,n,r){try{return await Cr(e,t,{task:n,maxFiles:r===`critical`?20:10})}catch{return null}}async function Or(e,t,n,r){try{let i=`decision pattern convention ${n}`,a=typeof e.embedQuery==`function`?await e.embedQuery(i):await e.embed(i);return(await t.search(a,{limit:r,origin:`curated`})).slice(0,r).map(e=>Mr(e))}catch{return[]}}async function kr(e){return Promise.all(e.map(async e=>Ar(e)))}async function Ar(e){try{return Pr(await Wn({path:e}))}catch(t){return{path:e,exports:[],functions:[],lines:0,error:t instanceof Error?t.message:`Unable to summarize file`}}}async function jr(e,t,n){try{return Bn({action:`create`,taskId:t,tier:n},e),t}catch{return null}}function Mr(e){return{source:e.record.sourcePath,snippet:Nr(e.record.content),relevance:e.score}}function Nr(e){let t=e.replace(/\s+/g,` `).trim();return t.length<=200?t:`${t.slice(0,197).trimEnd()}...`}function Pr(e){return{path:e.path,exports:e.exports,functions:e.functions.map(e=>e.name),lines:e.lines}}function Fr(e){return{...wr[e]}}function Ir(e){return{...e,estimatedTokens:U(JSON.stringify(e))}}function Lr(e){let t=e.toLowerCase().replace(/[^a-z0-9\s]/g,` `).split(/\s+/).filter(Boolean).slice(0,5).join(`-`),n=Date.now().toString(36);return`${t||`task`}-${n}`}const Rr=T(l);async function zr(e,t){try{let{stdout:n}=await Rr(`git`,e,{cwd:t,timeout:15e3});return n.toString().trim()}catch{return``}}async function Br(e={}){let t=e.cwd??process.cwd(),n=e.commitCount??5,r=await zr([`rev-parse`,`--show-toplevel`],t);if(!r)return{gitRoot:t,branch:`unknown`,status:{staged:[],modified:[],untracked:[]},recentCommits:[]};let i=r,[a,o,s,c]=await Promise.all([zr([`rev-parse`,`--abbrev-ref`,`HEAD`],i),zr([`status`,`--porcelain`],i),zr([`log`,`--max-count=${n}`,`--format=%h|%s|%an|%ai`],i),e.includeDiff?zr([`diff`,`--stat`,`--no-color`],i):Promise.resolve(``)]),l=[],u=[],d=[];for(let e of o.split(`
49
+ `).filter(Boolean)){let t=e[0],n=e[1],r=e.slice(3).trim();t!==` `&&t!==`?`&&l.push(r),(n===`M`||n===`D`)&&u.push(r),t===`?`&&d.push(r)}let f=s.split(`
50
+ `).filter(Boolean).map(e=>{let[t,n,r,i]=e.split(`|`);return{hash:t,message:n,author:r,date:i}});return{gitRoot:r,branch:a||`unknown`,status:{staged:l,modified:u,untracked:d},recentCommits:f,diff:c||void 0}}function Vr(e,...t){return`${e}_${V(`sha256`).update(t.join(`|`)).digest(`hex`).slice(0,12)}`}async function Hr(e,t){let{action:n}=t;switch(n){case`find_nodes`:{let r=await e.findNodes({type:t.nodeType,namePattern:t.namePattern,sourcePath:t.sourcePath,limit:t.limit});return{action:n,nodes:r,summary:`Found ${r.length} node(s)${t.nodeType?` of type "${t.nodeType}"`:``}${t.namePattern?` matching "${t.namePattern}"`:``}`}}case`find_edges`:{let r=await e.findEdges({type:t.edgeType,fromId:t.fromId,toId:t.toId,limit:t.limit});return{action:n,edges:r,summary:`Found ${r.length} edge(s)${t.edgeType?` of type "${t.edgeType}"`:``}`}}case`neighbors`:{if(!t.nodeId)return{action:n,summary:`Error: nodeId is required for neighbors action`};let r=await e.getNeighbors(t.nodeId,{edgeType:t.edgeType,direction:t.direction,limit:t.limit});return{action:n,nodes:r.nodes,edges:r.edges,summary:`Found ${r.nodes.length} neighbor(s) and ${r.edges.length} edge(s) for node "${t.nodeId}"`}}case`traverse`:{if(!t.nodeId)return{action:n,summary:`Error: nodeId is required for traverse action`};let r=await e.traverse(t.nodeId,{edgeType:t.edgeType,maxDepth:t.maxDepth,direction:t.direction,limit:t.limit});return{action:n,nodes:r.nodes,edges:r.edges,summary:`Traversed ${r.nodes.length} node(s) and ${r.edges.length} edge(s) from "${t.nodeId}" (depth=${t.maxDepth??2})`}}case`stats`:{let t=await e.getStats();return{action:n,stats:t,summary:`Graph: ${t.nodeCount} nodes, ${t.edgeCount} edges. Types: ${Object.entries(t.nodeTypes).map(([e,t])=>`${e}(${t})`).join(`, `)||`none`}`}}case`validate`:{let t=await e.validate();return{action:n,validation:t,stats:t.stats,summary:t.valid?`Graph validation passed: ${t.stats.nodeCount} nodes, ${t.stats.edgeCount} edges, ${t.orphanNodes.length} orphan node(s)`:`Graph validation found ${t.danglingEdges.length} dangling edge(s) and ${t.orphanNodes.length} orphan node(s)`}}case`add`:{let r=0,i=0;if(t.nodes&&t.nodes.length>0){let n=t.nodes.map(e=>({id:e.id??Vr(`node`,e.type,e.name),type:e.type,name:e.name,properties:e.properties??{},sourceRecordId:e.sourceRecordId,sourcePath:e.sourcePath,createdAt:new Date().toISOString()}));await e.upsertNodes(n),r=n.length}if(t.edges&&t.edges.length>0){let n=t.edges.map(e=>({id:e.id??Vr(`edge`,e.fromId,e.toId,e.type),fromId:e.fromId,toId:e.toId,type:e.type,weight:e.weight,properties:e.properties}));await e.upsertEdges(n),i=n.length}return{action:n,nodesAdded:r,edgesAdded:i,summary:`Added ${r} node(s) and ${i} edge(s) to the graph`}}case`delete`:if(t.nodeId)return await e.deleteNode(t.nodeId),{action:n,deleted:1,summary:`Deleted node "${t.nodeId}" and its edges`};if(t.sourcePath){let r=await e.deleteBySourcePath(t.sourcePath);return{action:n,deleted:r,summary:`Deleted ${r} node(s) from source "${t.sourcePath}"`}}return{action:n,summary:`Error: nodeId or sourcePath required for delete action`};case`clear`:{let t=await e.getStats();return await e.clear(),{action:n,deleted:t.nodeCount,summary:`Cleared graph: removed ${t.nodeCount} node(s) and ${t.edgeCount} edge(s)`}}case`detect_communities`:{let t=await e.detectCommunities(),r=Object.values(t).reduce((e,t)=>e+t.length,0);return{action:n,communities:t,summary:`Detected ${Object.keys(t).length} community/communities covering ${r} node(s)`}}case`set_community`:return!t.nodeId||!t.community?{action:n,summary:`Error: nodeId and community are required for set_community action`}:(await e.setNodeCommunity(t.nodeId,t.community),{action:n,summary:`Set community "${t.community}" on node "${t.nodeId}"`});case`trace_process`:{if(!t.nodeId||!t.label)return{action:n,summary:`Error: nodeId and label are required for trace_process action`};let r=await e.traceProcess(t.nodeId,t.label);return{action:n,process:r,summary:`Traced process "${r.label}" from node "${t.nodeId}": ${r.steps.length} step(s)`}}case`list_processes`:{let r=await e.getProcesses(t.nodeId);return{action:n,processes:r,summary:`Found ${r.length} process(es)${t.nodeId?` involving node "${t.nodeId}"`:``}`}}case`delete_process`:return t.processId?(await e.deleteProcess(t.processId),{action:n,summary:`Deleted process "${t.processId}"`}):{action:n,summary:`Error: processId is required for delete_process action`};case`depth_traverse`:{if(!t.nodeId)return{action:n,summary:`Error: nodeId is required for depth_traverse action`};let r=await e.depthGroupedTraversal(t.nodeId,t.maxDepth,{edgeType:t.edgeType,direction:t.direction,limit:t.limit}),i=Object.values(r).reduce((e,t)=>e+t.length,0);return{action:n,depthGroups:r,summary:`Depth-grouped traversal from "${t.nodeId}": ${i} node(s) across ${Object.keys(r).length} depth level(s)`}}case`cohesion`:{if(!t.community)return{action:n,summary:`Error: community is required for cohesion action`};let r=await e.getCohesionScore(t.community);return{action:n,cohesionScore:r,summary:`Community "${t.community}" cohesion score: ${(r*100).toFixed(1)}%`}}case`symbol360`:{if(!t.nodeId)return{action:n,summary:`Error: nodeId is required for symbol360 action`};let r=await e.getSymbol360(t.nodeId);return{action:n,symbol360:r,nodes:[r.node],edges:[...r.incoming,...r.outgoing],summary:`360° view of "${r.node.name}": ${r.incoming.length} incoming, ${r.outgoing.length} outgoing, community: ${r.community??`none`}, ${r.processes.length} process(es)`}}default:return{action:n,summary:`Unknown action: ${n}`}}}async function Ur(e,t,n){let r=n?.hops??1,i=n?.maxPerHit??5,a=[];for(let o of t)try{let t=await e.findNodes({sourcePath:o.sourcePath}),s=[],c=[],l=new Set,u=new Set;for(let a of t.slice(0,i))if(!l.has(a.id)&&(l.add(a.id),s.push(a),r>0)){let t=await e.traverse(a.id,{maxDepth:r,edgeType:n?.edgeType,limit:i});for(let e of t.nodes)l.has(e.id)||(l.add(e.id),s.push(e));for(let e of t.edges)u.has(e.id)||(u.add(e.id),c.push(e))}a.push({recordId:o.recordId,score:o.score,sourcePath:o.sourcePath,graphContext:{nodes:s,edges:c}})}catch{a.push({recordId:o.recordId,score:o.score,sourcePath:o.sourcePath,graphContext:{nodes:[],edges:[]}})}return a}const Wr=[{name:`onboard`,description:`First-time codebase exploration and understanding`,keywords:[`onboard`,`new project`,`understand`,`explore`,`first time`,`getting started`,`learn`,`overview`],tools:[{tool:`status`,reason:`Check index health and record count`,order:1},{tool:`onboard`,reason:`Run all analysis tools in one command`,order:2,suggestedArgs:{path:`.`}},{tool:`search`,reason:`Find specific topics of interest`,order:3},{tool:`graph`,reason:`Module & symbol relationship map — stats for overview, neighbors for exploration`,order:4,suggestedArgs:{action:`stats`}}]},{name:`audit`,description:`Assess project health, quality, and structure`,keywords:[`audit`,`health`,`quality`,`assess`,`review project`,`check quality`,`code quality`,`tech debt`],tools:[{tool:`status`,reason:`Check index freshness`,order:1},{tool:`audit`,reason:`Unified audit report with score and recommendations`,order:2,suggestedArgs:{detail:`summary`}},{tool:`check`,reason:`Typecheck + lint validation`,order:3},{tool:`health`,reason:`Detailed health checks on package.json, tsconfig, etc.`,order:4}]},{name:`bugfix`,description:`Diagnose and fix a bug or failing test`,keywords:[`bug`,`fix`,`debug`,`error`,`failing`,`broken`,`crash`,`wrong`,`issue`,`problem`,`not working`],tools:[{tool:`parse_output`,reason:`Parse error output from build tools (tsc, vitest, biome)`,order:1},{tool:`symbol`,reason:`Find definition and all references of the failing symbol`,order:2},{tool:`trace`,reason:`Trace call chain backward from the failure point`,order:3,suggestedArgs:{direction:`backward`}},{tool:`graph`,reason:`Understand module context — what imports the failing module`,order:4,suggestedArgs:{action:`neighbors`}},{tool:`search`,reason:`Search for related patterns or similar fixes`,order:5},{tool:`test_run`,reason:`Re-run tests after fix`,order:6}]},{name:`implement`,description:`Add a new feature or implement a change`,keywords:[`implement`,`add feature`,`new feature`,`build`,`create`,`add`,`develop`,`write code`],tools:[{tool:`scope_map`,reason:`Generate a reading plan for affected files`,order:1},{tool:`search`,reason:`Find related patterns and prior art`,order:2},{tool:`find`,reason:`Find usage examples of similar patterns`,order:3,suggestedArgs:{mode:`examples`}},{tool:`graph`,reason:`Map module dependencies before adding new code`,order:4,suggestedArgs:{action:`neighbors`}},{tool:`symbol`,reason:`Find existing patterns to follow`,order:5},{tool:`trace`,reason:`Understand call chains to integrate with`,order:6},{tool:`check`,reason:`Validate after implementation`,order:7},{tool:`test_run`,reason:`Run tests to verify`,order:8},{tool:`blast_radius`,reason:`Check impact of changes`,order:9}]},{name:`refactor`,description:`Restructure or clean up existing code`,keywords:[`refactor`,`restructure`,`clean up`,`reorganize`,`rename`,`move`,`extract`,`DRY`,`dead code`],tools:[{tool:`dead_symbols`,reason:`Find unused exports to remove`,order:1},{tool:`graph`,reason:`Map module dependency graph before restructuring`,order:2,suggestedArgs:{action:`neighbors`}},{tool:`trace`,reason:`Understand call chains affected by refactoring`,order:3},{tool:`symbol`,reason:`Find all references before renaming`,order:4},{tool:`blast_radius`,reason:`Assess impact before making changes`,order:5},{tool:`rename`,reason:`Safe cross-file rename`,order:6},{tool:`check`,reason:`Validate after refactoring`,order:7},{tool:`test_run`,reason:`Ensure no regressions`,order:8}]},{name:`search`,description:`Find specific code, patterns, or information`,keywords:[`find`,`search`,`where`,`locate`,`look for`,`grep`,`which file`,`how does`],tools:[{tool:`search`,reason:`Hybrid semantic + keyword search`,order:1},{tool:`find`,reason:`Federated search with glob and regex`,order:2},{tool:`symbol`,reason:`Resolve a specific symbol definition and references`,order:3},{tool:`graph`,reason:`Explore cross-module import relationships and connected symbols`,order:4,suggestedArgs:{action:`neighbors`}}]},{name:`code-navigation`,description:`Understand code structure, module relationships, and cross-package dependencies`,keywords:[`navigate`,`understand`,`module`,`import`,`dependency`,`relationship`,`call chain`,`who calls`,`who uses`,`connected`,`cross-package`],tools:[{tool:`graph`,reason:`Module import graph — see who imports whom across packages`,order:1,suggestedArgs:{action:`neighbors`}},{tool:`symbol`,reason:`Resolve symbol definitions and all references`,order:2},{tool:`trace`,reason:`Follow call chains forward or backward`,order:3},{tool:`file_summary`,reason:`Structural overview of target files`,order:4}]},{name:`context`,description:`Compress or manage context for efficient LLM interaction`,keywords:[`context`,`compress`,`summarize`,`too long`,`token`,`budget`,`reduce`,`compact`],tools:[{tool:`file_summary`,reason:`Quick structural overview without reading full file`,order:1},{tool:`compact`,reason:`Compress file to relevant sections`,order:2,suggestedArgs:{segmentation:`paragraph`}},{tool:`digest`,reason:`Compress multiple sources into budgeted summary`,order:3},{tool:`stratum_card`,reason:`Generate reusable context cards`,order:4}]},{name:`memory`,description:`Manage persistent knowledge across sessions`,keywords:[`memory`,`remember`,`persist`,`save`,`recall`,`decision`,`convention`,`session`,`checkpoint`],tools:[{tool:`list`,reason:`See all stored knowledge entries`,order:1},{tool:`search`,reason:`Search curated knowledge`,order:2,suggestedArgs:{origin:`curated`}},{tool:`remember`,reason:`Store a new decision or pattern`,order:3},{tool:`checkpoint`,reason:`Save/restore session progress`,order:4},{tool:`stash`,reason:`Temporary key-value storage within session`,order:5}]},{name:`validate`,description:`Run checks, tests, and validation`,keywords:[`validate`,`check`,`test`,`lint`,`typecheck`,`verify`,`CI`,`pass`,`run tests`],tools:[{tool:`check`,reason:`Typecheck + lint in one call`,order:1,suggestedArgs:{detail:`errors`}},{tool:`test_run`,reason:`Run tests with structured output`,order:2},{tool:`health`,reason:`Project health assessment`,order:3}]},{name:`analyze`,description:`Deep analysis of codebase structure, dependencies, or patterns`,keywords:[`analyze`,`dependency`,`structure`,`pattern`,`architecture`,`diagram`,`entry point`,`import`],tools:[{tool:`analyze_structure`,reason:`Project structure overview`,order:1},{tool:`analyze_dependencies`,reason:`Dependency graph and analysis`,order:2},{tool:`graph`,reason:`Traverse module import graph for cross-package relationships`,order:3,suggestedArgs:{action:`neighbors`}},{tool:`symbol`,reason:`Deep-dive into specific symbols`,order:4},{tool:`trace`,reason:`Follow data flow and call chains`,order:5},{tool:`analyze_patterns`,reason:`Detect code patterns and conventions`,order:6},{tool:`analyze_entry_points`,reason:`Find handlers, exports, and entry points`,order:7},{tool:`analyze_diagram`,reason:`Generate Mermaid diagrams`,order:8}]},{name:`upgrade`,description:`Update AI Kit agents, prompts, skills, and scaffold to the latest version (user-level and workspace-level)`,keywords:[`upgrade`,`update`,`version`,`scaffold`,`outdated`,`mismatch`,`deploy`,`install`,`refresh`],tools:[{tool:`status`,reason:`Check current versions and detect mismatches — auto-triggers upgrade when a version mismatch is found`,order:1},{tool:`reindex`,reason:`Refresh the index after the upgrade completes`,order:2},{tool:`produce_knowledge`,reason:`Regenerate codebase analysis with updated tooling`,order:3,suggestedArgs:{path:`.`}}]},{name:`flow`,description:`Manage development flows — structured step-by-step processes for tasks`,keywords:[`flow`,`workflow`,`step`,`process`,`pipeline`,`lifecycle`,`sequence`,`start flow`,`flow status`],tools:[{tool:`flow_list`,reason:`List all available flows (builtin + custom)`,order:1},{tool:`flow_status`,reason:`Check current active flow and step`,order:2},{tool:`flow_start`,reason:`Start a named flow`,order:3},{tool:`flow_step`,reason:`Advance to next step, skip, or redo`,order:4},{tool:`flow_read_instruction`,reason:`Read the current step instruction`,order:5},{tool:`flow_info`,reason:`Get detailed info about a specific flow`,order:6},{tool:`flow_add`,reason:`Install a new custom flow`,order:7},{tool:`flow_update`,reason:`Update an existing custom flow`,order:8},{tool:`flow_remove`,reason:`Remove a custom flow`,order:9},{tool:`flow_reset`,reason:`Clear active flow state to start over`,order:10}]},{name:`web`,description:`Fetch web pages, search the web, or make HTTP API calls`,keywords:[`web`,`fetch`,`url`,`website`,`api`,`http`,`request`,`download`,`scrape`,`browse`,`web search`,`online`],tools:[{tool:`web_search`,reason:`Search the web for information`,order:1},{tool:`web_fetch`,reason:`Fetch and extract content from URLs`,order:2},{tool:`http`,reason:`Make raw HTTP requests to APIs`,order:3}]},{name:`brainstorm`,description:`Interactive ideation and creative exploration for design decisions`,keywords:[`brainstorm`,`ideate`,`ideas`,`explore`,`creative`,`design`,`options`,`approach`,`alternatives`,`think`],tools:[{tool:`brainstorm`,reason:`Interactive structured ideation session`,order:1},{tool:`search`,reason:`Find related patterns and prior art`,order:2,suggestedArgs:{origin:`curated`}},{tool:`remember`,reason:`Persist chosen direction as a decision`,order:3,suggestedArgs:{category:`decisions`}}]},{name:`present`,description:`Display rich visual content — dashboards, charts, tables, timelines`,keywords:[`present`,`dashboard`,`chart`,`table`,`visualize`,`display`,`show`,`render`,`report`,`timeline`],tools:[{tool:`present`,reason:`Render rich HTML dashboards, charts, and tables`,order:1},{tool:`analyze_diagram`,reason:`Generate Mermaid diagrams for architecture views`,order:2},{tool:`measure`,reason:`Collect metrics to visualize`,order:3}]},{name:`quality`,description:`FORGE quality gates — classify task complexity, ground requirements, verify evidence`,keywords:[`quality`,`forge`,`evidence`,`gate`,`classify`,`ground`,`tier`,`critical`,`verify`,`proof`],tools:[{tool:`forge_classify`,reason:`Determine task tier (Floor/Standard/Critical)`,order:1},{tool:`forge_ground`,reason:`Ground requirements with evidence criteria`,order:2},{tool:`evidence_map`,reason:`Map evidence and run quality gates`,order:3,suggestedArgs:{action:`gate`}},{tool:`check`,reason:`Typecheck + lint validation`,order:4},{tool:`test_run`,reason:`Run tests for coverage evidence`,order:5}]},{name:`transform`,description:`Automated code transformations — codemods, renames, data transforms`,keywords:[`transform`,`codemod`,`rename`,`replace`,`migrate`,`convert`,`data transform`,`rewrite`,`bulk edit`],tools:[{tool:`rename`,reason:`Safe cross-file symbol rename`,order:1},{tool:`codemod`,reason:`Apply AST-level code transformations`,order:2},{tool:`data_transform`,reason:`Transform data between formats`,order:3},{tool:`diff_parse`,reason:`Parse and analyze diffs`,order:4},{tool:`blast_radius`,reason:`Check impact of transformations`,order:5}]},{name:`git`,description:`Git context, changelogs, and version tracking`,keywords:[`git`,`commit`,`diff`,`changelog`,`history`,`branch`,`version`,`release`,`changes`,`what changed`],tools:[{tool:`git_context`,reason:`Get git status, diff, and branch info`,order:1},{tool:`changelog`,reason:`Generate changelog from git history`,order:2},{tool:`blast_radius`,reason:`Assess impact of changed files`,order:3}]},{name:`indexing`,description:`Manage smart indexing, trickle mode, and index maintenance`,keywords:[`index`,`indexing`,`smart index`,`trickle`,`reindex`,`index mode`,`index status`,`queue`,`stale index`],tools:[{tool:`status`,reason:`Check index mode, queue size, and freshness`,order:1},{tool:`reindex`,reason:`Force a full reindex (only when smart mode cannot keep up)`,order:2,suggestedArgs:{force:!0}},{tool:`produce_knowledge`,reason:`Regenerate curated resource analysis`,order:3,suggestedArgs:{path:`.`}}]}];function Gr(e,t=5,n){let r=e.toLowerCase(),i=Wr.map(e=>{let t=0;for(let n of e.keywords)r.includes(n)&&(t+=n.includes(` `)?2:1);return{workflow:e,score:t}}).filter(e=>e.score>0).sort((e,t)=>t.score-e.score),a=Wr.find(e=>e.name===`search`)??Wr[0],o=i[0]?.workflow??a,s=i.slice(1,4).map(e=>e.workflow.name).filter(e=>e!==o.name),c={workflow:o.name,description:o.description,tools:o.tools.slice(0,t),alternativeWorkflows:s};return n===`smart`&&(c.tools=c.tools.map(e=>e.tool===`reindex`?{...e,reason:`Smart indexing is active — files are indexed automatically. Use reindex({ force: true }) only if the index is severely outdated.`,suggestedArgs:{force:!0}}:e)),c}function Kr(e,t,n=.6){if(e.length<=t)return e;let r=Math.max(0,t-120),i=Math.floor(r*n),a=r-i,o=e.slice(0,i),s=o.lastIndexOf(`
51
+ `),c=s>0?o.slice(0,s):o,l=e.length-a,u=e.slice(l),d=u.indexOf(`
52
+ `),f=d>=0?u.slice(d+1):u,p=e.length-c.length-f.length,m=1,h=c.length,g=e.length-f.length;for(let t=h;t<g;t++)e.charCodeAt(t)===10&&m++;return`${c}\n\n[… ${m} lines / ${(p/1024).toFixed(1)}KB truncated — showing first ${c.split(`
53
+ `).length} + last ${f.split(`
54
+ `).length} lines]\n\n${f}`}function qr(e,t){if(e.length<=t)return e;let n=Math.max(0,t-200),r=e.slice(n,t).lastIndexOf(`
55
+
56
+ `),i=r>=0?n+r:t,a=e.slice(0,i).trimEnd(),o=Math.round(i/e.length*100);return`${a}\n\n---\n*[Truncated at ${i.toLocaleString()} chars — ${o}% of original content]*`}function Jr(e,t){let n=t*4;return e.length<=n?e:Kr(e,n)}const Yr=5e4;async function Xr(e){let{url:t,method:n=`GET`,headers:r={},body:i,timeout:a=15e3}=e,o=new URL(t);if(o.protocol!==`http:`&&o.protocol!==`https:`)throw Error(`Unsupported protocol: ${o.protocol} — only http/https allowed`);let s=o.hostname;if(s===`169.254.169.254`||s===`metadata.google.internal`||s.startsWith(`fd`)||/^(10\.|172\.(1[6-9]|2\d|3[01])\.|192\.168\.)/.test(s)||s===`0.0.0.0`||s===`[::]`)throw Error(`Blocked request to private/metadata address: ${s}`);let c=new AbortController,l=setTimeout(()=>c.abort(),a),u=Date.now(),d;try{d=await fetch(t,{method:n,headers:{"User-Agent":`aikit-http/1.0`,...r},body:n!==`GET`&&n!==`HEAD`?i:void 0,signal:c.signal,redirect:`follow`})}finally{clearTimeout(l)}let f=Date.now()-u,p=await d.text(),m=d.headers.get(`content-type`)??``,h=p;if(m.includes(`json`))try{h=JSON.stringify(JSON.parse(p),null,2)}catch{}let g=!1;h.length>Yr&&(h=Kr(h,Yr),g=!0);let _={};return d.headers.forEach((e,t)=>{_[t]=e}),{status:d.status,statusText:d.statusText,headers:_,body:h,durationMs:f,contentType:m,sizeBytes:p.length,truncated:g}}function Zr(e){return w(B(e??process.cwd()),`lanes`)}const Qr=`.lane-meta.json`;function $r(e){return Zr(e)}function K(e,t){let n=$r(t),r=w(n,e);if(!r.startsWith(w(n)))throw Error(`Invalid lane name: "${e}"`);return r}function ei(e,t){let n=S(K(e,t),Qr);if(!M(n))throw Error(`Lane "${e}" does not exist`);try{return JSON.parse(P(n,`utf-8`))}catch{throw Error(`Lane "${e}" has corrupted metadata`)}}function ti(e,t,n){let r=n??process.cwd(),i=K(e,n);if(M(i))throw Error(`Lane "${e}" already exists`);N(i,{recursive:!0});let a=[];for(let e of t){let t=w(r,e);if(!M(t))throw Error(`Source file does not exist: ${e}`);let n=C(r,t).replace(/\\/g,`/`),o=S(i,n);N(S(o,`..`),{recursive:!0}),j(t,o),a.push(n)}let o={name:e,createdAt:new Date().toISOString(),sourceFiles:a,rootPath:r};return R(S(i,Qr),`${JSON.stringify(o,null,2)}\n`,`utf-8`),o}function ni(e){let t=$r(e);if(!M(t))return[];let n=F(t),r=[];for(let e of n){let n=S(t,e,Qr);if(M(n))try{r.push(JSON.parse(P(n,`utf-8`)))}catch{}}return r}function ri(e,t){let n=ei(e,t),r=K(e,t),i=n.rootPath,a=[];for(let e of n.sourceFiles){let t=w(i,e),n=S(r,e);if(!M(n)){a.push({file:e,status:`deleted`});continue}if(!M(t)){a.push({file:e,status:`added`});continue}P(t,`utf-8`)===P(n,`utf-8`)?a.push({file:e,status:`unchanged`}):a.push({file:e,status:`modified`})}let o=si(r);for(let e of o)n.sourceFiles.includes(e)||a.push({file:e,status:`added`});return{name:e,entries:a,modified:a.filter(e=>e.status===`modified`).length,added:a.filter(e=>e.status===`added`).length,deleted:a.filter(e=>e.status===`deleted`).length}}function ii(e,t){let n=ei(e,t),r=K(e,t),i=n.rootPath,a=[],o=new Set(n.sourceFiles);for(let e of si(r))o.add(e);for(let e of o){let t=w(i,e),n=S(r,e),o=M(t),s=M(n);if(!s&&o){a.push({file:e,status:`deleted`});continue}if(s&&!o){let t=P(n,`utf-8`);a.push({file:e,status:`added`,diff:t.split(`
57
+ `).map(e=>`+${e}`).join(`
58
+ `)});continue}if(!s||!o)continue;let c=P(t,`utf-8`),l=P(n,`utf-8`);c===l?a.push({file:e,status:`unchanged`}):a.push({file:e,status:`modified`,diff:ci(c,l)})}return{name:e,entries:a,modified:a.filter(e=>e.status===`modified`).length,added:a.filter(e=>e.status===`added`).length,deleted:a.filter(e=>e.status===`deleted`).length}}function ai(e,t){let n=ei(e,t),r=K(e,t),i=n.rootPath,a=[],o=new Set(n.sourceFiles);for(let e of si(r))o.add(e);for(let e of o){let t=S(r,e);if(!M(t))continue;let n=w(i,e);N(S(n,`..`),{recursive:!0}),j(t,n),a.push(e)}return ne(r,{recursive:!0,force:!0}),{name:e,filesMerged:a.length,files:a}}function oi(e,t){let n=K(e,t);return M(n)?(ne(n,{recursive:!0,force:!0}),!0):!1}function si(e){let t=[];function n(r){for(let i of F(r)){if(i===Qr)continue;let a=S(r,i);L(a).isDirectory()?n(a):t.push(C(e,a).replace(/\\/g,`/`))}}return M(e)&&n(e),t.sort()}function ci(e,t){let n=e.split(`
59
+ `),r=t.split(`
60
+ `),i=[],a=Math.max(n.length,r.length);for(let e=0;e<a;e++){let t=n[e],a=r[e];t===a?i.push(` ${t??``}`):(t!==void 0&&i.push(`-${t}`),a!==void 0&&i.push(`+${a}`))}return i.join(`
61
+ `)}const li=new Set([`node_modules`,`.git`,`dist`,`build`,`coverage`,`.turbo`,`cdk.out`,`.cache`]),ui=[/\bif\s*\(/g,/\belse\s+if\b/g,/\bfor\s*\(/g,/\bwhile\s*\(/g,/\bcase\s+/g,/\bcatch\s*\(/g,/&&/g,/\|\|/g,/\?\?/g];async function di(e){let{path:t,extensions:n=[`.ts`,`.tsx`,`.js`,`.jsx`]}=e,r=gi(t,n),i=[];for(let e of r){let t=P(e,`utf8`),n=fi(C(process.cwd(),e),t),r=await hi(t,b(e));r!==void 0&&(n.cognitiveComplexity=r),i.push(n)}i.sort((e,t)=>t.complexity-e.complexity);let a=i.reduce((e,t)=>e+t.lines.total,0),o=i.reduce((e,t)=>e+t.lines.code,0),s=i.reduce((e,t)=>e+t.complexity,0),c=i.reduce((e,t)=>e+t.functions,0),l=i[0]??{path:``,complexity:0};return{files:i,summary:{totalFiles:i.length,totalLines:a,totalCodeLines:o,avgComplexity:i.length>0?Math.round(s/i.length*10)/10:0,maxComplexity:{file:l.path,value:l.complexity},totalFunctions:c}}}function fi(e,t){let n=t.split(`
62
+ `),r=0,i=0,a=!1;for(let e of n){let t=e.trim();if(t===``){r++;continue}if(a){i++,t.includes(`*/`)&&(a=!1);continue}if(t.startsWith(`//`)){i++;continue}t.startsWith(`/*`)&&(i++,a=!t.includes(`*/`))}let o=1;for(let e of ui){let n=t.match(e);n&&(o+=n.length)}let s=(t.match(/\bfunction\b/g)?.length??0)+(t.match(/=>\s*[{(]/g)?.length??0),c=t.match(/^\s*import\s/gm)?.length??0,l=t.match(/^\s*export\s/gm)?.length??0;return{path:e,lines:{total:n.length,code:n.length-r-i,blank:r,comment:i},complexity:o,functions:s,imports:c,exports:l}}const pi=new Set(`if_statement.for_statement.for_in_statement.while_statement.do_statement.switch_case.catch_clause.ternary_expression.if_statement.for_statement.while_statement.except_clause.list_comprehension.if_statement.for_statement.enhanced_for_statement.while_statement.catch_clause.ternary_expression.if_statement.for_statement.select_statement.if_expression.for_expression.while_expression.match_arm`.split(`.`)),mi=new Set([`if_statement`,`if_expression`,`for_statement`,`for_in_statement`,`enhanced_for_statement`,`for_expression`,`while_statement`,`while_expression`,`do_statement`,`switch_statement`,`match_expression`,`try_statement`,`catch_clause`,`except_clause`,`lambda`,`lambda_expression`,`arrow_function`]);async function hi(e,t){let n=D.get();if(!(!n||!E.has(t)))try{let r=await n.parse(e,t);if(!r)return;let i=0;function a(e,t){let n=pi.has(e.type),r=mi.has(e.type);n&&(i+=1+t);let o=r?t+1:t;for(let t=0;t<e.childCount;t++){let n=e.child(t);n&&a(n,o)}}return a(r.rootNode,0),i}catch{return}}function gi(e,t){try{if(L(e).isFile())return[e]}catch{throw Error(`Path not found: ${e}`)}let n=[];function r(e){for(let i of F(e)){if(li.has(i))continue;let a=S(e,i);L(a).isDirectory()?r(a):t.includes(b(i).toLowerCase())&&n.push(a)}}return r(e),n.sort(),n}const _i=new Set([`node_modules`,`.git`,`dist`,`build`,`coverage`,`.turbo`,`.cache`,`cdk.out`,`__pycache__`,`.venv`,`target`,`obj`,`.gradle`]),vi=[{glob:/\.env(?:\.\w+)?$/,type:`env`},{glob:/\.env\.example$/,type:`env`},{glob:/package\.json$/,type:`package-json`},{glob:/^(?:app|config|settings|default)\.(?:json|ya?ml|toml)$/i,type:`config`},{glob:/docker-compose\.ya?ml$/,type:`docker`},{glob:/cdk\.json$/,type:`cdk`},{glob:/turbo\.json$/,type:`tooling`},{glob:/application\.(?:properties|ya?ml)$/i,type:`spring`},{glob:/settings\.py$/,type:`django`},{glob:/\.flaskenv$/,type:`env`},{glob:/appsettings\.(?:\w+\.)?json$/i,type:`dotnet`}];async function yi(e,t){let n=[],r=await bi(e),i=/aikit\.config\.json$/;for(let t of r)try{let r=C(e,t).replace(/\\/g,`/`);if(i.test(r))continue;let a=await p(t,`utf-8`),o=xi(t);if(r.split(`/`).length-1>1&&o===`tooling`)continue;let s=Ci(a,o);s.length>0&&n.push({file:r,type:o,values:s})}catch{}return Ti(n,t)}async function bi(e){let t=[],n=async(e,r)=>{if(!(r>3))try{let i=await m(e,{withFileTypes:!0});for(let a of i){if(_i.has(a.name))continue;let i=S(e,a.name);a.isDirectory()&&!a.name.startsWith(`.`)?await n(i,r+1):a.isFile()&&vi.some(e=>e.glob.test(a.name))&&t.push(i)}}catch{}};return await n(e,0),t}function xi(e){let t=v(e);for(let e of vi)if(e.glob.test(t))return e.type;return`unknown`}const Si=/(?:secret|password|token|key|api.?key|auth|credential|private)/i;function Ci(e,t){let n=[];if(t===`env`)for(let t of e.split(`
63
+ `)){let e=t.trim();if(!e||e.startsWith(`#`))continue;let r=e.indexOf(`=`);if(r===-1)continue;let i=e.slice(0,r).trim(),a=e.slice(r+1).trim(),o=Si.test(i);n.push({key:i,value:o?`***`:a,sensitive:o})}else if(t===`package-json`)try{let t=JSON.parse(e);if(t.scripts)for(let[e,r]of Object.entries(t.scripts))n.push({key:`scripts.${e}`,value:String(r),sensitive:!1});if(t.engines)for(let[e,r]of Object.entries(t.engines))n.push({key:`engines.${e}`,value:String(r),sensitive:!1})}catch{}else if(t===`spring`)for(let t of e.split(`
64
+ `)){let e=t.trim();if(!e||e.startsWith(`#`)||e.startsWith(`---`))continue;let r=e.match(/^([\w.[\]-]+)\s*[=:]\s*(.*)$/);if(r){let e=r[1],t=r[2].trim(),i=Si.test(e);n.push({key:e,value:i?`***`:t,sensitive:i})}}else if(t===`json`||t===`config`||t===`cdk`||t===`tooling`||t===`dotnet`)try{wi(JSON.parse(e),``,n,0)}catch{}else if(t===`django`)for(let t of e.split(`
65
+ `)){let e=t.match(/^([A-Z_][A-Z0-9_]*)\s*=\s*(.+)$/);if(e){let t=e[1],r=e[2].trim(),i=Si.test(t);n.push({key:t,value:i?`***`:r.slice(0,100),sensitive:i})}}return n}function wi(e,t,n,r){if(!(r>3)&&typeof e==`object`&&e&&!Array.isArray(e))for(let[i,a]of Object.entries(e)){let e=t?`${t}.${i}`:i;if(typeof a==`object`&&a&&!Array.isArray(a))wi(a,e,n,r+1);else{let t=Si.test(i),r=Array.isArray(a)?`[${a.length} items]`:String(a);n.push({key:e,value:t?`***`:r.slice(0,120),sensitive:t})}}}function Ti(e,t){let n=[];if(n.push(`## Configuration Values: ${t}\n`),e.length===0)return n.push(`No configuration files detected.`),n.join(`
66
+ `);n.push(`**${e.length} config files** found\n`);let r=new Map;for(let t of e)r.has(t.type)||r.set(t.type,[]),r.get(t.type)?.push(t);for(let[e,t]of r){if(e===`package-json`&&t.length>2){n.push(`### ${e}\n`);let r=t.find(e=>e.file===`package.json`);if(r){n.push(`#### ${r.file}\n`),n.push(`| Key | Value | Sensitive |`),n.push(`|-----|-------|-----------|`);for(let e of r.values.slice(0,50)){let t=e.value.replace(/\|/g,`\\|`);n.push(`| ${e.key} | ${t} | ${e.sensitive?`⚠️ yes`:`no`} |`)}n.push(``)}let i=t.filter(e=>e.file!==`package.json`);if(i.length>0){let e=new Map;for(let t of i)for(let n of t.values){let t=`${n.key}=${n.value}`;e.set(t,(e.get(t)??0)+1)}let t=Math.max(2,Math.floor(i.length*.5));n.push(`#### Sub-packages (${i.length} packages)\n`);let r=[...e.entries()].filter(([,e])=>e>=t).map(([e])=>{let[t,...n]=e.split(`=`);return{key:t,value:n.join(`=`)}});if(r.length>0){n.push(`**Common scripts** (shared by most sub-packages):
67
+ `),n.push(`| Key | Value |`),n.push(`|-----|-------|`);for(let e of r)n.push(`| ${e.key} | ${e.value.replace(/\|/g,`\\|`)} |`);n.push(``)}let a=new Map;for(let n of i){let r=n.values.filter(n=>{let r=`${n.key}=${n.value}`;return(e.get(r)??0)<t});if(r.length===0)continue;let i=r.map(e=>`${e.key}=${e.value}`).sort().join(`||`),o=a.get(i);o?o.files.push(n.file):a.set(i,{files:[n.file],entries:r.map(e=>({key:e.key,value:e.value}))})}for(let[,e]of a){e.files.length>1?n.push(`**${e.files.length} packages** (${e.files.map(e=>e.split(`/`).slice(-2,-1)[0]||e).join(`, `)}):`):n.push(`**${e.files[0]}**:`),n.push(`| Key | Value |`),n.push(`|-----|-------|`);for(let t of e.entries)n.push(`| ${t.key} | ${t.value.replace(/\|/g,`\\|`)} |`);n.push(``)}}continue}if(t.length>3){let r=t.map(e=>e.values.map(e=>`${e.key}=${e.value}`).sort().join(`||`)),i=r.sort((e,t)=>r.filter(e=>e===t).length-r.filter(t=>t===e).length)[0];if(r.filter(e=>e===i).length>2){n.push(`### ${e}\n`);let a=t[r.indexOf(i)],o=t.filter((e,t)=>r[t]===i).map(e=>e.file),s=t.filter((e,t)=>r[t]!==i);n.push(`**${o.length} identical files**: ${o.join(`, `)}\n`),n.push(`| Key | Value | Sensitive |`),n.push(`|-----|-------|-----------|`);for(let e of a.values.slice(0,30)){let t=e.value.replace(/\|/g,`\\|`);n.push(`| ${e.key} | ${t} | ${e.sensitive?`⚠️ yes`:`no`} |`)}n.push(``);for(let e of s){n.push(`#### ${e.file}\n`),n.push(`| Key | Value | Sensitive |`),n.push(`|-----|-------|-----------|`);for(let t of e.values.slice(0,30)){let e=t.value.replace(/\|/g,`\\|`);n.push(`| ${t.key} | ${e} | ${t.sensitive?`⚠️ yes`:`no`} |`)}n.push(``)}continue}}n.push(`### ${e}\n`);for(let e of t){n.push(`#### ${e.file}\n`),n.push(`| Key | Value | Sensitive |`),n.push(`|-----|-------|-----------|`);for(let t of e.values.slice(0,50)){let e=t.value.replace(/\|/g,`\\|`);n.push(`| ${t.key} | ${e} | ${t.sensitive?`⚠️ yes`:`no`} |`)}e.values.length>50&&n.push(`\n_...and ${e.values.length-50} more values._`),n.push(``)}}let i=e.reduce((e,t)=>e+t.values.filter(e=>e.sensitive).length,0);return i>0&&n.push(`\n**⚠️ ${i} sensitive values detected** (values masked).`),n.join(`
68
+ `)}const Ei=new Set([`test`,`tests`,`__tests__`,`spec`,`specs`,`__mocks__`,`__fixtures__`,`fixtures`,`test-utils`]);function q(e){return e.replace(/\\/g,`/`).split(`/`).some(e=>Ei.has(e))||/\.(test|spec)\.[jt]sx?$/.test(e)||/Test\.java$/.test(e)}function J(e){let t=e.split(`/`);if(t.length>=2&&[`packages`,`services`,`providers`,`apps`,`libs`].includes(t[0]))return`${t[0]}/${t[1]}`;let n=t.indexOf(`java`),r=t.indexOf(`kotlin`),i=n>=0?n:r;if(i>=0&&i+2<t.length){let e=t.slice(i+1);return[`com`,`org`,`net`,`io`,`dev`].includes(e[0])&&e.length>=3?e.slice(0,3).join(`/`):e.slice(0,2).join(`/`)}return t[0]===`src`&&t.length>=3?`${t[0]}/${t[1]}`:t[0]}function Di(e,t){if(t.has(e))return e;for(let n of[`.ts`,`.tsx`,`.js`,`.jsx`])if(t.has(`${e}${n}`))return`${e}${n}`;return t.has(`${e}/index.ts`)?`${e}/index.ts`:e}function Oi(e,t,n){let r=t.get(`symbols`),i=t.get(`entry-points`),a=t.get(`dependencies`),o=new Map;for(let[t,n]of e)if(!q(t))for(let[e,r]of n){if(q(e))continue;let n=J(t),i=J(e);if(n===i)continue;let a=`${n}|${i}`;o.set(a,(o.get(a)??0)+r.length)}if(o.size===0)return`## Architecture Diagram
69
+
70
+ No cross-package dependencies detected.`;let s=new Set;for(let e of o.keys()){let[t,n]=e.split(`|`);s.add(t),s.add(n)}let c=new Map;if(r?.symbols)for(let e of r.symbols){if(!e.exported)continue;let t=e.filePath.replace(/\\/g,`/`);if(q(t))continue;let n=J(t);c.set(n,(c.get(n)??0)+1)}let l=new Map;if(i?.entryPoints)for(let e of i.entryPoints){let t=J(e.filePath.replace(/\\/g,`/`)),n=l.get(t);n?(n.count++,e.trigger&&n.triggers.add(e.trigger)):l.set(t,{count:1,triggers:new Set(e.trigger?[e.trigger]:[])})}let u=[];if(a?.external){let e=a.external,t={"client-dynamodb":{id:`dynamodb`,name:`DynamoDB`},"lib-dynamodb":{id:`dynamodb`,name:`DynamoDB`},"client-sqs":{id:`sqs`,name:`SQS`},"client-ses":{id:`ses`,name:`SES`},"client-sesv2":{id:`ses`,name:`SES`},"client-s3":{id:`s3`,name:`S3`},"client-eventbridge":{id:`eventbridge`,name:`EventBridge`},"client-sns":{id:`sns`,name:`SNS`},"client-secrets-manager":{id:`secrets`,name:`Secrets Manager`},"client-scheduler":{id:`scheduler`,name:`EventBridge Scheduler`},"client-apigatewaymanagementapi":{id:`apigw`,name:`API Gateway`},"client-cloudwatch":{id:`cloudwatch`,name:`CloudWatch`}},n=new Set;for(let r of Object.keys(e))for(let[e,i]of Object.entries(t))r.includes(e)&&!n.has(i.id)&&(n.add(i.id),u.push(i));u.sort((e,t)=>e.name.localeCompare(t.name))}let d=new Map;for(let e of[...s].sort()){let t=e.split(`/`)[0],n=d.get(t);n?n.push(e):d.set(t,[e])}let f=new Map;if(r?.symbols){let e=new Map;for(let t of r.symbols){let n=t.filePath.replace(/\\/g,`/`),r=J(n),i=n.match(/\.[^./]+$/)?.[0]||``;e.has(r)||e.set(r,new Map);let a=e.get(r);a.set(i,(a.get(i)??0)+1)}let t={".ts":`TypeScript`,".tsx":`TypeScript`,".js":`JavaScript`,".jsx":`JavaScript`,".java":`Java`,".kt":`Kotlin`,".scala":`Scala`,".py":`Python`,".go":`Go`,".rs":`Rust`,".cs":`C#`,".rb":`Ruby`,".php":`PHP`,".swift":`Swift`};for(let[n,r]of e){let e=``,i=0;for(let[t,n]of r)n>i&&(i=n,e=t);f.set(n,t[e]||`TypeScript`)}}let p=e=>e.replace(/[^a-zA-Z0-9]/g,`_`),m=[];m.push("```mermaid"),m.push(`C4Container`),m.push(` title C4 Container: ${n}`),m.push(``);let h=e=>{let t=[],n=l.get(e);n&&(t.push(`${n.count} handlers`),n.triggers.size>0&&t.push([...n.triggers].join(`, `)));let r=c.get(e);return r&&t.push(`${r} exports`),t.join(` · `)||``},g=e=>{let t=f.get(e)||`TypeScript`;if(e.startsWith(`infra`))return`CDK/${t}`;if(l.has(e)){let n=l.get(e);if(n?.triggers.has(`SQS`)||n?.triggers.has(`SNS`)||n?.triggers.has(`API Gateway`))return`Lambda/${t}`;if(n?.triggers.has(`HTTP Server`)||n?.triggers.has(`HTTP Endpoint`))return`Spring Boot/${t}`}return t};for(let[e,t]of[...d.entries()].sort()){let r=new Set([`com`,`org`,`net`,`io`,`dev`,`src`]).has(e)?n.charAt(0).toUpperCase()+n.slice(1):e.charAt(0).toUpperCase()+e.slice(1);if(t.length===1&&t[0]===e){let e=t[0];m.push(` Container(${p(e)}, "${e}", "${g(e)}", "${h(e)}")`)}else{m.push(` System_Boundary(${p(e)}_boundary, "${r}") {`);for(let e of t){let t=e.split(`/`).slice(1).join(`/`)||e;m.push(` Container(${p(e)}, "${t}", "${g(e)}", "${h(e)}")`)}m.push(` }`)}m.push(``)}if(u.length>0){for(let e of u)m.push(` System_Ext(ext_${e.id}, "${e.name}", "AWS")`);m.push(``)}let _=[...o.entries()].sort((e,t)=>t[1]-e[1]);for(let[e,t]of _.slice(0,30)){let[n,r]=e.split(`|`);m.push(` Rel(${p(n)}, ${p(r)}, "Uses", "${t} calls")`)}m.push("```");let v=`## C4 Container Diagram\n\n${m.join(`
71
+ `)}`,y=[];y.push("```mermaid"),y.push(`graph TB`);let b=new Set;for(let[,e]of l)for(let t of e.triggers)b.add(t);if(b.size>0){y.push(` subgraph Triggers["External Triggers"]`);for(let e of[...b].sort()){let t=`trigger_${e.replace(/[^a-zA-Z0-9]/g,`_`)}`;y.push(` ${t}(("${e}"))`)}y.push(` end`),y.push(``)}let x=[...s].filter(e=>l.has(e)).sort(),S=[...s].filter(e=>!l.has(e)).sort();if(x.length>0){y.push(` subgraph Services["Service Layer"]`);for(let e of x){let t=`flow_${p(e)}`,n=e.includes(`/`)?e.split(`/`).pop()??e:e,r=l.get(e);y.push(` ${t}["${n} (${r?.count??0} handlers)"]`)}y.push(` end`),y.push(``)}if(S.length>0){y.push(` subgraph Libraries["Shared Libraries"]`);for(let e of S){let t=`flow_${p(e)}`,n=e.includes(`/`)?e.split(`/`).pop()??e:e;y.push(` ${t}["${n}"]`)}y.push(` end`),y.push(``)}if(u.length>0){y.push(` subgraph External["AWS Services"]`);for(let e of u)y.push(` flow_ext_${e.id}[("${e.name}")]`);y.push(` end`),y.push(``)}for(let e of x){let t=l.get(e);if(!t)continue;let n=`flow_${p(e)}`;for(let e of t.triggers){let t=`trigger_${e.replace(/[^a-zA-Z0-9]/g,`_`)}`;y.push(` ${t} --> ${n}`)}}let C=_.filter(([e])=>{let[t,n]=e.split(`|`);return l.has(t)&&!l.has(n)});for(let[e,t]of C.slice(0,15)){let[n,r]=e.split(`|`);y.push(` flow_${p(n)} -->|${t}| flow_${p(r)}`)}let w=_.filter(([e])=>{let[t,n]=e.split(`|`);return!l.has(t)&&!l.has(n)});for(let[e,t]of w.slice(0,10)){let[n,r]=e.split(`|`);y.push(` flow_${p(n)} -->|${t}| flow_${p(r)}`)}y.push("```");let T=`## Architectural Flow\n\n${y.join(`
72
+ `)}`,E=[`# Architecture Diagrams: ${n}\n`];return E.push(v),E.push(T),E.join(`
73
+
74
+ ---
75
+
76
+ `)}const ki={structure:`Project Structure`,dependencies:`Dependencies`,"entry-points":`Entry Points`,symbols:`Symbols`,patterns:`Patterns`,diagram:`C4 Container Diagram`,"code-map":`Code Map (Module Graph)`,"config-values":`Configuration Values`,"synthesis-guide":`Synthesis Guide`};function Ai(e,t,n,r){let i=[`Analysis baselines for **${n}** have been generated.`];t===`generate`?i.push("Individual results are in the sibling `.md` and `.json` files in this directory.",``):i.push(`Results are stored in the AI Kit vector store.`,``);let a=r.get(`symbols`),o=r.get(`dependencies`),s=r.get(`patterns`),c=r.get(`entry-points`),l=a?.totalCount??0,u=a?.exportedCount??0,d=o?.totalImports??0,f=c?.total??0,p=(s?.patterns??[]).map(e=>e.pattern),m=p.some(e=>e.startsWith(`Spring`)),h=p.includes(`AWS CDK`)||p.includes(`CDK IaC`),g=p.includes(`Maven`),_=p.includes(`Serverless`)||f>3,v=o?.external?Object.keys(o.external):[],y=v.some(e=>[`express`,`fastify`,`next`,`react`,`vitest`,`jest`].includes(e))||d>0,b=v.some(e=>[`turbo`,`lerna`,`nx`].includes(e))||p.includes(`Monorepo`);if(i.push(`### Project Profile`,``),i.push(`- **${l} symbols** (${u} exported), **${d} imports**, **${f} entry ${f===1?`point`:`points`}**`),p.length>0&&i.push(`- **Detected**: ${p.slice(0,8).join(`, `)}`),i.push(``),l===0&&d===0&&f===0)return i.push(`> **Note:** This project appears to be empty or contains no analyzable source code.`,`> Run onboard again after adding source files.`),i.join(`
77
+ `);let x=e.filter(e=>e.status===`success`),S=e.filter(e=>e.status===`failed`);i.push(`### Completed Analyses`,``);for(let e of x){let n=ki[e.name]??e.name,r=e.output.length>1e3?`${Math.round(e.output.length/1024)}KB`:`${e.output.length}B`;t===`generate`?i.push(`- ✓ [${n}](./${e.name}.md) (${r})`):i.push(`- ✓ ${n} (${r})`)}if(S.length>0){i.push(``,`### Failed Analyses`,``);for(let e of S)i.push(`- ✗ ${e.name}: ${e.error}`)}i.push(``,`### Recommended Reading Order`,``,"1. **Start with** `synthesis-guide.md` (this file) → `entry-points.md` → `patterns.md`","2. **Module graph** via `code-map.md` — cross-package call edges with function names","3. **Architecture** via `diagram.md` (C4 Container) → `dependencies.md`","4. **Browse structure** via `structure.md` for file layout","5. **API surface** via `symbols.md` — file paths + exported symbols (capped at 80KB)","6. **Reference**: `config-values.md` (config reference)",``,`> **Size guidance:** Total output is ~`);let C=x.reduce((e,t)=>e+t.output.length,0)/1024;return i[i.length-1]+=`${Math.round(C)}KB. Focus on code-map.md + entry-points.md + diagram.md (~${Math.round((x.find(e=>e.name===`code-map`)?.output.length??0)/1024+(x.find(e=>e.name===`entry-points`)?.output.length??0)/1024+(x.find(e=>e.name===`diagram`)?.output.length??0)/1024)}KB) for maximum signal-to-token ratio.`,i.push(``,`### Synthesize Knowledge`,``,"Produce the following `aikit_remember` entries:",``),i.push("1. **Architecture Summary** (category: `architecture`)"),b?(i.push(` - Package boundaries, dependency graph between packages`),i.push(` - Shared vs service-specific code`)):_?(i.push(` - Lambda functions, triggers, event flow`),i.push(` - Infrastructure patterns (queues, tables, APIs)`)):m?(i.push(` - Controller → Service → Repository layers`),i.push(` - Spring configuration and profiles`)):(i.push(` - Layer structure, dependency flow`),i.push(` - Key design decisions`)),i.push(``),i.push("2. **Domain Model** (category: `architecture`)"),i.push(` - Key entities/types and their relationships`),i.push(` - Data flow from entry points through processing`),i.push(``),i.push("3. **Conventions** (category: `conventions`)"),i.push(` - Naming patterns, file organization, testing approach`),h&&i.push(` - CDK construct patterns and stack organization`),y&&i.push(` - Build tooling, package manager, module system`),g&&i.push(` - Maven module structure, dependency management`),i.push(``,`### Using AI Kit Tools`,``,`This project has an AI Kit MCP server with tools for search, analysis, memory, and more.`,"`aikit init` has already created `.github/copilot-instructions.md` and `AGENTS.md` with the complete tool reference.","If not, run `npx @vpxa/aikit init` to generate them.",``,`**Workflow pattern — use on every task:**`,``,"```",`aikit_search({ query: "your task keywords" }) # Recall prior decisions`,`aikit_scope_map({ task: "what you are doing" }) # Get a reading plan`,`# ... do the work ...`,`aikit_check({}) # Typecheck + lint`,`aikit_test_run({}) # Run tests`,`aikit_remember({ title: "What I learned", category: "decisions" }) # Persist`,"```"),i.join(`
78
+ `)}function ji(e,t,n){let r=e.get(`dependencies`),i=e.get(`symbols`),a=e.get(`entry-points`),o=[`## Code Map: ${t}\n`];if(!r&&!i)return o.push(`No dependency or symbol data available.`),o.join(`
79
+ `);let s=r?.reverseGraph??{},c=i?.symbols??[],l=a?.entryPoints??[],u=new Map;for(let e of c){if(!e.exported)continue;let t=e.filePath.replace(/\\/g,`/`);if(q(t))continue;let n=u.get(t);n?n.push({name:e.name,kind:e.kind}):u.set(t,[{name:e.name,kind:e.kind}])}let d=new Map;for(let[e,t]of Object.entries(s)){let n=Di(e.replace(/\\/g,`/`),u),r=t.map(e=>e.replace(/\\/g,`/`)).filter(e=>!q(e));if(r.length===0)continue;let i=d.get(n);if(i)for(let e of r)i.add(e);else d.set(n,new Set(r))}let f=new Map;for(let e of l)f.set(e.filePath.replace(/\\/g,`/`),{name:e.name,trigger:e.trigger});let p=new Map,m=new Map;if(n)for(let[e,t]of n){if(q(e))continue;let n=J(e);for(let[r,i]of t){if(q(r)||n===J(r))continue;let t=p.get(e);t||(t=new Map,p.set(e,t)),t.set(r,i);let a=m.get(r),o={file:e,symbols:i};a?a.push(o):m.set(r,[o])}}let h=new Set;for(let e of f.keys())h.add(e);for(let e of p.keys())h.add(e);for(let e of m.keys())h.add(e);if(!n)for(let e of u.keys()){let t=d.get(e);t&&t.size>=3&&h.add(e)}let g=new Map;for(let e of h){let t=J(e),n=g.get(t);n?n.push(e):g.set(t,[e])}let _=[...g.entries()].sort((e,t)=>e[0].localeCompare(t[0])),v=n?`AST call graph`:`import analysis`,y=n?`, ${p.size} cross-package callers`:``;o.push(`**${h.size} key modules** (${v}${y})\n`),o.push(`**Legend:** ⚡ Entry point | 📤 Exports | → Calls (outgoing) | ← Called by (incoming) | ➡ Used by (import)
80
+ `);for(let[e,t]of _){t.sort(),o.push(`### ${e}/\n`);for(let r of t){let t=u.get(r),i=f.get(r),a=p.get(r),s=m.get(r),c=d.get(r),l=r.startsWith(`${e}/`)?r.slice(e.length+1):r;if(o.push(`**${l}**`),i&&o.push(` ⚡ Entry: \`${i.name}\`${i.trigger?` (${i.trigger})`:``}`),t&&t.length>0){let e=t.slice(0,8).map(e=>`${e.name}`).join(`, `),n=t.length>8?` (+${t.length-8})`:``;o.push(` 📤 ${e}${n}`)}if(a&&a.size>0){let t=[...a.entries()].sort((e,t)=>t[1].length-e[1].length);for(let[n,r]of t.slice(0,4)){let t=n.startsWith(`${e}/`)?n.slice(e.length+1):n;o.push(` → ${t}: ${r.slice(0,5).join(`, `)}${r.length>5?`…`:``}`)}t.length>4&&o.push(` → +${t.length-4} more targets`)}if(s&&s.length>0){for(let t of s.slice(0,4)){let n=t.file.startsWith(`${e}/`)?t.file.slice(e.length+1):t.file;o.push(` ← ${n}: ${t.symbols.slice(0,4).join(`, `)}${t.symbols.length>4?`…`:``}`)}s.length>4&&o.push(` ← +${s.length-4} more callers`)}else if(!n&&c&&c.size>0){let e=[...c].filter(e=>!q(e));e.length<=3?o.push(` ➡ Used by: ${e.join(`, `)}`):o.push(` ➡ Used by: ${e.slice(0,3).join(`, `)} (+${e.length-3} more)`)}o.push(``)}}return o.join(`
81
+ `)}const Mi={structure:`Project Structure`,dependencies:`Dependencies`,"entry-points":`Entry Points`,symbols:`Symbols`,patterns:`Patterns`,diagram:`C4 Container Diagram`,"code-map":`Code Map (Module Graph)`,"config-values":`Configuration Values`,"synthesis-guide":`Synthesis Guide`,"api-surface":`API Surface`,"type-inventory":`Type Inventory`};function Ni(e){let t=e.get(`symbols`);if(!t?.symbols?.length)return`# API Surface
82
+
83
+ *No symbol data available.*
84
+ `;let n=t.symbols.filter(e=>e.exported);if(n.length===0)return`# API Surface
85
+
86
+ *No exported symbols found.*
87
+ `;let r=new Map;for(let e of n){let t=r.get(e.filePath)??[];t.push(e),r.set(e.filePath,t)}let i=[`# API Surface
88
+ `];for(let[e,t]of[...r.entries()].sort(([e],[t])=>e.localeCompare(t))){i.push(`## ${e}\n`);for(let e of t){e.decorators?.length&&i.push(e.decorators.join(` `));let t=e.signature??``,n=e.returnType?`: ${e.returnType}`:``;if(e.kind===`function`||e.kind===`method`)i.push(`### \`${e.name}${t}${n}\``);else if(e.kind===`class`)i.push(`### class \`${e.name}\`${t?` ${t}`:``}`);else if(e.kind===`interface`||e.kind===`type`){let t=e.typeBody?` ${e.typeBody}`:``;i.push(`### ${e.kind} \`${e.name}\`${t}`)}else i.push(`### ${e.kind} \`${e.name}\`${t?`: ${t}`:``}`);e.jsdoc&&i.push(`> ${e.jsdoc}`),i.push(``)}}let a=i.join(`
89
+ `);return a.length>1e5?`${a.slice(0,1e5)}\n\n*[truncated]*`:a}function Pi(e){let t=e.get(`symbols`);if(!t?.symbols?.length)return`# Type Inventory
90
+
91
+ *No symbol data available.*
92
+ `;let n=t.symbols.filter(e=>e.exported&&(e.kind===`interface`||e.kind===`type`||e.kind===`enum`));if(n.length===0)return`# Type Inventory
93
+
94
+ *No exported types/interfaces found.*
95
+ `;let r=new Map;for(let e of n){let t=r.get(e.filePath)??[];t.push(e),r.set(e.filePath,t)}let i=[`# Type Inventory
96
+ `];for(let[e,t]of[...r.entries()].sort(([e],[t])=>e.localeCompare(t))){i.push(`## ${e}\n`);for(let e of t){let t=e.typeBody??`*body not available*`;e.jsdoc&&i.push(`> ${e.jsdoc}`),i.push(`### ${e.kind} \`${e.name}\``),i.push("```"),i.push(t),i.push("```\n")}}let a=i.join(`
97
+ `);return a.length>1e5?`${a.slice(0,1e5)}\n\n*[truncated]*`:a}async function Fi(c){let l=Date.now(),u=w(c.path),d=v(u),p=c.mode??`generate`,g=c.outDir??S(u,z.aiContext),y=new i,b=new e,x=new a,C=new r,T=new n,E=new t,D=[{name:`structure`,fn:()=>y.analyze(u,{format:`markdown`,maxDepth:3,sourceOnly:!0})},{name:`dependencies`,fn:()=>b.analyze(u,{format:`markdown`})},{name:`entry-points`,fn:()=>T.analyze(u)},{name:`symbols`,fn:()=>x.analyze(u,{format:`markdown`})},{name:`patterns`,fn:()=>C.analyze(u)},{name:`diagram`,fn:()=>E.analyze(u,{diagramType:`architecture`})}],ee=await Promise.allSettled(D.map(async e=>{let t=Date.now(),n=await e.fn();return{name:e.name,result:n,durationMs:Date.now()-t}})),O=[],k=new Map,A=new Map;for(let e of ee)if(e.status===`fulfilled`){let{name:t,result:n,durationMs:r}=e.value,i=n;O.push({name:t,status:`success`,output:i.output,durationMs:r}),k.set(t,i.output),A.set(t,i.data)}else{let t=e.reason,n=D[ee.indexOf(e)].name;O.push({name:n,status:`failed`,output:``,durationMs:0,error:t.message})}let te=Date.now(),j=null;try{let e=await s(u);if((!e||e.edges.length===0)&&(e=await o(u)),e&&e.edges.length>0){j=new Map;for(let t of e.edges){let e=j.get(t.from);e||(e=new Map,j.set(t.from,e));let n=e.get(t.to);if(n)for(let e of t.symbols)n.includes(e)||n.push(e);else e.set(t.to,[...t.symbols])}}}catch{}let N=Date.now()-te,P=Date.now(),F=ji(A,d,j),I=Date.now()-P+N;if(O.push({name:`code-map`,status:`success`,output:F,durationMs:I}),k.set(`code-map`,F),j&&j.size>0){let e=Oi(j,A,d),t=O.find(e=>e.name===`diagram`);t&&(t.output=e,k.set(`diagram`,e))}let ne=Date.now(),L=await yi(u,d),re=Date.now()-ne;O.push({name:`config-values`,status:`success`,output:L,durationMs:re}),k.set(`config-values`,L);let ie=Ai(O,p,d,A);O.push({name:`synthesis-guide`,status:`success`,output:ie,durationMs:0}),k.set(`synthesis-guide`,ie);let R=Ni(A);O.push({name:`api-surface`,status:`success`,output:R,durationMs:0}),k.set(`api-surface`,R);let B=Pi(A);if(O.push({name:`type-inventory`,status:`success`,output:B,durationMs:0}),k.set(`type-inventory`,B),p===`generate`){if(M(g))for(let e of await m(g))(e.endsWith(`.md`)||e.endsWith(`.json`))&&await h(S(g,e),{force:!0});await f(g,{recursive:!0});let e=new Date().toISOString();for(let[t,n]of k){let r=S(g,`${t}.md`),i=n.replaceAll(u,d);await _(r,`<!-- Generated: ${e} -->\n<!-- Project: ${d} -->\n\n`+i,`utf-8`)}let t=[`<!-- Generated: ${e} -->`,`<!-- Project: ${d} -->`,``,`# ${d} — Codebase Knowledge`,``,`## Contents`,``];for(let e of O){let n=`${e.name}.md`,r=Mi[e.name]??e.name,i=e.status===`success`?`✓`:`✗`,a=e.durationMs>0?` (${e.durationMs}ms)`:``;t.push(`- ${i} [${r}](./${n})${a}`)}t.push(``),await _(S(g,`README.md`),t.join(`
98
+ `),`utf-8`)}let V=[];V.push({title:`Onboard: ${d} project overview`,content:ie.slice(0,2e3),category:`conventions`,tags:[`onboard`,`project-overview`,d]});let ae=O.find(e=>e.name===`patterns`);return ae?.status===`success`&&ae.output&&V.push({title:`Onboard: ${d} detected patterns`,content:ae.output.slice(0,1500),category:`patterns`,tags:[`onboard`,`patterns`,d]}),L&&V.push({title:`Onboard: ${d} config and commands`,content:L.slice(0,1500),category:`conventions`,tags:[`onboard`,`config`,`commands`,d]}),{path:u,mode:p,steps:O,outDir:p===`generate`?g:void 0,totalDurationMs:Date.now()-l,autoRemember:V}}const Y=new Map;function Ii(e,t,n=[],r){if(Y.has(e))throw Error(`Process "${e}" is already running. Stop it first.`);if(Y.size>=20)throw Error(`Too many managed processes (max 20). Stop some first.`);let i=/[;|&`$(){}[\]!<>\\]/,a=[t,...n].join(` `);if(i.test(a))throw Error(`Command contains disallowed shell metacharacters`);let o=d(a,{cwd:r?.cwd??process.cwd(),shell:!0,stdio:[`ignore`,`pipe`,`pipe`]}),s={id:e,command:t,args:n,pid:o.pid??void 0,status:`running`,startedAt:new Date().toISOString(),logs:[]},c=e=>{let t=e.toString().split(/\r?\n/).filter(Boolean);s.logs.push(...t),s.logs.length>200&&(s.logs=s.logs.slice(-200))};return o.stdout?.on(`data`,c),o.stderr?.on(`data`,c),o.on(`exit`,t=>{s.status=t===0?`stopped`:`error`,s.exitCode=t??void 0,setTimeout(()=>Y.delete(e),3e4)}),o.on(`error`,e=>{s.status=`error`,s.logs.push(`[error] ${e.message}`)}),Y.set(e,{proc:o,info:s}),s}function Li(e){let t=Y.get(e);if(!t)return;t.proc.kill(`SIGTERM`);let n=setTimeout(()=>{try{t.proc.kill(`SIGKILL`)}catch{}},5e3);return t.proc.once(`exit`,()=>clearTimeout(n)),t.info.status=`stopped`,Y.delete(e),t.info}function Ri(e){return Y.get(e)?.info}function zi(){return[...Y.values()].map(e=>e.info)}function Bi(e,t){let n=Y.get(e);return n?t?n.info.logs.slice(-t):n.info.logs:[]}function Vi(e){return w(B(e??process.cwd()),`queue.json`)}function X(e){let t=Vi(e);if(!M(t))return{};try{return JSON.parse(P(t,`utf-8`))}catch(e){return e?.code===`ENOENT`||console.warn(`Corrupt state file ${t}: ${e instanceof Error?e.message:String(e)}`),{}}}function Z(e,t){let n=Vi(t),r=y(n);M(r)||N(r,{recursive:!0});let i=`${n}.tmp`;R(i,`${JSON.stringify(e,null,2)}\n`,`utf-8`),I(i,n)}function Hi(){return`q_${Date.now().toString(36)}_${Math.random().toString(36).slice(2,6)}`}function Ui(e,t){let n=X(t);if(n[e])throw Error(`Queue "${e}" already exists`);let r={name:e,items:[]};return n[e]=r,Z(n,t),r}function Wi(e,t,n,r){let i=X(r);i[e]||(i[e]={name:e,items:[]});let a=new Date().toISOString(),o={id:Hi(),title:t,status:`pending`,data:n,createdAt:a,updatedAt:a};if(i[e].items.length>=500)throw Error(`Queue "${e}" has reached the maximum of 500 items. Clear completed items with queue({ action: "clear" }) before adding more.`);return i[e].items.push(o),Z(i,r),o}function Gi(e,t){let n=X(t),r=n[e];if(!r)throw Error(`Queue "${e}" does not exist`);let i=r.items.find(e=>e.status===`pending`);return i?(i.status=`in-progress`,i.updatedAt=new Date().toISOString(),Z(n,t),i):null}function Ki(e,t,n){let r=X(n),i=r[e];if(!i)throw Error(`Queue "${e}" does not exist`);let a=i.items.find(e=>e.id===t);if(!a)throw Error(`Item "${t}" not found in queue "${e}"`);return a.status=`done`,a.updatedAt=new Date().toISOString(),Z(r,n),a}function qi(e,t,n,r){let i=X(r),a=i[e];if(!a)throw Error(`Queue "${e}" does not exist`);let o=a.items.find(e=>e.id===t);if(!o)throw Error(`Item "${t}" not found in queue "${e}"`);return o.status=`failed`,o.error=n,o.updatedAt=new Date().toISOString(),Z(i,r),o}function Ji(e,t){return X(t)[e]??null}function Yi(e){let t=X(e);return Object.values(t).map(e=>({name:e.name,pending:e.items.filter(e=>e.status===`pending`).length,done:e.items.filter(e=>e.status===`done`).length,failed:e.items.filter(e=>e.status===`failed`).length,total:e.items.length}))}function Xi(e,t){let n=X(t),r=n[e];if(!r)throw Error(`Queue "${e}" does not exist`);let i=r.items.length;r.items=r.items.filter(e=>e.status===`pending`||e.status===`in-progress`);let a=i-r.items.length;return Z(n,t),a}function Zi(e,t){let n=X(t);return n[e]?(delete n[e],Z(n,t),!0):!1}function Qi(e){let{pattern:t,flags:n=``,testStrings:r,mode:i=`match`,replacement:a=``}=e;try{let e=new RegExp(t,n);return{pattern:t,flags:n,results:r.map(r=>{let o=e.test(r);switch(i){case`match`:{let e=n.includes(`g`)?n:`${n}g`;return{input:r,matched:o,matches:[...r.matchAll(new RegExp(t,e))].map(e=>({full:e[0],groups:[...e.slice(1)],index:e.index??0}))}}case`replace`:return{input:r,matched:o,replaced:r.replace(new RegExp(t,n),a)};default:return{input:r,matched:o,split:r.split(new RegExp(t,n))}}}),valid:!0}}catch(e){return{pattern:t,flags:n,results:[],valid:!1,error:e.message}}}function $i(e){return e.replace(/\\/g,`/`)}function ea(e){return RegExp(`(^|[^A-Za-z0-9_$])(${H(e)})(?=[^A-Za-z0-9_$]|$)`,`g`)}async function ta(e){let{oldName:t,newName:n,rootPath:r,extensions:i=ut,exclude:a=[],dryRun:o=!1}=e;if(!t.trim())throw Error(`oldName must not be empty`);let s=ea(t),c=await gt(r,i,a),l=[],u=0,d=[];for(let e of c){let t=await p(e,`utf-8`),i=t.split(/\r?\n/),a=!1;for(let t=0;t<i.length;t++){let o=i[t];s.lastIndex=0;let c=o.replace(s,(e,t)=>(a=!0,`${t}${n}`));o!==c&&(i[t]=c,l.push({path:$i(C(r,e)),line:t+1,before:o,after:c}))}a&&(u+=1,o||(d.push({path:e,content:t}),await _(e,i.join(`
99
+ `),`utf-8`)))}return!o&&d.length>0&&yt(`rename`,d,`rename: ${t} → ${n}, ${u} files`),{oldName:t,newName:n,changes:l,filesModified:u,dryRun:o}}const na=5e3;let ra=0;function ia(){return w(B(process.cwd()),`replay.jsonl`)}function aa(e,t){return e.length<=t?e:`${e.slice(0,t-1)}…`}function oa(e){let t=ia();N(y(t),{recursive:!0});let n={...e,input:aa(e.input,200),output:aa(e.output,200)};te(t,`${JSON.stringify(n)}\n`,`utf-8`),ra++,ra>=100&&(ra=0,ca().catch(()=>{}))}function sa(e={}){let t=ia(),n;try{n=P(t,`utf-8`)}catch{return[]}let r=n.trim().split(`
100
+ `).filter(Boolean),i=[];for(let e of r)try{i.push(JSON.parse(e))}catch{}if(e.tool&&(i=i.filter(t=>t.tool===e.tool)),e.source&&(i=i.filter(t=>t.source===e.source)),e.since){let t=e.since;i=i.filter(e=>e.ts>=t)}let a=e.last??20;return i.slice(-a)}async function ca(){let e=ia(),t;try{t=await p(e,`utf-8`)}catch{return 0}let n=t.trim().split(`
101
+ `).filter(Boolean);if(n.length<=na)return 0;let r=n.length-na;return await _(e,`${n.slice(-na).join(`
102
+ `)}\n`,`utf-8`),r}function la(){let e=ia();try{R(e,``,`utf-8`)}catch{}}function ua(e,t,n,r){let i=Date.now();return r().then(r=>(oa({ts:new Date().toISOString(),source:e,tool:t,input:typeof n==`string`?n:JSON.stringify(n),durationMs:Date.now()-i,status:`ok`,output:typeof r==`string`?r:JSON.stringify(r??``)}),r)).catch(r=>{throw oa({ts:new Date().toISOString(),source:e,tool:t,input:typeof n==`string`?n:JSON.stringify(n),durationMs:Date.now()-i,status:`error`,output:r instanceof Error?r.message:String(r)}),r})}function da(e){let t=[];return fa(e.data,e.schema,`$`,t),{valid:t.length===0,errors:t}}function fa(e,t,n,r){if(`type`in t){let i=t.type;if(!pa(e,i)){r.push({path:n,message:`Expected type "${i}"`,expected:i,received:ma(e)});return}}if(`enum`in t){let i=t.enum;i.some(t=>JSON.stringify(t)===JSON.stringify(e))||r.push({path:n,message:`Must be one of: ${JSON.stringify(i)}`,received:JSON.stringify(e)})}if(`const`in t&&JSON.stringify(e)!==JSON.stringify(t.const)&&r.push({path:n,message:`Must equal ${JSON.stringify(t.const)}`,received:JSON.stringify(e)}),typeof e==`string`&&(`minLength`in t&&e.length<t.minLength&&r.push({path:n,message:`String too short (min: ${t.minLength})`,received:`length ${e.length}`}),`maxLength`in t&&e.length>t.maxLength&&r.push({path:n,message:`String too long (max: ${t.maxLength})`,received:`length ${e.length}`}),`pattern`in t))try{new RegExp(t.pattern).test(e)||r.push({path:n,message:`Does not match pattern: ${t.pattern}`})}catch(e){r.push({path:n,message:`Invalid pattern: ${e instanceof Error?e.message:String(e)}`})}if(typeof e==`number`&&(`minimum`in t&&e<t.minimum&&r.push({path:n,message:`Below minimum (${t.minimum})`,received:String(e)}),`maximum`in t&&e>t.maximum&&r.push({path:n,message:`Above maximum (${t.maximum})`,received:String(e)})),Array.isArray(e)&&(`minItems`in t&&e.length<t.minItems&&r.push({path:n,message:`Too few items (min: ${t.minItems})`,received:`length ${e.length}`}),`maxItems`in t&&e.length>t.maxItems&&r.push({path:n,message:`Too many items (max: ${t.maxItems})`,received:`length ${e.length}`}),`items`in t))for(let i=0;i<e.length;i++)fa(e[i],t.items,`${n}[${i}]`,r);if(e&&typeof e==`object`&&!Array.isArray(e)){let i=e;if(`required`in t)for(let e of t.required)e in i||r.push({path:`${n}.${e}`,message:`Required property missing`});if(`properties`in t){let e=t.properties;for(let[t,a]of Object.entries(e))t in i&&fa(i[t],a,`${n}.${t}`,r)}if(`additionalProperties`in t&&t.additionalProperties===!1){let e=Object.keys(t.properties??{});for(let t of Object.keys(i))e.includes(t)||r.push({path:`${n}.${t}`,message:`Additional property not allowed`})}}}function pa(e,t){switch(t){case`string`:return typeof e==`string`;case`number`:return typeof e==`number`&&!Number.isNaN(e);case`integer`:return typeof e==`number`&&Number.isInteger(e);case`boolean`:return typeof e==`boolean`;case`null`:return e===null;case`array`:return Array.isArray(e);case`object`:return typeof e==`object`&&!!e&&!Array.isArray(e);default:return!0}}function ma(e){return e===null?`null`:Array.isArray(e)?`array`:typeof e}function ha(e){return w(B(e??process.cwd()),`stash.json`)}function ga(e){let t=ha(e);if(!M(t))return{};try{let e=P(t,`utf-8`);return JSON.parse(e)}catch(e){return e?.code===`ENOENT`||console.warn(`Corrupt state file ${t}: ${e instanceof Error?e.message:String(e)}`),{}}}function _a(e,t){let n=ha(t),r=y(n);M(r)||N(r,{recursive:!0});let i=`${n}.tmp`;R(i,`${JSON.stringify(e,null,2)}\n`,`utf-8`),I(i,n)}function va(e,t,n){let r=ga(n),i={key:e,value:t,type:typeof t,storedAt:new Date().toISOString()};return r[e]=i,_a(r,n),i}function ya(e,t){return ga(t)[e]}function ba(e){return Object.values(ga(e))}function xa(e,t){let n=ga(t);return e in n?(delete n[e],_a(n,t),!0):!1}function Sa(e){let t=ga(e),n=Object.keys(t).length;return _a({},e),n}const Ca=`session-digest`;function wa(e){return{scope:e.scope??`all`,since:e.since??``,last:e.last??50,focus:e.focus??``,mode:e.mode??`deterministic`,tokenBudget:e.tokenBudget??2e3,persist:e.persist??!0}}function Ta(e){return e.toLowerCase().split(/[^a-z0-9]+/).filter(e=>e.length>0)}function Ea(e,t=96){let n=(typeof e==`string`?e:JSON.stringify(e??``)).replace(/\s+/g,` `).trim();return n.length<=t?n||`n/a`:`${n.slice(0,t-1)}…`}function Da(e){return e.split(`T`)[1]?.split(`.`)[0]??e}function Oa(e,t){return`${e||`session start`} → ${t.toISOString()}`}function ka(e,t){let n=e.tool.toLowerCase(),r=e.input.toLowerCase(),i=e.output.toLowerCase();return t.reduce((e,t)=>{let a=e;return n.includes(t)&&(a+=3),r.includes(t)&&(a+=2),i.includes(t)&&(a+=1),a},0)}function Aa(e,t){let n=Ta(t);return n.length===0?[...e].sort((e,t)=>t.ts.localeCompare(e.ts)):[...e].sort((e,t)=>{let r=ka(e,n),i=ka(t,n);return r===i?t.ts.localeCompare(e.ts):i-r})}function ja(e,t){return[...t.since?e.filter(e=>e.ts>=t.since):[...e]].sort((e,t)=>e.ts.localeCompare(t.ts)).slice(-t.last)}function Ma(e,t){return{replayEntries:t.replayEntries===void 0?sa({last:e.last,since:e.since||void 0}):ja(t.replayEntries,e),stashEntries:t.stashEntries??ba(),checkpoints:t.checkpoints??ct(),now:t.now??new Date,persistEntry:t.persistEntry??va}}function Na(e,t,n){let r=Array.from(new Set(e.map(e=>e.tool))).sort((e,t)=>e.localeCompare(t));return{replayEntries:e.length,stashKeys:t.length,checkpoints:n.length,errors:e.filter(e=>e.status===`error`).length,toolsUsed:r}}function Pa(e){return e.errors>0?[`Review the failed tool calls before continuing the session.`,`Persist durable outcomes with remember() once the error path is resolved.`]:e.replayEntries===0&&e.stashKeys===0&&e.checkpoints===0?[`Session appears healthy with no recorded activity yet.`]:e.stashKeys>0||e.checkpoints>0?[`Session state is captured; consider converting durable findings into remember() entries.`]:[`Session appears healthy.`]}function Fa(e){return e.length===0?[`- No replay activity recorded.`]:e.map(e=>{let t=e.status===`ok`?`✓`:`✗`;return`- ${Da(e.ts)} ${t} **${e.tool}** (${e.durationMs}ms) — ${Ea(e.input,80)}`})}function Ia(e,t){return e.length===0?[`- No stash entries recorded.`]:e.map(e=>{let n=t?` — ${Ea(e.value,60)}`:``;return`- **${e.key}** (${e.type}) — stored ${e.storedAt}${n}`})}function La(e){return e.length===0?[`- No checkpoints recorded.`]:e.map(e=>`- **${e.label}** (${e.id}) — ${e.createdAt}`)}function Ra(e){let t=e.filter(e=>e.status===`error`);return t.length===0?[`- No errors recorded.`]:t.map(e=>`- ${Da(e.ts)} **${e.tool}** — ${Ea(e.output,100)}`)}function za(e){let t=[`## Session Digest`,``,`**Window:** ${Oa(e.options.since,e.now)}`,`**Tool Calls:** ${e.stats.replayEntries} (${e.stats.errors} errors)`,`**Tools Used:** ${e.stats.toolsUsed.length>0?e.stats.toolsUsed.join(`, `):`none`}`];return e.options.scope!==`stash`&&t.push(``,`### Activity Timeline`,...e.activityLines),e.options.scope!==`tools`&&t.push(``,`### Stash State`,...e.stashLines,``,`### Checkpoints`,...e.checkpointLines),t.push(``,`### Error Summary`,...e.errorLines,``,`### Recommendations`),t.push(...e.recommendationLines.map(e=>`- ${e}`)),`${t.join(`
103
+ `)}\n`}function Ba(e){let t=e.options.tokenBudget*4,n=[...e.activityLines],r=[...e.stashLinesWithPreview],i=[...e.checkpointLines],a=[...e.errorLines],o=[...e.recommendationLines],s=()=>za({options:e.options,stats:e.stats,now:e.now,activityLines:n,stashLines:r,checkpointLines:i,errorLines:a,recommendationLines:o}),c=s();for(;c.length>t&&n.length>1;)n.pop(),c=s();for(c.length>t&&(r=[...e.stashLinesWithoutPreview],c=s());c.length>t&&r.length>1;)r.pop(),c=s();for(;c.length>t&&i.length>1;)i.pop(),c=s();for(;c.length>t&&a.length>1;)a.pop(),c=s();for(;c.length>t&&o.length>1;)o.pop(),c=s();return c.length<=t?c:`${c.slice(0,Math.max(0,t-1)).trimEnd()}…`}function Va(e,t,n){if(!t.persist)return e;let r={...e,persistedKey:Ca};return n(Ca,r),r}function Ha(e,t={}){let{replayEntries:n,stashEntries:r,checkpoints:i,now:a,persistEntry:o}=Ma(e,t),s=Na(n,r,i);return Va({digest:Ba({options:e,stats:s,now:a,activityLines:Fa(Aa(n,e.focus)),stashLinesWithPreview:Ia(r,!0),stashLinesWithoutPreview:Ia(r,!1),checkpointLines:La(i),errorLines:Ra(n),recommendationLines:Pa(s)}),stats:s},e,o)}function Ua(e={},t={}){return Ha(wa(e),t)}async function Wa(e,t,n={}){let r=wa(e),{replayEntries:i,stashEntries:a,checkpoints:o,now:s,persistEntry:c}=Ma(r,n),l=Na(i,a,o),u=JSON.stringify({window:{since:r.since||`session start`,now:s.toISOString()},scope:r.scope,focus:r.focus||void 0,replayEntries:i,stashEntries:a,checkpoints:o,stats:l},null,2),d=`You are a session summarizer for an AI coding assistant's MCP tool server. Compress the following tool activity log, stash state, and checkpoint information into a focused narrative summary. Highlight key decisions, important results, and potential next steps. Stay within ${r.tokenBudget} tokens.`;try{return Va({digest:Ea(await t(u,d,r.tokenBudget),r.tokenBudget*4),stats:l},r,c)}catch{return Ha(r,{replayEntries:i,stashEntries:a,checkpoints:o,now:s,persistEntry:c})}}const Ga=()=>S(B(process.cwd()),`snippets`);function Ka(){let e=Ga();return M(e)||N(e,{recursive:!0}),e}function qa(e){let t=e.replace(/[^a-zA-Z0-9_-]/g,`_`);if(!t)throw Error(`Invalid snippet name`);return t}function Ja(e){switch(e.action){case`save`:{if(!e.name||!e.code)throw Error(`name and code required for save`);let t=S(Ka(),`${qa(e.name)}.json`),n=null;if(M(t))try{n=JSON.parse(P(t,`utf8`))}catch(e){e?.code!==`ENOENT`&&console.warn(`Corrupt state file ${t}: ${e instanceof Error?e.message:String(e)}`),n=null}let r=new Date().toISOString(),i={name:e.name,language:e.language??`text`,code:e.code,tags:e.tags??[],created:n?.created??r,updated:r},a=`${t}.tmp`;return R(a,JSON.stringify(i,null,2)),I(a,t),i}case`get`:{if(!e.name)throw Error(`name required for get`);let t=S(Ga(),`${qa(e.name)}.json`);if(!M(t))throw Error(`Snippet not found: ${e.name}`);try{return JSON.parse(P(t,`utf8`))}catch(n){throw n?.code!==`ENOENT`&&console.warn(`Corrupt state file ${t}: ${n instanceof Error?n.message:String(n)}`),Error(`Snippet corrupted: ${e.name}`)}}case`list`:{let e=Ka();return{snippets:F(e).filter(e=>e.endsWith(`.json`)).flatMap(t=>{let n=S(e,t);try{let e=JSON.parse(P(n,`utf8`));return[{name:e.name,language:e.language,tags:e.tags,updated:e.updated}]}catch(e){return e?.code!==`ENOENT`&&console.warn(`Corrupt state file ${n}: ${e instanceof Error?e.message:String(e)}`),[]}})}}case`search`:{if(!e.query)throw Error(`query required for search`);let t=e.query.toLowerCase(),n=Ka();return{snippets:F(n).filter(e=>e.endsWith(`.json`)).flatMap(e=>{let t=S(n,e);try{return[JSON.parse(P(t,`utf8`))]}catch(e){return e?.code!==`ENOENT`&&console.warn(`Corrupt state file ${t}: ${e instanceof Error?e.message:String(e)}`),[]}}).filter(e=>e.name.toLowerCase().includes(t)||e.tags.some(e=>e.toLowerCase().includes(t))||e.language.toLowerCase().includes(t)||e.code.toLowerCase().includes(t)).map(e=>({name:e.name,language:e.language,tags:e.tags,updated:e.updated}))}}case`delete`:{if(!e.name)throw Error(`name required for delete`);let t=S(Ga(),`${qa(e.name)}.json`);return M(t)?(re(t),{deleted:!0}):{deleted:!1}}default:throw Error(`Unknown action: ${e.action}`)}}async function Ya(e,t){let{files:n,query:r,tier:i=`T1`,maxContentChars:a=800}=t,{cache:o}=t,s=i===`T2`?await e.embedQuery(r):null,c=await Promise.all(n.map(async t=>{try{let n=o?(await o.get(t)).content:await p(t,`utf-8`),r=U(n);if(n.includes(`\0`))return Xa(t,i,`binary`,`binary file`,r);if(n.trim().length===0){let e=Za({displayPath:Qa(t),tier:i,role:`empty`,deps:[],exports:[],unknowns:[],riskTier:`low`});return{path:t,tier:i,card:e,unknowns:[],riskTier:`low`,tokenEstimate:U(e),originalTokenEstimate:r}}let c=await Wn({path:t,content:n}),l=eo(t,c),u=to(n,c),d=io(t,c),f=ao(c),m=[...new Set(c.exports)].slice(0,5),h=Za({displayPath:Qa(t),tier:i,role:l,deps:f,exports:m,unknowns:u,riskTier:d});if(i===`T2`&&s){let t=await so(e,s,n,a);t.length>0&&(h=`${h}\nCONTEXT:\n${t}`)}return{path:t,tier:i,card:h,unknowns:u,riskTier:d,tokenEstimate:U(h),originalTokenEstimate:r}}catch(e){let n=e.code===`ENOENT`?`file missing`:`unreadable file`;return Xa(t,i,e.code===`ENOENT`?`missing`:`unreadable`,n,0)}})),l=c.reduce((e,t)=>e+t.tokenEstimate,0),u=c.reduce((e,t)=>e+t.originalTokenEstimate,0);return{cards:c,totalTokenEstimate:l,totalOriginalTokenEstimate:u,compressionRatio:u===0?0:l/u}}function Xa(e,t,n,r,i){let a=Za({displayPath:Qa(e),tier:t,role:n,deps:[],exports:[],unknowns:[r],riskTier:`low`});return{path:e,tier:t,card:a,unknowns:[r],riskTier:`low`,tokenEstimate:U(a),originalTokenEstimate:i}}function Za(e){let{displayPath:t,tier:n,role:r,deps:i,exports:a,unknowns:o,riskTier:s}=e;return[`[${n}: ${t}]`,`ROLE: ${r}`,`DEPS: ${$a(i)}`,`EXPORTS: ${$a(a)}`,`UNKNOWNS: ${$a(o,`; `)}`,`RISK: ${s}`].join(`
104
+ `)}function Qa(e){let t=C(process.cwd(),e).replace(/\\/g,`/`);return!t||t.startsWith(`..`)?v(e):t}function $a(e,t=`, `){return e.length>0?e.join(t):`none`}function eo(e,t){let n=v(e),r=b(n).toLowerCase();return[`.json`,`.yaml`,`.yml`,`.env`].includes(r)||/config|settings/i.test(n)?`configuration`:/types?\.ts$|\.d\.ts$/i.test(n)?`type-definitions`:/schema/i.test(n)?`schema`:/test|spec/i.test(n)?`test`:/index\.[jt]sx?$/i.test(n)?`barrel-export`:/handler|controller|route/i.test(n)?`entry-point`:/model|entity/i.test(n)?`data-model`:/util|helper/i.test(n)?`utility`:/service|provider/i.test(n)?`service`:t.classes.length>0?`class-module`:t.interfaces.length>2?`type-definitions`:`implementation`}function to(e,t){let n=[],r=new Set;for(let t of e.matchAll(/\/\/\s*(TODO|FIXME|HACK|XXX)\s*:?\s*(.+)?$/gm))no(n,r,`${t[1]}: ${(t[2]??``).trim()}`.trim().replace(/:\s*$/,``));ro(e)&&no(n,r,`exported any usage`);for(let e of ao(t))no(n,r,`cross-package import: ${e}`);return n.slice(0,3)}function no(e,t,n){e.length>=3||!n||t.has(n)||(t.add(n),e.push(n))}function ro(e){return[/export\s+(?:async\s+)?function\s+\w+[^\n{;]*\bany\b/g,/export\s+interface\s+\w+[\s\S]*?\{[\s\S]*?\bany\b[\s\S]*?\}/g,/export\s+type\s+\w+\s*=.*\bany\b/g,/export\s+const\s+\w+[^\n=]*\bany\b/g].some(t=>t.test(e))}function io(e,t){return/auth|token|permission|secret|credential|encrypt/i.test(e)?`high`:/types?\.ts$|schema|contract|\.d\.ts$/i.test(v(e))||t.exports.length>10?`medium`:`low`}function ao(e){return e.imports.map(oo).filter(e=>!!e).filter(e=>!e.startsWith(`./`)&&!e.startsWith(`../`)).slice(0,3)}function oo(e){let t=e.match(/from\s+['"]([^'"]+)['"]/);if(t)return t[1];let n=e.match(/^import\s+['"]([^'"]+)['"]/);return n?n[1]:null}async function so(e,t,n,r){if(r<=0)return``;let i=qe(n,`paragraph`);if(i.length===0)return``;let a=await Promise.all(i.map(async(n,r)=>({index:r,text:n,score:Je(t,await e.embed(n))}))),o=[],s=0;for(let e of a.sort((e,t)=>t.score-e.score)){let t=r-s;if(t<=0)break;if(e.text.length<=t){o.push({index:e.index,text:e.text}),s+=e.text.length;continue}o.length===0&&(o.push({index:e.index,text:e.text.slice(0,t).trimEnd()}),s=r);break}return o.sort((e,t)=>e.index-t.index).map(e=>e.text).filter(e=>e.length>0).join(`
105
+
106
+ `)}async function co(e,t,n){let{name:r,limit:i=20,graphStore:a}=n,o=e.embedQuery?.bind(e)??e.embed.bind(e),s=[`export function ${r}`,`export class ${r}`,`export const ${r}`,`export interface ${r}`,`export type ${r}`,`export enum ${r}`].join(` | `),c=await t.search(await o(s),{limit:i*2}),l=RegExp(`^export\\s+(?:default\\s+)?(?:async\\s+)?(?:function|class|const|let|interface|type|enum)\\s+${H(r)}\\b`,`m`),u;for(let e of c){if(!l.test(e.record.content))continue;let t=e.record.content.match(/export\s+(?:default\s+)?(?:async\s+)?(\w+)/)?.[1]??`unknown`;u={path:e.record.sourcePath,line:e.record.startLine,kind:t};let n=b(e.record.sourcePath);if(D.get()&&E.has(n))try{let t=(await k(e.record.content,n,e.record.sourcePath)).find(e=>e.name===r&&e.exported);t&&(u.kind=t.kind,t.signature&&(u.signature=t.signature))}catch{}break}let d=RegExp(`import\\s+.*\\b${H(r)}\\b.*from\\s+`,`m`),f=await t.search(await o(`import ${r} from`),{limit:i*3}),p=[],m=new Set;for(let e of f){let t=e.record.content.split(`
107
+ `);for(let n=0;n<t.length;n++){let r=t[n];if(!d.test(r))continue;let i=`${e.record.sourcePath}:${r.trim()}`;m.has(i)||(m.add(i),p.push({path:e.record.sourcePath,line:e.record.startLine+n,importStatement:r.trim()}))}}let h=RegExp(`\\b${H(r)}\\b`),g=await t.search(await o(r),{limit:i*3}),_=[],v=new Set;for(let e of g){if(_.length>=i)break;if(u&&e.record.sourcePath===u.path)continue;let t=e.record.content.split(`
108
+ `);for(let n=0;n<t.length;n++){let r=t[n];if(!h.test(r)||d.test(r))continue;let i=`${e.record.sourcePath}:${e.record.startLine+n}`;if(v.has(i))continue;v.add(i);let a,o=b(e.record.sourcePath);if(D.get()&&E.has(o))try{let t=await A(e.record.content,o,n+1);t.length>0&&(a=t[0].name)}catch{}_.push({path:e.record.sourcePath,line:e.record.startLine+n,context:r.trim().slice(0,120),scope:a});break}}let y;if(a)try{let e={importedByModules:[],siblingSymbols:[]},t=await a.findNodes({namePattern:r});if(t.length>0){let n=t[0];if(n.sourcePath?e.definingModule=n.sourcePath:u&&(e.definingModule=u.path),n.sourcePath){let t=(await a.findNodes({sourcePath:n.sourcePath,type:`module`}))[0];if(t){let n=await a.getNeighbors(t.id,{direction:`incoming`,edgeType:`imports`});for(let t of n.nodes)e.importedByModules.push(t.sourcePath??t.name)}}if(e.definingModule){let t=await a.findNodes({sourcePath:e.definingModule});for(let n of t)n.name!==r&&n.type!==`module`&&e.siblingSymbols.push(`${n.type}:${n.name}`);e.siblingSymbols=e.siblingSymbols.slice(0,15)}}(e.definingModule||e.importedByModules.length>0||e.siblingSymbols.length>0)&&(y=e)}catch{}return{name:r,definedIn:u,importedBy:p.slice(0,i),referencedIn:_.slice(0,i),graphContext:y}}const lo=T(c);let uo=0;async function fo(e={}){if(uo>=2)throw Error(`Too many concurrent test runs (max 2). Try again later.`);uo++;try{return await po(e)}finally{uo--}}async function po(e){let t=e.cwd??process.cwd(),n=e.timeout??6e4,r=Date.now(),i=[`vitest`,`run`,`--reporter=verbose`,`--no-color`];e.files?.length&&i.push(...e.files),e.grep&&i.push(`--testNamePattern`,e.grep);try{let{stdout:a}=await lo(`npx ${i.join(` `)}`,{cwd:t,timeout:n}),o=a.toString(),s=xe(o);return{summary:s,passed:s.failed===0,...e.includeRaw&&{raw:o},durationMs:Date.now()-r}}catch(t){let n=mo(t);return{summary:xe(n),passed:!1,...e.includeRaw&&{raw:n},durationMs:Date.now()-r}}}function mo(e){let t=e;return[t.stdout?.toString()??``,t.stderr?.toString()??``].filter(Boolean).join(`
109
+ `).trim()||t.message||`Test run failed`}function ho(e,t,n){if(e===0)return{isError:!1};if(e===1&&n){if(/\b(grep|rg|ripgrep|ag|ack|findstr)\b/i.test(n))return{isError:!1,reason:`grep: no matches (exit 1 is normal)`};if(/\bdiff\b/i.test(n))return{isError:!1,reason:`diff: files differ (exit 1 is normal)`}}return{isError:!0}}function go(e){let{operation:t,input:n,timezone:r}=e;switch(t){case`now`:return vo(new Date,r);case`parse`:if(!n)throw Error(`input required for parse`);return vo(_o(n),r);case`convert`:if(!n)throw Error(`input required for convert`);if(!r)throw Error(`timezone required for convert`);return vo(_o(n),r);case`diff`:{if(!n)throw Error(`input required for diff (two comma-separated dates)`);let e=n.split(`,`).map(e=>e.trim());if(e.length<2)throw Error(`diff requires two comma-separated dates`);let t=_o(e[0]),r=_o(e[1]),i=Math.abs(r.getTime()-t.getTime());return{output:yo(i),iso:`PT${Math.floor(i/1e3)}S`,unix:i,details:{milliseconds:i,seconds:Math.floor(i/1e3),minutes:Math.floor(i/6e4),hours:Math.floor(i/36e5),days:Math.floor(i/864e5)}}}case`add`:{if(!n)throw Error(`input required for add`);let{duration:t}=e;if(!t)throw Error(`duration required for add (e.g., "2h30m")`);let i=_o(n),a=bo(t);return vo(new Date(i.getTime()+a),r)}default:throw Error(`Unknown operation: ${t}`)}}function _o(e){let t=Number(e);if(!Number.isNaN(t))return new Date(t>0xe8d4a51000?t:t*1e3);let n=new Date(e);if(Number.isNaN(n.getTime()))throw Error(`Cannot parse date: ${e}`);return n}function vo(e,t){let n=t??`UTC`,r=e.toLocaleString(`en-US`,{timeZone:n,dateStyle:`full`,timeStyle:`long`}),i=new Intl.DateTimeFormat(`en-US`,{timeZone:n,year:`numeric`,month:`numeric`,day:`numeric`,hour:`numeric`,minute:`numeric`,second:`numeric`,hour12:!1}).formatToParts(e).reduce((e,t)=>(t.type!==`literal`&&(e[t.type]=Number.parseInt(t.value,10)),e),{});return{output:r,iso:e.toISOString(),unix:Math.floor(e.getTime()/1e3),details:{timezone:n,year:i.year,month:i.month,day:i.day,hour:i.hour===24?0:i.hour,minute:i.minute,second:i.second}}}function yo(e){let t=[],n=Math.floor(e/864e5);n&&t.push(`${n}d`);let r=Math.floor(e%864e5/36e5);r&&t.push(`${r}h`);let i=Math.floor(e%36e5/6e4);i&&t.push(`${i}m`);let a=Math.floor(e%6e4/1e3);return(a||t.length===0)&&t.push(`${a}s`),t.join(` `)}function bo(e){let t=0,n=e.matchAll(/(\d+)\s*(d|h|m|s|ms)/gi);for(let e of n){let n=Number(e[1]);switch(e[2].toLowerCase()){case`d`:t+=n*864e5;break;case`h`:t+=n*36e5;break;case`m`:t+=n*6e4;break;case`s`:t+=n*1e3;break;case`ms`:t+=n;break}}if(t===0)throw Error(`Cannot parse duration: ${e}`);return t}async function xo(e,t,n){let{start:r,direction:i,maxDepth:a=3,graphStore:o}=n,s=[],c=new Set,l=new Set,u=!!D.get(),d=new Map,f=await e.embed(r);if((await t.search(f,{limit:10})).length===0)return{start:r,direction:i,nodes:s,depth:0};let p=[{target:r,depth:0}],m=0;for(;p.length>0;){let n=p.shift();if(!n)break;if(n.depth>=a||c.has(n.target))continue;c.add(n.target);let r=await e.embed(n.target),o=await t.search(r,{limit:20}),f=H(n.target),h=wo(n.target);for(let e of o){let t=e.record.sourcePath,r=e.record.content.split(`
110
+ `);if(u&&!h){let e=await Co(d,t);for(let r of e)i!==`backward`&&r.callerName===n.target&&(Q(l,s,{path:t,symbol:r.calleeName,line:r.line,relationship:`calls`,scope:r.callerName}),m=Math.max(m,n.depth+1),p.push({target:r.calleeName,depth:n.depth+1})),i!==`forward`&&r.calleeName===n.target&&(Q(l,s,{path:t,symbol:r.callerName,line:r.line,relationship:`called-by`,scope:r.callerName}),m=Math.max(m,n.depth+1),p.push({target:r.callerName,depth:n.depth+1}))}for(let a=0;a<r.length;a+=1){let o=r[a],c=e.record.startLine+a;if(i!==`forward`&&RegExp(h?`from\\s+['"]${f}['"]`:`import\\s+.*\\b${f}\\b.*from\\s+`).test(o)){Q(l,s,{path:t,symbol:n.target,line:c,relationship:`imported-by`}),m=Math.max(m,n.depth+1);let e=o.match(/from\s+['"]([^'"]+)['"]/);!h&&e&&p.push({target:e[1],depth:n.depth+1})}i!==`backward`&&(h?RegExp(`from\\s+['"]${f}['"]`).test(o)&&(Q(l,s,{path:t,symbol:n.target,line:c,relationship:`imports`}),m=Math.max(m,n.depth+1)):u||RegExp(`\\b${f}\\s*\\(`).test(o)&&!/^\s*(?:export\s+)?(?:async\s+)?function\s/.test(o)&&(Q(l,s,{path:t,symbol:n.target,line:c,relationship:`calls`}),m=Math.max(m,n.depth+1))),RegExp(h?`['"]${f}['"]`:`\\b${f}\\b`).test(o)&&!/^\s*import\s/.test(o)&&!/^\s*(?:export\s+)?(?:async\s+)?function\s/.test(o)&&(Q(l,s,{path:t,symbol:n.target,line:c,relationship:`references`}),m=Math.max(m,n.depth+1))}}}let h=o?await So(r,o):void 0;return{start:r,direction:i,nodes:To(s),depth:m,graphContext:h}}async function So(e,t){try{let n=await t.findNodes({namePattern:e,limit:10}),r=n.find(t=>t.name===e&&t.type!==`module`)??n.find(t=>t.name===e)??n[0];if(!r)return;let i={definingModule:r.sourcePath,community:r.community,importedByModules:[],siblingSymbols:[]};try{let e=await t.getSymbol360(r.id);i.community=e.community??i.community,i.definingModule=e.node.sourcePath??i.definingModule}catch{}if(r.sourcePath){let[e]=await t.findNodes({sourcePath:r.sourcePath,type:`module`});e&&(i.importedByModules=Eo((await t.getNeighbors(e.id,{direction:`incoming`,edgeType:`imports`})).nodes.map(e=>e.sourcePath??e.name)))}return i.definingModule&&(i.siblingSymbols=Eo((await t.findNodes({sourcePath:i.definingModule,limit:50})).filter(e=>e.name!==r.name&&e.type!==`module`).map(e=>`${e.type}:${e.name}`)).slice(0,15)),i.definingModule||i.community||i.importedByModules.length>0||i.siblingSymbols.length>0?i:void 0}catch{return}}async function Co(e,t){let n=e.get(t);if(n)return n;let r=b(t);if(!E.has(r))return e.set(t,[]),[];try{let n=await ee(await p(t,`utf-8`),r,t);return e.set(t,n),n}catch{return e.set(t,[]),[]}}function Q(e,t,n){let r=`${n.path}:${n.line}:${n.relationship}`;e.has(r)||(e.add(r),t.push(n))}function wo(e){return/[./\\]/.test(e)}function To(e){let t=new Set;return e.filter(e=>{let n=`${e.path}:${e.line}:${e.relationship}`;return t.has(n)?!1:(t.add(n),!0)})}function Eo(e){return[...new Set(e.filter(e=>e.length>0))]}const $=new Map,Do=[`node_modules`,`.git`,`dist`,`.turbo`,z.data,`cdk.out`];function Oo(e){if($.size>=20)throw Error(`Watcher limit reached (20). Stop existing watchers first.`);let{path:t,maxEvents:n=100}=e,r=e.exclude??Do,i=`watch-${Date.now()}`,a=[],o=e=>r.some(t=>jo(e).includes(jo(t))),s=ie(t,{recursive:!0},(e,t)=>{if(t==null)return;let r=String(t);!r||o(r)||(a.push({type:e,path:jo(r),timestamp:new Date().toISOString()}),a.length>n&&a.shift())});s.on(`error`,()=>{c.status=`stopped`,$.delete(i);try{s.close()}catch{}});let c={id:i,path:t,events:a,status:`watching`,stop:()=>{s.close(),c.status=`stopped`,$.delete(i)},getEvents:e=>e?a.filter(t=>t.timestamp>e):a};return $.set(i,{watcher:s,handle:c}),c}function ko(e){let t=$.get(e);return t?(t.handle.stop(),!0):!1}function Ao(){return[...$.values()].map(e=>({id:e.handle.id,path:e.handle.path,status:e.handle.status,eventCount:e.handle.events.length}))}function jo(e){return e.replace(/\\/g,`/`)}const Mo=`script,style,noscript,iframe,svg,nav,footer,header,aside,form,button,input,select,textarea,[role="navigation"],[role="banner"],[role="contentinfo"],[aria-hidden="true"],.sidebar,.nav,.menu,.footer,.header,.ad,.advertisement,.cookie-banner,.popup,.modal`.split(`,`),No=[`article`,`[role="main"]`,`main`,`.post-content`,`.article-content`,`.entry-content`,`.content`,`#content`,`.prose`,`.markdown-body`,`.documentation`,`.doc-content`];async function Po(e){let{url:t,mode:n=`markdown`,selector:r,maxLength:i=15e3,includeMetadata:a=!0,includeLinks:o=!1,includeImages:s=!1,timeout:c=6e4}=e,l=new URL(t);if(l.protocol!==`http:`&&l.protocol!==`https:`)throw Error(`Unsupported protocol: ${l.protocol} — only http/https allowed`);let u=new AbortController,d=setTimeout(()=>u.abort(),c),f,p,m=``,h=!1,g=``;try{if(f=await fetch(t,{signal:u.signal,headers:{"User-Agent":`aikit-web-fetch/1.0 (LLM context tool)`,Accept:`text/html,application/xhtml+xml,text/plain`},redirect:`follow`}),!f.ok)throw Error(`HTTP ${f.status}: ${f.statusText}`);p=await f.text(),m=f.headers.get(`content-type`)??``,h=/text\/html|application\/xhtml\+xml/i.test(m),g=f.url}catch(e){throw e instanceof DOMException&&e.name===`AbortError`?Error(`Request to ${t} timed out after ${c}ms. Try increasing the timeout parameter.`):e}finally{clearTimeout(d)}if(!h){let e=p,t=g.split(`/`).pop()??``;a&&(e=Ro(t,``,g)+e);let n=e.length,r=n>i;return r&&(e=Bo(e,i)),{content:e,title:t,description:``,url:g,originalLength:n,truncated:r}}let{parseHTML:_}=await import(`linkedom`),{document:v}=_(p),y=v.querySelector(`title`)?.textContent?.trim()??v.querySelector(`meta[property="og:title"]`)?.getAttribute(`content`)?.trim()??``,b=v.querySelector(`meta[name="description"]`)?.getAttribute(`content`)?.trim()??v.querySelector(`meta[property="og:description"]`)?.getAttribute(`content`)?.trim()??``;for(let e of Mo)for(let t of v.querySelectorAll(e))t.remove();if(!s)for(let e of v.querySelectorAll(`img`))e.remove();let x=null;if(r){if(x=v.querySelector(r),!x)throw Error(`Selector "${r}" matched no elements on the page`)}else{for(let e of No)if(x=v.querySelector(e),x)break;x||=v.querySelector(`body`)}if(!x)return{content:`(empty page — no content found)`,title:y,description:b,url:g,originalLength:0,truncated:!1};let S=x.innerHTML,C=[];if(o||n===`links`)for(let e of x.querySelectorAll(`a[href]`)){let t=e.textContent?.trim(),n=e.getAttribute(`href`);t&&n&&!n.startsWith(`#`)&&!n.startsWith(`javascript:`)&&C.push({text:t,href:zo(n,g)})}let w;switch(n){case`raw`:w=S;break;case`links`:w=Lo(C);break;case`outline`:w=Io(x);break;default:w=Fo(S,s);break}a&&n!==`links`&&(w=Ro(y,b,g)+w),o&&n!==`links`&&C.length>0&&(w+=`\n\n---\n\n## Links\n\n${Lo(C)}`);let T=w.length,E=T>i;return E&&(w=Bo(w,i)),{content:w,title:y,description:b,url:g,originalLength:T,truncated:E}}function Fo(e,t){let n=new ve({headingStyle:`atx`,codeBlockStyle:`fenced`,bulletListMarker:`-`});n.addRule(`emptyLinks`,{filter:e=>e.nodeName===`A`&&!e.textContent?.trim(),replacement:()=>``}),t||n.addRule(`removeImages`,{filter:`img`,replacement:()=>``});let r=n.turndown(e);return r=r.replace(/\n{3,}/g,`
111
+
112
+ `).trim(),r}function Io(e){let t=e.querySelectorAll(`h1, h2, h3, h4, h5, h6`),n=[];for(let e of t){let t=Number.parseInt(e.tagName.slice(1),10),r=` `.repeat(t-1),i=e.textContent?.trim()??``;i&&n.push(`${r}- ${i}`)}return n.length>0?n.join(`
113
+ `):`(no headings found)`}function Lo(e){if(e.length===0)return`(no links found)`;let t=new Set,n=[];for(let r of e)t.has(r.href)||(t.add(r.href),n.push(r));return n.map(e=>`- [${e.text}](${e.href})`).join(`
114
+ `)}function Ro(e,t,n){let r=[`---`];return e&&r.push(`**${e}**`),r.push(`URL: ${n}`),t&&r.push(`> ${t}`),r.push(`---
115
+
116
+ `),r.join(`
117
+ `)}function zo(e,t){try{return new URL(e,t).href}catch{return e}}const Bo=qr;async function Vo(e){let{query:t,limit:n=5,site:r}=e;if(!t.trim())throw Error(`Search query cannot be empty`);let i=r?`${t} site:${r}`:t,a=new AbortController,o=setTimeout(()=>a.abort(),15e3),s;try{s=await fetch(`https://html.duckduckgo.com/html/`,{method:`POST`,headers:{"Content-Type":`application/x-www-form-urlencoded`,"User-Agent":`aikit-web-search/1.0 (LLM developer tool)`},body:`q=${encodeURIComponent(i)}`,signal:a.signal})}finally{clearTimeout(o)}if(!s.ok)throw Error(`Search failed: HTTP ${s.status}`);return Ho(await s.text(),i,n)}function Ho(e,t,n){let r=[],i=/<a[^>]+class="result__a"[^>]*href="([^"]*)"[^>]*>([\s\S]*?)<\/a>[\s\S]*?<a[^>]+class="result__snippet"[^>]*>([\s\S]*?)<\/a>/gi,a=i.exec(e);for(;a!==null&&r.length<n;){let t=a[1],n=Uo(a[2]).trim(),o=Uo(a[3]).trim();if(t.includes(`uddg=`)){let e=t.match(/uddg=([^&]+)/)?.[1];e&&(t=decodeURIComponent(e))}n&&t?.startsWith(`http`)&&r.push({title:n,url:t,snippet:o}),a=i.exec(e)}return{results:r,query:t}}function Uo(e){return e.replace(/<[^>]+>/g,``).replace(/&amp;/g,`&`).replace(/&lt;/g,`<`).replace(/&gt;/g,`>`).replace(/&quot;/g,`"`).replace(/&#x27;/g,`'`)}function Wo(e){return w(B(e??process.cwd()),`worksets.json`)}function Go(e){let t=Wo(e);if(!M(t))return{worksets:{}};try{let e=P(t,`utf-8`);return JSON.parse(e)}catch(e){return e?.code===`ENOENT`||console.warn(`Corrupt state file ${t}: ${e instanceof Error?e.message:String(e)}`),{worksets:{}}}}function Ko(e,t){let n=Wo(t),r=y(n);M(r)||N(r,{recursive:!0});let i=`${n}.tmp`;R(i,`${JSON.stringify(e,null,2)}\n`,`utf-8`),I(i,n)}function qo(e,t,n){let r=Go(n?.cwd),i=new Date().toISOString(),a=r.worksets[e],o={name:e,files:t,created:a?.created??i,updated:i,description:n?.description??a?.description};return r.worksets[e]=o,Ko(r,n?.cwd),o}function Jo(e,t){return Go(t).worksets[e]??null}function Yo(e){let t=Go(e);return Object.values(t.worksets).sort((e,t)=>new Date(t.updated).getTime()-new Date(e.updated).getTime())}function Xo(e,t){let n=Go(t);return n.worksets[e]?(delete n.worksets[e],Ko(n,t),!0):!1}function Zo(e,t,n){let r=Go(n).worksets[e]?.files??[];return qo(e,[...new Set([...r,...t])],{cwd:n})}function Qo(e,t,n){let r=Go(n).worksets[e];if(!r)return null;let i=new Set(t);return qo(e,r.files.filter(e=>!i.has(e)),{cwd:n})}export{Hn as FileCache,Zo as addToWorkset,fi as analyzeFile,$e as audit,Vn as autoClaimTestFailures,tt as batch,Ye as bookendReorder,Ot as bpeSurprise,rt as changelog,Ae as check,lt as checkpointLatest,ct as checkpointList,st as checkpointLoad,ot as checkpointSave,ho as classifyExitCode,Ct as codemod,Mt as compact,Rt as compressOutput,zt as compressTerminalOutput,Je as cosineSimilarity,yt as createRestorePoint,Bt as dataTransform,qt as delegate,Kt as delegateListModels,Xo as deleteWorkset,Lt as detectOutputTool,Xt as diffParse,_n as digest,yn as dogfoodLog,bn as encode,Sn as envInfo,Ze as errorResponse,H as escapeRegExp,U as estimateTokens,Cn as evaluate,Bn as evidenceMap,Wn as fileSummary,Jn as find,Pe as findDeadSymbols,Qn as findExamples,ur as forgeClassify,Tr as forgeGround,it as formatChangelog,It as getRegisteredRules,Jo as getWorkset,Br as gitContext,Ur as graphAugmentSearch,Hr as graphQuery,Gr as guide,Kr as headTailTruncate,Le as health,Xr as httpRequest,ti as laneCreate,ii as laneDiff,oi as laneDiscard,ni as laneList,ai as laneMerge,ri as laneStatus,bt as listRestorePoints,Yo as listWorksets,di as measure,Xe as okResponse,Fi as onboard,qr as paragraphTruncate,Se as parseBiome,Ce as parseGitStatus,Te as parseOutput,Ho as parseSearchResults,ye as parseTsc,xe as parseVitest,zi as processList,Bi as processLogs,Ii as processStart,Ri as processStatus,Li as processStop,Xi as queueClear,Ui as queueCreate,Zi as queueDelete,Ki as queueDone,qi as queueFail,Ji as queueGet,Yi as queueList,Gi as queueNext,Wi as queuePush,Qi as regexTest,Pt as registerRule,Ft as registerRules,Qo as removeFromWorkset,ta as rename,oa as replayAppend,ua as replayCapture,la as replayClear,sa as replayList,ca as replayTrim,Ke as resolvePath,xt as restoreFromPoint,qo as saveWorkset,da as schemaValidate,Cr as scopeMap,jt as scoreLine,kt as scoreLines,qe as segment,Ua as sessionDigest,Wa as sessionDigestSampling,At as shannonEntropy,Ja as snippet,Sa as stashClear,xa as stashDelete,ya as stashGet,ba as stashList,va as stashSet,Ya as stratumCard,Me as summarizeCheckResult,co as symbol,fo as testRun,go as timeUtils,xo as trace,Jr as truncateToTokenBudget,Ao as watchList,Oo as watchStart,ko as watchStop,Po as webFetch,Vo as webSearch};
@@ -1,2 +1,2 @@
1
1
  import { createRequire as __createRequire } from 'node:module'; const require = __createRequire(import.meta.url);
2
- import{r as e}from"./chunk-DqSKhezp.js";import{t}from"./react-CKRDn6y3.js";import{a as n,i as r,n as i,t as a}from"./jsx-runtime-CI8Ofr1S.js";import{t as o}from"./useKBClient-BACLDL_U.js";import{t as s}from"./StatusPanel-yRieSRc3.js";import{t as c}from"./SearchPanel-CDSGcT7M.js";import{t as l}from"./CuratedPanel-DGFKz-fJ.js";import{t as u}from"./LogPanel-CDItCD0E.js";var d=e(t()),f=a();const p=[`status`,`search`,`curated`,`log`];function m({client:e}){let[t,a]=(0,d.useState)(`status`);return i((e,n)=>{n.tab&&a(p[(p.indexOf(t)+1)%p.length]),e===`1`&&a(`status`),e===`2`&&a(`search`),e===`3`&&a(`curated`),e===`4`&&a(`log`)}),(0,f.jsx)(o,{value:e,children:(0,f.jsxs)(n,{flexDirection:`column`,width:`100%`,children:[(0,f.jsxs)(n,{borderStyle:`single`,paddingX:1,children:[(0,f.jsx)(r,{bold:!0,color:`cyan`,children:`AI Kit Dashboard`}),(0,f.jsx)(r,{children:` │ `}),p.map(e=>(0,f.jsxs)(d.Fragment,{children:[(0,f.jsxs)(r,{color:e===t?`green`:`gray`,bold:e===t,children:[`[`,p.indexOf(e)+1,`] `,e]}),(0,f.jsx)(r,{children:` `})]},e)),(0,f.jsx)(r,{color:`gray`,children:` │ Tab: switch │ Ctrl+C: quit`})]}),(0,f.jsxs)(n,{flexGrow:1,minHeight:10,children:[t===`status`&&(0,f.jsx)(s,{}),t===`search`&&(0,f.jsx)(c,{}),t===`curated`&&(0,f.jsx)(l,{}),t===`log`&&(0,f.jsx)(u,{})]})]})})}export{m as t};
2
+ import{r as e}from"./chunk-DqSKhezp.js";import{t}from"./react-CKRDn6y3.js";import{a as n,i as r,n as i,t as a}from"./jsx-runtime-CI8Ofr1S.js";import{t as o}from"./useKBClient-BACLDL_U.js";import{t as s}from"./StatusPanel-yRieSRc3.js";import{t as c}from"./SearchPanel-CDSGcT7M.js";import{t as l}from"./CuratedPanel-DGFKz-fJ.js";import{t as u}from"./LogPanel-DGeptKim.js";var d=e(t()),f=a();const p=[`status`,`search`,`curated`,`log`];function m({client:e}){let[t,a]=(0,d.useState)(`status`);return i((e,n)=>{n.tab&&a(p[(p.indexOf(t)+1)%p.length]),e===`1`&&a(`status`),e===`2`&&a(`search`),e===`3`&&a(`curated`),e===`4`&&a(`log`)}),(0,f.jsx)(o,{value:e,children:(0,f.jsxs)(n,{flexDirection:`column`,width:`100%`,children:[(0,f.jsxs)(n,{borderStyle:`single`,paddingX:1,children:[(0,f.jsx)(r,{bold:!0,color:`cyan`,children:`AI Kit Dashboard`}),(0,f.jsx)(r,{children:` │ `}),p.map(e=>(0,f.jsxs)(d.Fragment,{children:[(0,f.jsxs)(r,{color:e===t?`green`:`gray`,bold:e===t,children:[`[`,p.indexOf(e)+1,`] `,e]}),(0,f.jsx)(r,{children:` `})]},e)),(0,f.jsx)(r,{color:`gray`,children:` │ Tab: switch │ Ctrl+C: quit`})]}),(0,f.jsxs)(n,{flexGrow:1,minHeight:10,children:[t===`status`&&(0,f.jsx)(s,{}),t===`search`&&(0,f.jsx)(c,{}),t===`curated`&&(0,f.jsx)(l,{}),t===`log`&&(0,f.jsx)(u,{})]})]})})}export{m as t};
@@ -1,5 +1,5 @@
1
1
  import { createRequire as __createRequire } from 'node:module'; const require = __createRequire(import.meta.url);
2
- import { t as IKBClient } from "./index-MXJeXmCf.js";
2
+ import { t as IKBClient } from "./index-floZQwfo.js";
3
3
  import React from "react";
4
4
 
5
5
  //#region packages/tui/src/App.d.ts
@@ -1,2 +1,2 @@
1
1
  import { createRequire as __createRequire } from 'node:module'; const require = __createRequire(import.meta.url);
2
- import{t as e}from"./App-CoMyn2kt.js";export{e as App};
2
+ import{t as e}from"./App-DobfqTPH.js";export{e as App};