whale-code 6.5.4 → 6.5.6

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 (853) hide show
  1. package/README.md +39 -31
  2. package/bin/{swagmanager-mcp.js → whale-code.js} +17 -2
  3. package/dist/cli/app.js +148 -72
  4. package/dist/cli/app.js.map +1 -0
  5. package/dist/cli/chat/AgentSelector.js +105 -10
  6. package/dist/cli/chat/AgentSelector.js.map +1 -0
  7. package/dist/cli/chat/ChatApp.d.ts +31 -0
  8. package/dist/cli/chat/ChatApp.js +539 -286
  9. package/dist/cli/chat/ChatApp.js.map +1 -0
  10. package/dist/cli/chat/ChatInput.js +1088 -770
  11. package/dist/cli/chat/ChatInput.js.map +1 -0
  12. package/dist/cli/chat/MarkdownText.js +39 -14
  13. package/dist/cli/chat/MarkdownText.js.map +1 -0
  14. package/dist/cli/chat/MemoryManager.js +181 -46
  15. package/dist/cli/chat/MemoryManager.js.map +1 -0
  16. package/dist/cli/chat/MessageList.d.ts +2 -3
  17. package/dist/cli/chat/MessageList.js +186 -45
  18. package/dist/cli/chat/MessageList.js.map +1 -0
  19. package/dist/cli/chat/ModelSelector.js +282 -63
  20. package/dist/cli/chat/ModelSelector.js.map +1 -0
  21. package/dist/cli/chat/NodeManager.js +165 -75
  22. package/dist/cli/chat/NodeManager.js.map +1 -0
  23. package/dist/cli/chat/NodeSelector.js +171 -30
  24. package/dist/cli/chat/NodeSelector.js.map +1 -0
  25. package/dist/cli/chat/PlanApproval.js +281 -57
  26. package/dist/cli/chat/PlanApproval.js.map +1 -0
  27. package/dist/cli/chat/RewindViewer.js +559 -144
  28. package/dist/cli/chat/RewindViewer.js.map +1 -0
  29. package/dist/cli/chat/SessionManager.js +137 -30
  30. package/dist/cli/chat/SessionManager.js.map +1 -0
  31. package/dist/cli/chat/SlashMenu.js +293 -164
  32. package/dist/cli/chat/SlashMenu.js.map +1 -0
  33. package/dist/cli/chat/StatusBar.js +172 -9
  34. package/dist/cli/chat/StatusBar.js.map +1 -0
  35. package/dist/cli/chat/StoreSelector.js +147 -18
  36. package/dist/cli/chat/StoreSelector.js.map +1 -0
  37. package/dist/cli/chat/StreamingText.d.ts +1 -5
  38. package/dist/cli/chat/StreamingText.js +22 -7
  39. package/dist/cli/chat/StreamingText.js.map +1 -0
  40. package/dist/cli/chat/SubagentPanel.d.ts +1 -2
  41. package/dist/cli/chat/SubagentPanel.js +612 -72
  42. package/dist/cli/chat/SubagentPanel.js.map +1 -0
  43. package/dist/cli/chat/TeamPanel.d.ts +1 -0
  44. package/dist/cli/chat/TeamPanel.js +230 -30
  45. package/dist/cli/chat/TeamPanel.js.map +1 -0
  46. package/dist/cli/chat/ThemeSelector.js +84 -24
  47. package/dist/cli/chat/ThemeSelector.js.map +1 -0
  48. package/dist/cli/chat/ToolIndicator.js +1476 -371
  49. package/dist/cli/chat/ToolIndicator.js.map +1 -0
  50. package/dist/cli/chat/hooks/useAgentLoop.d.ts +1 -0
  51. package/dist/cli/chat/hooks/useAgentLoop.js +481 -367
  52. package/dist/cli/chat/hooks/useAgentLoop.js.map +1 -0
  53. package/dist/cli/chat/hooks/useSlashCommands.d.ts +3 -14
  54. package/dist/cli/chat/hooks/useSlashCommands.js +744 -572
  55. package/dist/cli/chat/hooks/useSlashCommands.js.map +1 -0
  56. package/dist/cli/commands/config-cmd.js +56 -57
  57. package/dist/cli/commands/config-cmd.js.map +1 -0
  58. package/dist/cli/commands/db.js +184 -169
  59. package/dist/cli/commands/db.js.map +1 -0
  60. package/dist/cli/commands/doctor.js +212 -122
  61. package/dist/cli/commands/doctor.js.map +1 -0
  62. package/dist/cli/commands/init.js +211 -244
  63. package/dist/cli/commands/init.js.map +1 -0
  64. package/dist/cli/commands/mcp.js +127 -122
  65. package/dist/cli/commands/mcp.js.map +1 -0
  66. package/dist/cli/login/LoginApp.js +355 -141
  67. package/dist/cli/login/LoginApp.js.map +1 -0
  68. package/dist/cli/print-mode.js +196 -177
  69. package/dist/cli/print-mode.js.map +1 -0
  70. package/dist/cli/serve-mode.js +615 -530
  71. package/dist/cli/serve-mode.js.map +1 -0
  72. package/dist/cli/services/agent-config.d.ts +29 -0
  73. package/dist/cli/services/agent-config.js +91 -0
  74. package/dist/cli/services/agent-config.js.map +1 -0
  75. package/dist/cli/services/agent-definitions.d.ts +4 -1
  76. package/dist/cli/services/agent-definitions.js +97 -56
  77. package/dist/cli/services/agent-definitions.js.map +1 -0
  78. package/dist/cli/services/agent-events.js +225 -162
  79. package/dist/cli/services/agent-events.js.map +1 -0
  80. package/dist/cli/services/agent-loop.js +978 -669
  81. package/dist/cli/services/agent-loop.js.map +1 -0
  82. package/dist/cli/services/agent-worker-base.d.ts +35 -5
  83. package/dist/cli/services/agent-worker-base.js +337 -153
  84. package/dist/cli/services/agent-worker-base.js.map +1 -0
  85. package/dist/cli/services/api-retry.js +69 -64
  86. package/dist/cli/services/api-retry.js.map +1 -0
  87. package/dist/cli/services/auth-service.d.ts +3 -3
  88. package/dist/cli/services/auth-service.js +209 -132
  89. package/dist/cli/services/auth-service.js.map +1 -0
  90. package/dist/cli/services/background-processes.js +343 -267
  91. package/dist/cli/services/background-processes.js.map +1 -0
  92. package/dist/cli/services/browser-auth.d.ts +2 -2
  93. package/dist/cli/services/browser-auth.js +159 -118
  94. package/dist/cli/services/browser-auth.js.map +1 -0
  95. package/dist/cli/services/claude-md-loader.js +40 -36
  96. package/dist/cli/services/claude-md-loader.js.map +1 -0
  97. package/dist/cli/services/config-store.d.ts +9 -4
  98. package/dist/cli/services/config-store.js +164 -117
  99. package/dist/cli/services/config-store.js.map +1 -0
  100. package/dist/cli/services/debug-log.d.ts +1 -1
  101. package/dist/cli/services/debug-log.js +34 -35
  102. package/dist/cli/services/debug-log.js.map +1 -0
  103. package/dist/cli/services/env-detect.d.ts +7 -0
  104. package/dist/cli/services/env-detect.js +9 -0
  105. package/dist/cli/services/env-detect.js.map +1 -0
  106. package/dist/cli/services/error-logger.d.ts +2 -3
  107. package/dist/cli/services/error-logger.js +189 -180
  108. package/dist/cli/services/error-logger.js.map +1 -0
  109. package/dist/cli/services/file-history.d.ts +1 -1
  110. package/dist/cli/services/file-history.js +50 -54
  111. package/dist/cli/services/file-history.js.map +1 -0
  112. package/dist/cli/services/format-server-response.js +332 -372
  113. package/dist/cli/services/format-server-response.js.map +1 -0
  114. package/dist/cli/services/git-context.js +61 -45
  115. package/dist/cli/services/git-context.js.map +1 -0
  116. package/dist/cli/services/hooks.d.ts +2 -2
  117. package/dist/cli/services/hooks.js +195 -180
  118. package/dist/cli/services/hooks.js.map +1 -0
  119. package/dist/cli/services/ink-incremental.d.ts +19 -0
  120. package/dist/cli/services/ink-incremental.js +59 -0
  121. package/dist/cli/services/ink-incremental.js.map +1 -0
  122. package/dist/cli/services/ink-resize-fix.js +54 -44
  123. package/dist/cli/services/ink-resize-fix.js.map +1 -0
  124. package/dist/cli/services/ink-sync-output.d.ts +12 -0
  125. package/dist/cli/services/ink-sync-output.js +16 -0
  126. package/dist/cli/services/ink-sync-output.js.map +1 -0
  127. package/dist/cli/services/interactive-tools.js +268 -212
  128. package/dist/cli/services/interactive-tools.js.map +1 -0
  129. package/dist/cli/services/keybinding-manager.d.ts +11 -1
  130. package/dist/cli/services/keybinding-manager.js +126 -63
  131. package/dist/cli/services/keybinding-manager.js.map +1 -0
  132. package/dist/cli/services/local-tools.d.ts +1 -1
  133. package/dist/cli/services/local-tools.js +939 -656
  134. package/dist/cli/services/local-tools.js.map +1 -0
  135. package/dist/cli/services/lsp-manager.js +757 -594
  136. package/dist/cli/services/lsp-manager.js.map +1 -0
  137. package/dist/cli/services/mcp-client.d.ts +1 -1
  138. package/dist/cli/services/mcp-client.js +173 -134
  139. package/dist/cli/services/mcp-client.js.map +1 -0
  140. package/dist/cli/services/memory-manager.js +53 -40
  141. package/dist/cli/services/memory-manager.js.map +1 -0
  142. package/dist/cli/services/model-manager.js +55 -40
  143. package/dist/cli/services/model-manager.js.map +1 -0
  144. package/dist/cli/services/model-router.js +115 -85
  145. package/dist/cli/services/model-router.js.map +1 -0
  146. package/dist/cli/services/paths.d.ts +30 -0
  147. package/dist/cli/services/paths.js +81 -0
  148. package/dist/cli/services/paths.js.map +1 -0
  149. package/dist/cli/services/permission-modes.js +32 -25
  150. package/dist/cli/services/permission-modes.js.map +1 -0
  151. package/dist/cli/services/rewind.js +182 -168
  152. package/dist/cli/services/rewind.js.map +1 -0
  153. package/dist/cli/services/ripgrep.js +115 -115
  154. package/dist/cli/services/ripgrep.js.map +1 -0
  155. package/dist/cli/services/sandbox.d.ts +1 -1
  156. package/dist/cli/services/sandbox.js +58 -37
  157. package/dist/cli/services/sandbox.js.map +1 -0
  158. package/dist/cli/services/server-tools.js +738 -565
  159. package/dist/cli/services/server-tools.js.map +1 -0
  160. package/dist/cli/services/session-persistence.js +69 -74
  161. package/dist/cli/services/session-persistence.js.map +1 -0
  162. package/dist/cli/services/subagent-worker.js +42 -27
  163. package/dist/cli/services/subagent-worker.js.map +1 -0
  164. package/dist/cli/services/subagent.d.ts +2 -0
  165. package/dist/cli/services/subagent.js +606 -430
  166. package/dist/cli/services/subagent.js.map +1 -0
  167. package/dist/cli/services/system-prompt.js +86 -78
  168. package/dist/cli/services/system-prompt.js.map +1 -0
  169. package/dist/cli/services/task-decomposer.d.ts +1 -1
  170. package/dist/cli/services/task-decomposer.js +172 -139
  171. package/dist/cli/services/task-decomposer.js.map +1 -0
  172. package/dist/cli/services/team-lead.d.ts +2 -2
  173. package/dist/cli/services/team-lead.js +727 -529
  174. package/dist/cli/services/team-lead.js.map +1 -0
  175. package/dist/cli/services/team-state.js +319 -319
  176. package/dist/cli/services/team-state.js.map +1 -0
  177. package/dist/cli/services/teammate.d.ts +8 -2
  178. package/dist/cli/services/teammate.js +862 -560
  179. package/dist/cli/services/teammate.js.map +1 -0
  180. package/dist/cli/services/telemetry.d.ts +6 -1
  181. package/dist/cli/services/telemetry.js +180 -157
  182. package/dist/cli/services/telemetry.js.map +1 -0
  183. package/dist/cli/services/tools/agent-tools.d.ts +3 -3
  184. package/dist/cli/services/tools/agent-tools.js +480 -322
  185. package/dist/cli/services/tools/agent-tools.js.map +1 -0
  186. package/dist/cli/services/tools/file-ops.js +563 -450
  187. package/dist/cli/services/tools/file-ops.js.map +1 -0
  188. package/dist/cli/services/tools/search-tools.js +231 -162
  189. package/dist/cli/services/tools/search-tools.js.map +1 -0
  190. package/dist/cli/services/tools/shell-exec.js +197 -151
  191. package/dist/cli/services/tools/shell-exec.js.map +1 -0
  192. package/dist/cli/services/tools/task-manager.js +206 -173
  193. package/dist/cli/services/tools/task-manager.js.map +1 -0
  194. package/dist/cli/services/tools/web-tools.js +388 -341
  195. package/dist/cli/services/tools/web-tools.js.map +1 -0
  196. package/dist/cli/setup/SetupApp.d.ts +2 -2
  197. package/dist/cli/setup/SetupApp.js +608 -160
  198. package/dist/cli/setup/SetupApp.js.map +1 -0
  199. package/dist/cli/shared/ErrorBoundary.d.ts +22 -0
  200. package/dist/cli/shared/ErrorBoundary.js +73 -0
  201. package/dist/cli/shared/ErrorBoundary.js.map +1 -0
  202. package/dist/cli/shared/MatrixIntro.js +66 -69
  203. package/dist/cli/shared/MatrixIntro.js.map +1 -0
  204. package/dist/cli/shared/SpinnerSlot.d.ts +14 -0
  205. package/dist/cli/shared/SpinnerSlot.js +63 -0
  206. package/dist/cli/shared/SpinnerSlot.js.map +1 -0
  207. package/dist/cli/shared/Theme.d.ts +1 -1
  208. package/dist/cli/shared/Theme.js +136 -92
  209. package/dist/cli/shared/Theme.js.map +1 -0
  210. package/dist/cli/shared/WhaleBanner.js +99 -11
  211. package/dist/cli/shared/WhaleBanner.js.map +1 -0
  212. package/dist/cli/shared/markdown.d.ts +3 -1
  213. package/dist/cli/shared/markdown.js +736 -674
  214. package/dist/cli/shared/markdown.js.map +1 -0
  215. package/dist/cli/shared/marked-terminal.d.js +2 -0
  216. package/dist/cli/shared/marked-terminal.d.js.map +1 -0
  217. package/dist/cli/shared/theme-manager.js +99 -90
  218. package/dist/cli/shared/theme-manager.js.map +1 -0
  219. package/dist/cli/shared/theme-presets.js +256 -254
  220. package/dist/cli/shared/theme-presets.js.map +1 -0
  221. package/dist/cli/status/StatusApp.js +235 -86
  222. package/dist/cli/status/StatusApp.js.map +1 -0
  223. package/dist/cli/stores/StoreApp.js +275 -65
  224. package/dist/cli/stores/StoreApp.js.map +1 -0
  225. package/dist/index.d.ts +2 -2
  226. package/dist/index.js +509 -396
  227. package/dist/index.js.map +1 -0
  228. package/dist/local-agent/connection.d.ts +2 -2
  229. package/dist/local-agent/connection.js +352 -293
  230. package/dist/local-agent/connection.js.map +1 -0
  231. package/dist/local-agent/discovery.js +259 -122
  232. package/dist/local-agent/discovery.js.map +1 -0
  233. package/dist/local-agent/executor.js +216 -193
  234. package/dist/local-agent/executor.js.map +1 -0
  235. package/dist/local-agent/index.d.ts +2 -2
  236. package/dist/local-agent/index.js +156 -156
  237. package/dist/local-agent/index.js.map +1 -0
  238. package/dist/node/adapters/base.js +18 -8
  239. package/dist/node/adapters/base.js.map +1 -0
  240. package/dist/node/adapters/discord.js +286 -275
  241. package/dist/node/adapters/discord.js.map +1 -0
  242. package/dist/node/adapters/email.js +189 -202
  243. package/dist/node/adapters/email.js.map +1 -0
  244. package/dist/node/adapters/imessage.js +145 -142
  245. package/dist/node/adapters/imessage.js.map +1 -0
  246. package/dist/node/adapters/slack.js +237 -236
  247. package/dist/node/adapters/slack.js.map +1 -0
  248. package/dist/node/adapters/sms.js +149 -151
  249. package/dist/node/adapters/sms.js.map +1 -0
  250. package/dist/node/adapters/telegram.js +88 -92
  251. package/dist/node/adapters/telegram.js.map +1 -0
  252. package/dist/node/adapters/webchat.js +160 -136
  253. package/dist/node/adapters/webchat.js.map +1 -0
  254. package/dist/node/adapters/whatsapp.js +212 -215
  255. package/dist/node/adapters/whatsapp.js.map +1 -0
  256. package/dist/node/cli.js +884 -653
  257. package/dist/node/cli.js.map +1 -0
  258. package/dist/node/config.js +20 -18
  259. package/dist/node/config.js.map +1 -0
  260. package/dist/node/gateway-client.js +191 -181
  261. package/dist/node/gateway-client.js.map +1 -0
  262. package/dist/node/portal/clipboard.js +161 -130
  263. package/dist/node/portal/clipboard.js.map +1 -0
  264. package/dist/node/portal/discovery.js +51 -45
  265. package/dist/node/portal/discovery.js.map +1 -0
  266. package/dist/node/portal/forward.js +64 -58
  267. package/dist/node/portal/forward.js.map +1 -0
  268. package/dist/node/portal/index.js +246 -221
  269. package/dist/node/portal/index.js.map +1 -0
  270. package/dist/node/portal/multiplexer.js +192 -182
  271. package/dist/node/portal/multiplexer.js.map +1 -0
  272. package/dist/node/portal/permissions.js +102 -70
  273. package/dist/node/portal/permissions.js.map +1 -0
  274. package/dist/node/portal/protocol.js +153 -116
  275. package/dist/node/portal/protocol.js.map +1 -0
  276. package/dist/node/portal/screen.js +80 -69
  277. package/dist/node/portal/screen.js.map +1 -0
  278. package/dist/node/portal/session.js +124 -117
  279. package/dist/node/portal/session.js.map +1 -0
  280. package/dist/node/portal/shell.js +140 -113
  281. package/dist/node/portal/shell.js.map +1 -0
  282. package/dist/node/portal/stream.js +77 -75
  283. package/dist/node/portal/stream.js.map +1 -0
  284. package/dist/node/portal/transfer.js +190 -167
  285. package/dist/node/portal/transfer.js.map +1 -0
  286. package/dist/node/portal/ui.js +124 -99
  287. package/dist/node/portal/ui.js.map +1 -0
  288. package/dist/node/remote-desktop/compile-helper.js +50 -45
  289. package/dist/node/remote-desktop/compile-helper.js.map +1 -0
  290. package/dist/node/remote-desktop/index.js +215 -187
  291. package/dist/node/remote-desktop/index.js.map +1 -0
  292. package/dist/node/remote-desktop/protocol.js +45 -29
  293. package/dist/node/remote-desktop/protocol.js.map +1 -0
  294. package/dist/node/runtime.js +493 -410
  295. package/dist/node/runtime.js.map +1 -0
  296. package/dist/server/handlers/__test-utils__/test-db.js +39 -89
  297. package/dist/server/handlers/__test-utils__/test-db.js.map +1 -0
  298. package/dist/server/handlers/analytics.js +467 -261
  299. package/dist/server/handlers/analytics.js.map +1 -0
  300. package/dist/server/handlers/api-docs.d.ts +6 -0
  301. package/dist/server/handlers/api-docs.js +1613 -0
  302. package/dist/server/handlers/api-docs.js.map +1 -0
  303. package/dist/server/handlers/api-keys.js +295 -232
  304. package/dist/server/handlers/api-keys.js.map +1 -0
  305. package/dist/server/handlers/billing.js +330 -239
  306. package/dist/server/handlers/billing.js.map +1 -0
  307. package/dist/server/handlers/browser.js +468 -395
  308. package/dist/server/handlers/browser.js.map +1 -0
  309. package/dist/server/handlers/catalog.js +1377 -978
  310. package/dist/server/handlers/catalog.js.map +1 -0
  311. package/dist/server/handlers/clickhouse.js +157 -109
  312. package/dist/server/handlers/clickhouse.js.map +1 -0
  313. package/dist/server/handlers/comms.d.ts +0 -53
  314. package/dist/server/handlers/comms.js +1443 -970
  315. package/dist/server/handlers/comms.js.map +1 -0
  316. package/dist/server/handlers/creations.js +461 -394
  317. package/dist/server/handlers/creations.js.map +1 -0
  318. package/dist/server/handlers/crm.js +1082 -791
  319. package/dist/server/handlers/crm.js.map +1 -0
  320. package/dist/server/handlers/discovery.js +251 -232
  321. package/dist/server/handlers/discovery.js.map +1 -0
  322. package/dist/server/handlers/embeddings.js +241 -164
  323. package/dist/server/handlers/embeddings.js.map +1 -0
  324. package/dist/server/handlers/enrichment.js +887 -718
  325. package/dist/server/handlers/enrichment.js.map +1 -0
  326. package/dist/server/handlers/image-gen.js +467 -376
  327. package/dist/server/handlers/image-gen.js.map +1 -0
  328. package/dist/server/handlers/inventory.js +797 -424
  329. package/dist/server/handlers/inventory.js.map +1 -0
  330. package/dist/server/handlers/kali.js +272 -230
  331. package/dist/server/handlers/kali.js.map +1 -0
  332. package/dist/server/handlers/llm-providers.js +803 -580
  333. package/dist/server/handlers/llm-providers.js.map +1 -0
  334. package/dist/server/handlers/local-agent.js +133 -105
  335. package/dist/server/handlers/local-agent.js.map +1 -0
  336. package/dist/server/handlers/media.js +1179 -857
  337. package/dist/server/handlers/media.js.map +1 -0
  338. package/dist/server/handlers/meta-ads.js +2669 -2093
  339. package/dist/server/handlers/meta-ads.js.map +1 -0
  340. package/dist/server/handlers/nodes.js +1321 -913
  341. package/dist/server/handlers/nodes.js.map +1 -0
  342. package/dist/server/handlers/operations.js +183 -157
  343. package/dist/server/handlers/operations.js.map +1 -0
  344. package/dist/server/handlers/platform.js +346 -210
  345. package/dist/server/handlers/platform.js.map +1 -0
  346. package/dist/server/handlers/remove-bg.js +118 -86
  347. package/dist/server/handlers/remove-bg.js.map +1 -0
  348. package/dist/server/handlers/storefront.js +586 -446
  349. package/dist/server/handlers/storefront.js.map +1 -0
  350. package/dist/server/handlers/supply-chain.js +546 -326
  351. package/dist/server/handlers/supply-chain.js.map +1 -0
  352. package/dist/server/handlers/transcription.js +106 -97
  353. package/dist/server/handlers/transcription.js.map +1 -0
  354. package/dist/server/handlers/video-gen.js +593 -424
  355. package/dist/server/handlers/video-gen.js.map +1 -0
  356. package/dist/server/handlers/voice.js +1458 -1017
  357. package/dist/server/handlers/voice.js.map +1 -0
  358. package/dist/server/handlers/workflow-steps.js +2837 -2116
  359. package/dist/server/handlers/workflow-steps.js.map +1 -0
  360. package/dist/server/handlers/workflows.js +1630 -933
  361. package/dist/server/handlers/workflows.js.map +1 -0
  362. package/dist/server/index.js +3166 -2390
  363. package/dist/server/index.js.map +1 -0
  364. package/dist/server/lib/batch-client.js +471 -409
  365. package/dist/server/lib/batch-client.js.map +1 -0
  366. package/dist/server/lib/clickhouse-buffer.js +118 -104
  367. package/dist/server/lib/clickhouse-buffer.js.map +1 -0
  368. package/dist/server/lib/clickhouse-client.js +107 -107
  369. package/dist/server/lib/clickhouse-client.js.map +1 -0
  370. package/dist/server/lib/coa-renderer.js +1786 -356
  371. package/dist/server/lib/coa-renderer.js.map +1 -0
  372. package/dist/server/lib/code-worker-pool.js +227 -177
  373. package/dist/server/lib/code-worker-pool.js.map +1 -0
  374. package/dist/server/lib/code-worker.js +174 -164
  375. package/dist/server/lib/code-worker.js.map +1 -0
  376. package/dist/server/lib/compaction-service.d.ts +2 -12
  377. package/dist/server/lib/compaction-service.js +74 -184
  378. package/dist/server/lib/compaction-service.js.map +1 -0
  379. package/dist/server/lib/logger.js +36 -24
  380. package/dist/server/lib/logger.js.map +1 -0
  381. package/dist/server/lib/otel.js +101 -80
  382. package/dist/server/lib/otel.js.map +1 -0
  383. package/dist/server/lib/pdf-renderer.d.ts +1 -1
  384. package/dist/server/lib/pdf-renderer.js +954 -776
  385. package/dist/server/lib/pdf-renderer.js.map +1 -0
  386. package/dist/server/lib/prompt-sanitizer.js +188 -108
  387. package/dist/server/lib/prompt-sanitizer.js.map +1 -0
  388. package/dist/server/lib/provider-capabilities.js +136 -138
  389. package/dist/server/lib/provider-capabilities.js.map +1 -0
  390. package/dist/server/lib/provider-failover.js +190 -168
  391. package/dist/server/lib/provider-failover.js.map +1 -0
  392. package/dist/server/lib/rate-limiter.js +186 -117
  393. package/dist/server/lib/rate-limiter.js.map +1 -0
  394. package/dist/server/lib/react-pdf-layout.js +551 -382
  395. package/dist/server/lib/react-pdf-layout.js.map +1 -0
  396. package/dist/server/lib/server-agent-loop.d.ts +9 -0
  397. package/dist/server/lib/server-agent-loop.js +906 -624
  398. package/dist/server/lib/server-agent-loop.js.map +1 -0
  399. package/dist/server/lib/server-subagent.d.ts +2 -0
  400. package/dist/server/lib/server-subagent.js +260 -162
  401. package/dist/server/lib/server-subagent.js.map +1 -0
  402. package/dist/server/lib/session-checkpoint.js +105 -96
  403. package/dist/server/lib/session-checkpoint.js.map +1 -0
  404. package/dist/server/lib/ssrf-guard.js +193 -184
  405. package/dist/server/lib/ssrf-guard.js.map +1 -0
  406. package/dist/server/lib/supabase-client.js +94 -82
  407. package/dist/server/lib/supabase-client.js.map +1 -0
  408. package/dist/server/lib/template-resolver.js +154 -176
  409. package/dist/server/lib/template-resolver.js.map +1 -0
  410. package/dist/server/lib/utils.js +242 -133
  411. package/dist/server/lib/utils.js.map +1 -0
  412. package/dist/server/local-agent-gateway.d.ts +2 -2
  413. package/dist/server/local-agent-gateway.js +785 -627
  414. package/dist/server/local-agent-gateway.js.map +1 -0
  415. package/dist/server/providers/anthropic.js +254 -176
  416. package/dist/server/providers/anthropic.js.map +1 -0
  417. package/dist/server/providers/bedrock.js +221 -162
  418. package/dist/server/providers/bedrock.js.map +1 -0
  419. package/dist/server/providers/gemini.js +548 -418
  420. package/dist/server/providers/gemini.js.map +1 -0
  421. package/dist/server/providers/openai.js +571 -437
  422. package/dist/server/providers/openai.js.map +1 -0
  423. package/dist/server/providers/registry.js +23 -18
  424. package/dist/server/providers/registry.js.map +1 -0
  425. package/dist/server/providers/shared.js +123 -95
  426. package/dist/server/providers/shared.js.map +1 -0
  427. package/dist/server/providers/types.js +1 -11
  428. package/dist/server/providers/types.js.map +1 -0
  429. package/dist/server/proxy-handlers.js +209 -165
  430. package/dist/server/proxy-handlers.js.map +1 -0
  431. package/dist/server/tool-router.d.ts +13 -0
  432. package/dist/server/tool-router.js +960 -598
  433. package/dist/server/tool-router.js.map +1 -0
  434. package/dist/server/validation.js +248 -188
  435. package/dist/server/validation.js.map +1 -0
  436. package/dist/server/worker.js +202 -133
  437. package/dist/server/worker.js.map +1 -0
  438. package/dist/setup.d.ts +2 -2
  439. package/dist/setup.js +151 -147
  440. package/dist/setup.js.map +1 -0
  441. package/dist/shared/agent-core.d.ts +191 -24
  442. package/dist/shared/agent-core.js +971 -462
  443. package/dist/shared/agent-core.js.map +1 -0
  444. package/dist/shared/anthropic-types.js +1 -6
  445. package/dist/shared/anthropic-types.js.map +1 -0
  446. package/dist/shared/api-client.d.ts +17 -9
  447. package/dist/shared/api-client.js +419 -327
  448. package/dist/shared/api-client.js.map +1 -0
  449. package/dist/shared/compaction.d.ts +36 -0
  450. package/dist/shared/compaction.js +138 -0
  451. package/dist/shared/compaction.js.map +1 -0
  452. package/dist/shared/constants.js +67 -64
  453. package/dist/shared/constants.js.map +1 -0
  454. package/dist/shared/sse-parser.js +221 -219
  455. package/dist/shared/sse-parser.js.map +1 -0
  456. package/dist/shared/tool-dispatch.d.ts +4 -2
  457. package/dist/shared/tool-dispatch.js +226 -165
  458. package/dist/shared/tool-dispatch.js.map +1 -0
  459. package/dist/shared/types.js +1 -6
  460. package/dist/shared/types.js.map +1 -0
  461. package/dist/types/cli-highlight.d.js +2 -0
  462. package/dist/types/cli-highlight.d.js.map +1 -0
  463. package/dist/types/diff.d.js +2 -0
  464. package/dist/types/diff.d.js.map +1 -0
  465. package/dist/types/pdf-parse.d.js +2 -0
  466. package/dist/types/pdf-parse.d.js.map +1 -0
  467. package/dist/updater.d.ts +1 -1
  468. package/dist/updater.js +118 -92
  469. package/dist/updater.js.map +1 -0
  470. package/dist/webchat/widget.js +227 -380
  471. package/dist/webchat/widget.js.map +1 -0
  472. package/package.json +22 -10
  473. package/vendor/ink/build/ansi-tokenizer.d.ts +38 -0
  474. package/vendor/ink/build/ansi-tokenizer.js +316 -0
  475. package/vendor/ink/build/ansi-tokenizer.js.map +1 -0
  476. package/vendor/ink/build/apply-styles.js +175 -0
  477. package/vendor/ink/build/build-layout.js +77 -0
  478. package/vendor/ink/build/calculate-wrapped-text.js +53 -0
  479. package/vendor/ink/build/colorize.d.ts +3 -0
  480. package/vendor/ink/build/colorize.js +48 -0
  481. package/vendor/ink/build/colorize.js.map +1 -0
  482. package/vendor/ink/build/components/AccessibilityContext.d.ts +3 -0
  483. package/vendor/ink/build/components/AccessibilityContext.js +5 -0
  484. package/vendor/ink/build/components/AccessibilityContext.js.map +1 -0
  485. package/vendor/ink/build/components/App.d.ts +18 -0
  486. package/vendor/ink/build/components/App.js +351 -0
  487. package/vendor/ink/build/components/App.js.map +1 -0
  488. package/vendor/ink/build/components/AppContext.d.ts +15 -0
  489. package/vendor/ink/build/components/AppContext.js +11 -0
  490. package/vendor/ink/build/components/AppContext.js.map +1 -0
  491. package/vendor/ink/build/components/BackgroundContext.d.ts +4 -0
  492. package/vendor/ink/build/components/BackgroundContext.js +3 -0
  493. package/vendor/ink/build/components/BackgroundContext.js.map +1 -0
  494. package/vendor/ink/build/components/Box.d.ts +117 -0
  495. package/vendor/ink/build/components/Box.js +34 -0
  496. package/vendor/ink/build/components/Box.js.map +1 -0
  497. package/vendor/ink/build/components/Color.js +62 -0
  498. package/vendor/ink/build/components/Cursor.d.ts +83 -0
  499. package/vendor/ink/build/components/Cursor.js +53 -0
  500. package/vendor/ink/build/components/Cursor.js.map +1 -0
  501. package/vendor/ink/build/components/CursorContext.d.ts +11 -0
  502. package/vendor/ink/build/components/CursorContext.js +8 -0
  503. package/vendor/ink/build/components/CursorContext.js.map +1 -0
  504. package/vendor/ink/build/components/ErrorBoundary.d.ts +18 -0
  505. package/vendor/ink/build/components/ErrorBoundary.js +23 -0
  506. package/vendor/ink/build/components/ErrorBoundary.js.map +1 -0
  507. package/vendor/ink/build/components/ErrorOverview.d.ts +6 -0
  508. package/vendor/ink/build/components/ErrorOverview.js +84 -0
  509. package/vendor/ink/build/components/ErrorOverview.js.map +1 -0
  510. package/vendor/ink/build/components/FocusContext.d.ts +16 -0
  511. package/vendor/ink/build/components/FocusContext.js +17 -0
  512. package/vendor/ink/build/components/FocusContext.js.map +1 -0
  513. package/vendor/ink/build/components/Newline.d.ts +13 -0
  514. package/vendor/ink/build/components/Newline.js +8 -0
  515. package/vendor/ink/build/components/Newline.js.map +1 -0
  516. package/vendor/ink/build/components/Spacer.d.ts +7 -0
  517. package/vendor/ink/build/components/Spacer.js +11 -0
  518. package/vendor/ink/build/components/Spacer.js.map +1 -0
  519. package/vendor/ink/build/components/Static.d.ts +24 -0
  520. package/vendor/ink/build/components/Static.js +28 -0
  521. package/vendor/ink/build/components/Static.js.map +1 -0
  522. package/vendor/ink/build/components/StderrContext.d.ts +15 -0
  523. package/vendor/ink/build/components/StderrContext.js +13 -0
  524. package/vendor/ink/build/components/StderrContext.js.map +1 -0
  525. package/vendor/ink/build/components/StdinContext.d.ts +22 -0
  526. package/vendor/ink/build/components/StdinContext.js +19 -0
  527. package/vendor/ink/build/components/StdinContext.js.map +1 -0
  528. package/vendor/ink/build/components/StdoutContext.d.ts +15 -0
  529. package/vendor/ink/build/components/StdoutContext.js +13 -0
  530. package/vendor/ink/build/components/StdoutContext.js.map +1 -0
  531. package/vendor/ink/build/components/Text.d.ts +55 -0
  532. package/vendor/ink/build/components/Text.js +50 -0
  533. package/vendor/ink/build/components/Text.js.map +1 -0
  534. package/vendor/ink/build/components/Transform.d.ts +16 -0
  535. package/vendor/ink/build/components/Transform.js +15 -0
  536. package/vendor/ink/build/components/Transform.js.map +1 -0
  537. package/vendor/ink/build/cursor-helpers.d.ts +38 -0
  538. package/vendor/ink/build/cursor-helpers.js +56 -0
  539. package/vendor/ink/build/cursor-helpers.js.map +1 -0
  540. package/vendor/ink/build/devtools-window-polyfill.d.ts +1 -0
  541. package/vendor/ink/build/devtools-window-polyfill.js +65 -0
  542. package/vendor/ink/build/devtools-window-polyfill.js.map +1 -0
  543. package/vendor/ink/build/devtools.d.ts +1 -0
  544. package/vendor/ink/build/devtools.js +11 -0
  545. package/vendor/ink/build/devtools.js.map +1 -0
  546. package/vendor/ink/build/dom.d.ts +56 -0
  547. package/vendor/ink/build/dom.js +124 -0
  548. package/vendor/ink/build/dom.js.map +1 -0
  549. package/vendor/ink/build/experimental/apply-style.js +140 -0
  550. package/vendor/ink/build/experimental/dom.js +123 -0
  551. package/vendor/ink/build/experimental/output.js +91 -0
  552. package/vendor/ink/build/experimental/reconciler.js +141 -0
  553. package/vendor/ink/build/experimental/renderer.js +81 -0
  554. package/vendor/ink/build/get-max-width.d.ts +3 -0
  555. package/vendor/ink/build/get-max-width.js +10 -0
  556. package/vendor/ink/build/get-max-width.js.map +1 -0
  557. package/vendor/ink/build/hooks/use-app.d.ts +5 -0
  558. package/vendor/ink/build/hooks/use-app.js +8 -0
  559. package/vendor/ink/build/hooks/use-app.js.map +1 -0
  560. package/vendor/ink/build/hooks/use-cursor.d.ts +12 -0
  561. package/vendor/ink/build/hooks/use-cursor.js +29 -0
  562. package/vendor/ink/build/hooks/use-cursor.js.map +1 -0
  563. package/vendor/ink/build/hooks/use-focus-manager.d.ts +28 -0
  564. package/vendor/ink/build/hooks/use-focus-manager.js +17 -0
  565. package/vendor/ink/build/hooks/use-focus-manager.js.map +1 -0
  566. package/vendor/ink/build/hooks/use-focus.d.ts +29 -0
  567. package/vendor/ink/build/hooks/use-focus.js +42 -0
  568. package/vendor/ink/build/hooks/use-focus.js.map +1 -0
  569. package/vendor/ink/build/hooks/use-input.d.ts +131 -0
  570. package/vendor/ink/build/hooks/use-input.js +124 -0
  571. package/vendor/ink/build/hooks/use-input.js.map +1 -0
  572. package/vendor/ink/build/hooks/use-is-screen-reader-enabled.d.ts +5 -0
  573. package/vendor/ink/build/hooks/use-is-screen-reader-enabled.js +11 -0
  574. package/vendor/ink/build/hooks/use-is-screen-reader-enabled.js.map +1 -0
  575. package/vendor/ink/build/hooks/use-stderr.d.ts +5 -0
  576. package/vendor/ink/build/hooks/use-stderr.js +8 -0
  577. package/vendor/ink/build/hooks/use-stderr.js.map +1 -0
  578. package/vendor/ink/build/hooks/use-stdin.d.ts +5 -0
  579. package/vendor/ink/build/hooks/use-stdin.js +8 -0
  580. package/vendor/ink/build/hooks/use-stdin.js.map +1 -0
  581. package/vendor/ink/build/hooks/use-stdout.d.ts +5 -0
  582. package/vendor/ink/build/hooks/use-stdout.js +8 -0
  583. package/vendor/ink/build/hooks/use-stdout.js.map +1 -0
  584. package/vendor/ink/build/hooks/useInput.js +38 -0
  585. package/vendor/ink/build/index.d.ts +34 -0
  586. package/vendor/ink/build/index.js +20 -0
  587. package/vendor/ink/build/index.js.map +1 -0
  588. package/vendor/ink/build/ink.d.ts +90 -0
  589. package/vendor/ink/build/ink.js +654 -0
  590. package/vendor/ink/build/ink.js.map +1 -0
  591. package/vendor/ink/build/input-parser.d.ts +7 -0
  592. package/vendor/ink/build/input-parser.js +154 -0
  593. package/vendor/ink/build/input-parser.js.map +1 -0
  594. package/vendor/ink/build/instance.js +205 -0
  595. package/vendor/ink/build/instances.d.ts +3 -0
  596. package/vendor/ink/build/instances.js +8 -0
  597. package/vendor/ink/build/instances.js.map +1 -0
  598. package/vendor/ink/build/kitty-keyboard.d.ts +23 -0
  599. package/vendor/ink/build/kitty-keyboard.js +32 -0
  600. package/vendor/ink/build/kitty-keyboard.js.map +1 -0
  601. package/vendor/ink/build/layout.d.ts +7 -0
  602. package/vendor/ink/build/layout.js +33 -0
  603. package/vendor/ink/build/layout.js.map +1 -0
  604. package/vendor/ink/build/log-update.d.ts +19 -0
  605. package/vendor/ink/build/log-update.js +243 -0
  606. package/vendor/ink/build/log-update.js.map +1 -0
  607. package/vendor/ink/build/measure-element.d.ts +16 -0
  608. package/vendor/ink/build/measure-element.js +9 -0
  609. package/vendor/ink/build/measure-element.js.map +1 -0
  610. package/vendor/ink/build/measure-text.d.ts +6 -0
  611. package/vendor/ink/build/measure-text.js +21 -0
  612. package/vendor/ink/build/measure-text.js.map +1 -0
  613. package/vendor/ink/build/options.d.ts +52 -0
  614. package/vendor/ink/build/options.js +2 -0
  615. package/vendor/ink/build/options.js.map +1 -0
  616. package/vendor/ink/build/output.d.ts +35 -0
  617. package/vendor/ink/build/output.js +183 -0
  618. package/vendor/ink/build/output.js.map +1 -0
  619. package/vendor/ink/build/parse-keypress.d.ts +22 -0
  620. package/vendor/ink/build/parse-keypress.js +493 -0
  621. package/vendor/ink/build/parse-keypress.js.map +1 -0
  622. package/vendor/ink/build/reconciler.d.ts +4 -0
  623. package/vendor/ink/build/reconciler.js +274 -0
  624. package/vendor/ink/build/reconciler.js.map +1 -0
  625. package/vendor/ink/build/render-background.d.ts +4 -0
  626. package/vendor/ink/build/render-background.js +25 -0
  627. package/vendor/ink/build/render-background.js.map +1 -0
  628. package/vendor/ink/build/render-border.d.ts +4 -0
  629. package/vendor/ink/build/render-border.js +73 -0
  630. package/vendor/ink/build/render-border.js.map +1 -0
  631. package/vendor/ink/build/render-node-to-output.d.ts +14 -0
  632. package/vendor/ink/build/render-node-to-output.js +147 -0
  633. package/vendor/ink/build/render-node-to-output.js.map +1 -0
  634. package/vendor/ink/build/render-to-string.d.ts +38 -0
  635. package/vendor/ink/build/render-to-string.js +115 -0
  636. package/vendor/ink/build/render-to-string.js.map +1 -0
  637. package/vendor/ink/build/render.d.ts +121 -0
  638. package/vendor/ink/build/render.js +55 -0
  639. package/vendor/ink/build/render.js.map +1 -0
  640. package/vendor/ink/build/renderer.d.ts +8 -0
  641. package/vendor/ink/build/renderer.js +55 -0
  642. package/vendor/ink/build/renderer.js.map +1 -0
  643. package/vendor/ink/build/sanitize-ansi.d.ts +2 -0
  644. package/vendor/ink/build/sanitize-ansi.js +27 -0
  645. package/vendor/ink/build/sanitize-ansi.js.map +1 -0
  646. package/vendor/ink/build/screen-reader-update.d.ts +13 -0
  647. package/vendor/ink/build/screen-reader-update.js +38 -0
  648. package/vendor/ink/build/screen-reader-update.js.map +1 -0
  649. package/vendor/ink/build/squash-text-nodes.d.ts +3 -0
  650. package/vendor/ink/build/squash-text-nodes.js +36 -0
  651. package/vendor/ink/build/squash-text-nodes.js.map +1 -0
  652. package/vendor/ink/build/styles.d.ts +240 -0
  653. package/vendor/ink/build/styles.js +232 -0
  654. package/vendor/ink/build/styles.js.map +1 -0
  655. package/vendor/ink/build/utils.d.ts +2 -0
  656. package/vendor/ink/build/utils.js +4 -0
  657. package/vendor/ink/build/utils.js.map +1 -0
  658. package/vendor/ink/build/wrap-text.d.ts +3 -0
  659. package/vendor/ink/build/wrap-text.js +31 -0
  660. package/vendor/ink/build/wrap-text.js.map +1 -0
  661. package/vendor/ink/build/write-synchronized.d.ts +4 -0
  662. package/vendor/ink/build/write-synchronized.js +7 -0
  663. package/vendor/ink/build/write-synchronized.js.map +1 -0
  664. package/vendor/ink/license +10 -0
  665. package/vendor/ink/node_modules/@types/node/LICENSE +21 -0
  666. package/vendor/ink/node_modules/@types/node/README.md +15 -0
  667. package/vendor/ink/node_modules/@types/node/assert/strict.d.ts +105 -0
  668. package/vendor/ink/node_modules/@types/node/assert.d.ts +955 -0
  669. package/vendor/ink/node_modules/@types/node/async_hooks.d.ts +623 -0
  670. package/vendor/ink/node_modules/@types/node/buffer.buffer.d.ts +466 -0
  671. package/vendor/ink/node_modules/@types/node/buffer.d.ts +1810 -0
  672. package/vendor/ink/node_modules/@types/node/child_process.d.ts +1428 -0
  673. package/vendor/ink/node_modules/@types/node/cluster.d.ts +486 -0
  674. package/vendor/ink/node_modules/@types/node/compatibility/iterators.d.ts +21 -0
  675. package/vendor/ink/node_modules/@types/node/console.d.ts +151 -0
  676. package/vendor/ink/node_modules/@types/node/constants.d.ts +20 -0
  677. package/vendor/ink/node_modules/@types/node/crypto.d.ts +4065 -0
  678. package/vendor/ink/node_modules/@types/node/dgram.d.ts +564 -0
  679. package/vendor/ink/node_modules/@types/node/diagnostics_channel.d.ts +576 -0
  680. package/vendor/ink/node_modules/@types/node/dns/promises.d.ts +503 -0
  681. package/vendor/ink/node_modules/@types/node/dns.d.ts +922 -0
  682. package/vendor/ink/node_modules/@types/node/domain.d.ts +166 -0
  683. package/vendor/ink/node_modules/@types/node/events.d.ts +1054 -0
  684. package/vendor/ink/node_modules/@types/node/fs/promises.d.ts +1329 -0
  685. package/vendor/ink/node_modules/@types/node/fs.d.ts +4676 -0
  686. package/vendor/ink/node_modules/@types/node/globals.d.ts +150 -0
  687. package/vendor/ink/node_modules/@types/node/globals.typedarray.d.ts +101 -0
  688. package/vendor/ink/node_modules/@types/node/http.d.ts +2167 -0
  689. package/vendor/ink/node_modules/@types/node/http2.d.ts +2480 -0
  690. package/vendor/ink/node_modules/@types/node/https.d.ts +405 -0
  691. package/vendor/ink/node_modules/@types/node/index.d.ts +115 -0
  692. package/vendor/ink/node_modules/@types/node/inspector/promises.d.ts +41 -0
  693. package/vendor/ink/node_modules/@types/node/inspector.d.ts +224 -0
  694. package/vendor/ink/node_modules/@types/node/inspector.generated.d.ts +4226 -0
  695. package/vendor/ink/node_modules/@types/node/module.d.ts +819 -0
  696. package/vendor/ink/node_modules/@types/node/net.d.ts +933 -0
  697. package/vendor/ink/node_modules/@types/node/os.d.ts +507 -0
  698. package/vendor/ink/node_modules/@types/node/package.json +155 -0
  699. package/vendor/ink/node_modules/@types/node/path/posix.d.ts +8 -0
  700. package/vendor/ink/node_modules/@types/node/path/win32.d.ts +8 -0
  701. package/vendor/ink/node_modules/@types/node/path.d.ts +187 -0
  702. package/vendor/ink/node_modules/@types/node/perf_hooks.d.ts +643 -0
  703. package/vendor/ink/node_modules/@types/node/process.d.ts +2156 -0
  704. package/vendor/ink/node_modules/@types/node/punycode.d.ts +117 -0
  705. package/vendor/ink/node_modules/@types/node/querystring.d.ts +152 -0
  706. package/vendor/ink/node_modules/@types/node/quic.d.ts +910 -0
  707. package/vendor/ink/node_modules/@types/node/readline/promises.d.ts +161 -0
  708. package/vendor/ink/node_modules/@types/node/readline.d.ts +541 -0
  709. package/vendor/ink/node_modules/@types/node/repl.d.ts +415 -0
  710. package/vendor/ink/node_modules/@types/node/sea.d.ts +162 -0
  711. package/vendor/ink/node_modules/@types/node/sqlite.d.ts +955 -0
  712. package/vendor/ink/node_modules/@types/node/stream/consumers.d.ts +38 -0
  713. package/vendor/ink/node_modules/@types/node/stream/promises.d.ts +211 -0
  714. package/vendor/ink/node_modules/@types/node/stream/web.d.ts +296 -0
  715. package/vendor/ink/node_modules/@types/node/stream.d.ts +1760 -0
  716. package/vendor/ink/node_modules/@types/node/string_decoder.d.ts +67 -0
  717. package/vendor/ink/node_modules/@types/node/test/reporters.d.ts +96 -0
  718. package/vendor/ink/node_modules/@types/node/test.d.ts +2240 -0
  719. package/vendor/ink/node_modules/@types/node/timers/promises.d.ts +108 -0
  720. package/vendor/ink/node_modules/@types/node/timers.d.ts +159 -0
  721. package/vendor/ink/node_modules/@types/node/tls.d.ts +1198 -0
  722. package/vendor/ink/node_modules/@types/node/trace_events.d.ts +197 -0
  723. package/vendor/ink/node_modules/@types/node/ts5.6/buffer.buffer.d.ts +462 -0
  724. package/vendor/ink/node_modules/@types/node/ts5.6/compatibility/float16array.d.ts +71 -0
  725. package/vendor/ink/node_modules/@types/node/ts5.6/globals.typedarray.d.ts +36 -0
  726. package/vendor/ink/node_modules/@types/node/ts5.6/index.d.ts +117 -0
  727. package/vendor/ink/node_modules/@types/node/ts5.7/compatibility/float16array.d.ts +72 -0
  728. package/vendor/ink/node_modules/@types/node/ts5.7/index.d.ts +117 -0
  729. package/vendor/ink/node_modules/@types/node/tty.d.ts +250 -0
  730. package/vendor/ink/node_modules/@types/node/url.d.ts +519 -0
  731. package/vendor/ink/node_modules/@types/node/util/types.d.ts +558 -0
  732. package/vendor/ink/node_modules/@types/node/util.d.ts +1662 -0
  733. package/vendor/ink/node_modules/@types/node/v8.d.ts +983 -0
  734. package/vendor/ink/node_modules/@types/node/vm.d.ts +1208 -0
  735. package/vendor/ink/node_modules/@types/node/wasi.d.ts +202 -0
  736. package/vendor/ink/node_modules/@types/node/web-globals/abortcontroller.d.ts +59 -0
  737. package/vendor/ink/node_modules/@types/node/web-globals/blob.d.ts +23 -0
  738. package/vendor/ink/node_modules/@types/node/web-globals/console.d.ts +9 -0
  739. package/vendor/ink/node_modules/@types/node/web-globals/crypto.d.ts +39 -0
  740. package/vendor/ink/node_modules/@types/node/web-globals/domexception.d.ts +68 -0
  741. package/vendor/ink/node_modules/@types/node/web-globals/encoding.d.ts +11 -0
  742. package/vendor/ink/node_modules/@types/node/web-globals/events.d.ts +106 -0
  743. package/vendor/ink/node_modules/@types/node/web-globals/fetch.d.ts +69 -0
  744. package/vendor/ink/node_modules/@types/node/web-globals/importmeta.d.ts +13 -0
  745. package/vendor/ink/node_modules/@types/node/web-globals/messaging.d.ts +23 -0
  746. package/vendor/ink/node_modules/@types/node/web-globals/navigator.d.ts +25 -0
  747. package/vendor/ink/node_modules/@types/node/web-globals/performance.d.ts +45 -0
  748. package/vendor/ink/node_modules/@types/node/web-globals/storage.d.ts +24 -0
  749. package/vendor/ink/node_modules/@types/node/web-globals/streams.d.ts +115 -0
  750. package/vendor/ink/node_modules/@types/node/web-globals/timers.d.ts +44 -0
  751. package/vendor/ink/node_modules/@types/node/web-globals/url.d.ts +24 -0
  752. package/vendor/ink/node_modules/@types/node/worker_threads.d.ts +717 -0
  753. package/vendor/ink/node_modules/@types/node/zlib.d.ts +618 -0
  754. package/vendor/ink/node_modules/node-pty/LICENSE +69 -0
  755. package/vendor/ink/node_modules/node-pty/README.md +164 -0
  756. package/vendor/ink/node_modules/node-pty/binding.gyp +150 -0
  757. package/vendor/ink/node_modules/node-pty/lib/conpty_console_list_agent.js +25 -0
  758. package/vendor/ink/node_modules/node-pty/lib/eventEmitter2.js +47 -0
  759. package/vendor/ink/node_modules/node-pty/lib/index.js +52 -0
  760. package/vendor/ink/node_modules/node-pty/lib/interfaces.js +7 -0
  761. package/vendor/ink/node_modules/node-pty/lib/shared/conout.js +11 -0
  762. package/vendor/ink/node_modules/node-pty/lib/terminal.js +190 -0
  763. package/vendor/ink/node_modules/node-pty/lib/types.js +7 -0
  764. package/vendor/ink/node_modules/node-pty/lib/unixTerminal.js +349 -0
  765. package/vendor/ink/node_modules/node-pty/lib/utils.js +39 -0
  766. package/vendor/ink/node_modules/node-pty/lib/windowsConoutConnection.js +125 -0
  767. package/vendor/ink/node_modules/node-pty/lib/windowsPtyAgent.js +287 -0
  768. package/vendor/ink/node_modules/node-pty/lib/windowsTerminal.js +201 -0
  769. package/vendor/ink/node_modules/node-pty/lib/worker/conoutSocketWorker.js +22 -0
  770. package/vendor/ink/node_modules/node-pty/package.json +65 -0
  771. package/vendor/ink/node_modules/node-pty/prebuilds/darwin-arm64/pty.node +0 -0
  772. package/vendor/ink/node_modules/node-pty/prebuilds/darwin-arm64/spawn-helper +0 -0
  773. package/vendor/ink/node_modules/node-pty/prebuilds/darwin-x64/pty.node +0 -0
  774. package/vendor/ink/node_modules/node-pty/prebuilds/darwin-x64/spawn-helper +0 -0
  775. package/vendor/ink/node_modules/node-pty/prebuilds/linux-arm64/pty.node +0 -0
  776. package/vendor/ink/node_modules/node-pty/prebuilds/linux-x64/pty.node +0 -0
  777. package/vendor/ink/node_modules/node-pty/prebuilds/win32-arm64/conpty/OpenConsole.exe +0 -0
  778. package/vendor/ink/node_modules/node-pty/prebuilds/win32-arm64/conpty/conpty.dll +0 -0
  779. package/vendor/ink/node_modules/node-pty/prebuilds/win32-arm64/conpty.node +0 -0
  780. package/vendor/ink/node_modules/node-pty/prebuilds/win32-arm64/conpty.pdb +0 -0
  781. package/vendor/ink/node_modules/node-pty/prebuilds/win32-arm64/conpty_console_list.node +0 -0
  782. package/vendor/ink/node_modules/node-pty/prebuilds/win32-arm64/conpty_console_list.pdb +0 -0
  783. package/vendor/ink/node_modules/node-pty/prebuilds/win32-x64/conpty/OpenConsole.exe +0 -0
  784. package/vendor/ink/node_modules/node-pty/prebuilds/win32-x64/conpty/conpty.dll +0 -0
  785. package/vendor/ink/node_modules/node-pty/prebuilds/win32-x64/conpty.node +0 -0
  786. package/vendor/ink/node_modules/node-pty/prebuilds/win32-x64/conpty.pdb +0 -0
  787. package/vendor/ink/node_modules/node-pty/prebuilds/win32-x64/conpty_console_list.node +0 -0
  788. package/vendor/ink/node_modules/node-pty/prebuilds/win32-x64/conpty_console_list.pdb +0 -0
  789. package/vendor/ink/node_modules/node-pty/scripts/post-install.js +76 -0
  790. package/vendor/ink/node_modules/node-pty/scripts/prebuild.js +34 -0
  791. package/vendor/ink/node_modules/node-pty/src/unix/pty.cc +875 -0
  792. package/vendor/ink/node_modules/node-pty/src/unix/spawn-helper.cc +23 -0
  793. package/vendor/ink/node_modules/node-pty/src/win/conpty.cc +582 -0
  794. package/vendor/ink/node_modules/node-pty/src/win/conpty.h +41 -0
  795. package/vendor/ink/node_modules/node-pty/src/win/conpty_console_list.cc +44 -0
  796. package/vendor/ink/node_modules/node-pty/src/win/path_util.cc +95 -0
  797. package/vendor/ink/node_modules/node-pty/src/win/path_util.h +26 -0
  798. package/vendor/ink/node_modules/node-pty/third_party/conpty/1.23.251008001/win10-arm64/OpenConsole.exe +0 -0
  799. package/vendor/ink/node_modules/node-pty/third_party/conpty/1.23.251008001/win10-arm64/conpty.dll +0 -0
  800. package/vendor/ink/node_modules/node-pty/third_party/conpty/1.23.251008001/win10-x64/OpenConsole.exe +0 -0
  801. package/vendor/ink/node_modules/node-pty/third_party/conpty/1.23.251008001/win10-x64/conpty.dll +0 -0
  802. package/vendor/ink/node_modules/node-pty/typings/node-pty.d.ts +215 -0
  803. package/vendor/ink/node_modules/undici-types/LICENSE +21 -0
  804. package/vendor/ink/node_modules/undici-types/README.md +6 -0
  805. package/vendor/ink/node_modules/undici-types/agent.d.ts +32 -0
  806. package/vendor/ink/node_modules/undici-types/api.d.ts +43 -0
  807. package/vendor/ink/node_modules/undici-types/balanced-pool.d.ts +30 -0
  808. package/vendor/ink/node_modules/undici-types/cache-interceptor.d.ts +173 -0
  809. package/vendor/ink/node_modules/undici-types/cache.d.ts +36 -0
  810. package/vendor/ink/node_modules/undici-types/client-stats.d.ts +15 -0
  811. package/vendor/ink/node_modules/undici-types/client.d.ts +108 -0
  812. package/vendor/ink/node_modules/undici-types/connector.d.ts +34 -0
  813. package/vendor/ink/node_modules/undici-types/content-type.d.ts +21 -0
  814. package/vendor/ink/node_modules/undici-types/cookies.d.ts +30 -0
  815. package/vendor/ink/node_modules/undici-types/diagnostics-channel.d.ts +74 -0
  816. package/vendor/ink/node_modules/undici-types/dispatcher.d.ts +276 -0
  817. package/vendor/ink/node_modules/undici-types/env-http-proxy-agent.d.ts +22 -0
  818. package/vendor/ink/node_modules/undici-types/errors.d.ts +161 -0
  819. package/vendor/ink/node_modules/undici-types/eventsource.d.ts +66 -0
  820. package/vendor/ink/node_modules/undici-types/fetch.d.ts +211 -0
  821. package/vendor/ink/node_modules/undici-types/formdata.d.ts +108 -0
  822. package/vendor/ink/node_modules/undici-types/global-dispatcher.d.ts +9 -0
  823. package/vendor/ink/node_modules/undici-types/global-origin.d.ts +7 -0
  824. package/vendor/ink/node_modules/undici-types/h2c-client.d.ts +73 -0
  825. package/vendor/ink/node_modules/undici-types/handlers.d.ts +15 -0
  826. package/vendor/ink/node_modules/undici-types/header.d.ts +160 -0
  827. package/vendor/ink/node_modules/undici-types/index.d.ts +88 -0
  828. package/vendor/ink/node_modules/undici-types/interceptors.d.ts +73 -0
  829. package/vendor/ink/node_modules/undici-types/mock-agent.d.ts +68 -0
  830. package/vendor/ink/node_modules/undici-types/mock-call-history.d.ts +111 -0
  831. package/vendor/ink/node_modules/undici-types/mock-client.d.ts +27 -0
  832. package/vendor/ink/node_modules/undici-types/mock-errors.d.ts +12 -0
  833. package/vendor/ink/node_modules/undici-types/mock-interceptor.d.ts +94 -0
  834. package/vendor/ink/node_modules/undici-types/mock-pool.d.ts +27 -0
  835. package/vendor/ink/node_modules/undici-types/package.json +55 -0
  836. package/vendor/ink/node_modules/undici-types/patch.d.ts +29 -0
  837. package/vendor/ink/node_modules/undici-types/pool-stats.d.ts +19 -0
  838. package/vendor/ink/node_modules/undici-types/pool.d.ts +41 -0
  839. package/vendor/ink/node_modules/undici-types/proxy-agent.d.ts +29 -0
  840. package/vendor/ink/node_modules/undici-types/readable.d.ts +68 -0
  841. package/vendor/ink/node_modules/undici-types/retry-agent.d.ts +8 -0
  842. package/vendor/ink/node_modules/undici-types/retry-handler.d.ts +125 -0
  843. package/vendor/ink/node_modules/undici-types/round-robin-pool.d.ts +41 -0
  844. package/vendor/ink/node_modules/undici-types/snapshot-agent.d.ts +109 -0
  845. package/vendor/ink/node_modules/undici-types/util.d.ts +18 -0
  846. package/vendor/ink/node_modules/undici-types/utility.d.ts +7 -0
  847. package/vendor/ink/node_modules/undici-types/webidl.d.ts +341 -0
  848. package/vendor/ink/node_modules/undici-types/websocket.d.ts +186 -0
  849. package/vendor/ink/package.json +201 -0
  850. package/vendor/ink/readme.md +2636 -0
  851. package/bin/swag-agent.js +0 -9
  852. package/dist/server/lib/pg-rate-limiter.d.ts +0 -21
  853. package/dist/server/lib/pg-rate-limiter.js +0 -86
@@ -4,42 +4,49 @@
4
4
  * The parent agent loop injects all dependencies; this module has zero imports
5
5
  * from index.ts (avoids circular deps) and is fully testable in isolation.
6
6
  */
7
+
7
8
  import { randomUUID } from "node:crypto";
8
- import { LoopDetector, estimateCostUsd, sanitizeError, isRetryableError, addPromptCaching, } from "../../shared/agent-core.js";
9
+ import { LoopDetector, estimateCostUsd, sanitizeError, isRetryableError, addPromptCaching, AGENT_DEFAULTS } from "../../shared/agent-core.js";
9
10
  import { buildAPIRequest } from "../../shared/api-client.js";
10
11
  import { MODELS, MODEL_MAP } from "../../shared/constants.js";
11
12
  import { dispatchTools } from "../../shared/tool-dispatch.js";
13
+
14
+ // ============================================================================
15
+ // TYPES
16
+ // ============================================================================
17
+
12
18
  // ============================================================================
13
19
  // TOOL DEFINITION — exposed to parent Opus agent
14
20
  // ============================================================================
21
+
15
22
  export const DELEGATE_TASK_TOOL_DEF = {
16
- name: "delegate_task",
17
- description: "Delegate a focused task to a faster sub-agent. Use for: data lookups, " +
18
- "multi-step tool chains, analytics queries, inventory checks, customer lookups. " +
19
- "Do NOT delegate decisions requiring your judgment or creative writing.",
20
- input_schema: {
21
- type: "object",
22
- properties: {
23
- prompt: {
24
- type: "string",
25
- description: "Clear instruction for the sub-agent. Include all context needed.",
26
- },
27
- model: {
28
- type: "string",
29
- enum: ["haiku", "sonnet"],
30
- description: "haiku (fast/$1) for simple lookups. sonnet ($3) for multi-step chains. Default: haiku.",
31
- },
32
- max_turns: {
33
- type: "number",
34
- description: "Max agentic turns (1-12). Default: 6.",
35
- },
36
- },
37
- required: ["prompt"],
23
+ name: "delegate_task",
24
+ description: "Delegate a focused task to a faster sub-agent. Use for: data lookups, " + "multi-step tool chains, analytics queries, inventory checks, customer lookups. " + "Do NOT delegate decisions requiring your judgment or creative writing.",
25
+ input_schema: {
26
+ type: "object",
27
+ properties: {
28
+ prompt: {
29
+ type: "string",
30
+ description: "Clear instruction for the sub-agent. Include all context needed."
31
+ },
32
+ model: {
33
+ type: "string",
34
+ enum: ["haiku", "sonnet"],
35
+ description: "haiku (fast/$1) for simple lookups. sonnet ($3) for multi-step chains. Default: haiku."
36
+ },
37
+ max_turns: {
38
+ type: "number",
39
+ description: "Max agentic turns (1-12). Default: 6."
40
+ }
38
41
  },
42
+ required: ["prompt"]
43
+ }
39
44
  };
45
+
40
46
  // ============================================================================
41
47
  // SUBAGENT SYSTEM PROMPT
42
48
  // ============================================================================
49
+
43
50
  const SUBAGENT_SYSTEM_PROMPT = `You are a focused tool executor. Your job is to complete the delegated task using the available tools, then return a clear summary of the results.
44
51
 
45
52
  Rules:
@@ -48,159 +55,250 @@ Rules:
48
55
  - If a tool fails, try an alternative approach or report the failure
49
56
  - Be concise in your final response
50
57
  - Always include store_id in tool calls when it's available in your context`;
58
+
51
59
  // ============================================================================
52
60
  // CORE LOOP
53
61
  // ============================================================================
54
- const SUBAGENT_MAX_OUTPUT_TOKENS = 8192;
62
+
63
+ const SUBAGENT_MAX_OUTPUT_TOKENS = AGENT_DEFAULTS.subagentMaxTokens;
55
64
  export async function runServerSubagent(opts) {
56
- const { anthropic, prompt, model: modelAlias, maxTurns, tools, executeTool, onProgress, clientDisconnected, startedAt, maxDurationMs, storeId, } = opts;
57
- const subagentId = `sub-${randomUUID().slice(0, 8)}`;
58
- const modelId = MODEL_MAP[modelAlias] || MODELS.HAIKU;
59
- const loopDetector = new LoopDetector();
60
- const toolsUsed = [];
61
- let totalIn = 0;
62
- let totalOut = 0;
63
- let cacheCreation = 0;
64
- let cacheRead = 0;
65
- // Enable thinking for capable models; adjust max tokens for Opus
66
- const shouldThink = modelAlias === "opus" || modelAlias === "sonnet";
67
- const effectiveMaxTokens = modelAlias === "opus" ? 16384 : SUBAGENT_MAX_OUTPUT_TOKENS;
68
- // Context management for subagent: clear at 60K, keep 2, no compaction
69
- const apiConfig = buildAPIRequest({
70
- model: modelId,
71
- contextProfile: "subagent",
72
- thinkingEnabled: shouldThink,
73
- maxOutputTokens: effectiveMaxTokens,
65
+ const {
66
+ anthropic,
67
+ prompt,
68
+ model: modelAlias,
69
+ maxTurns,
70
+ tools,
71
+ executeTool,
72
+ onProgress,
73
+ clientDisconnected,
74
+ startedAt,
75
+ maxDurationMs,
76
+ storeId
77
+ } = opts;
78
+ const subagentId = `sub-${randomUUID().slice(0, 8)}`;
79
+ const modelId = MODEL_MAP[modelAlias] || MODELS.HAIKU;
80
+ const loopDetector = new LoopDetector();
81
+ const toolsUsed = [];
82
+ let totalIn = 0;
83
+ let totalOut = 0;
84
+ let cacheCreation = 0;
85
+ let cacheRead = 0;
86
+
87
+ // Enable thinking for capable models; adjust max tokens for Opus
88
+ const shouldThink = modelAlias === "opus" || modelAlias === "sonnet";
89
+ const baseMaxTokens = opts.maxOutputTokens ?? SUBAGENT_MAX_OUTPUT_TOKENS;
90
+ const effectiveMaxTokens = modelAlias === "opus" ? Math.max(16384, baseMaxTokens) : baseMaxTokens;
91
+ const effectiveTemperature = opts.temperature ?? AGENT_DEFAULTS.subagentTemperature;
92
+
93
+ // Context management for subagent: clear at 60K, keep 2, no compaction
94
+ const apiConfig = buildAPIRequest({
95
+ model: modelId,
96
+ contextProfile: "subagent",
97
+ thinkingEnabled: shouldThink,
98
+ maxOutputTokens: effectiveMaxTokens
99
+ });
100
+ const system = storeId ? `${SUBAGENT_SYSTEM_PROMPT}\n\nstore_id: ${storeId}` : SUBAGENT_SYSTEM_PROMPT;
101
+ const messages = [{
102
+ role: "user",
103
+ content: prompt
104
+ }];
105
+ onProgress?.({
106
+ subagentId,
107
+ event: "started",
108
+ model: modelAlias
109
+ });
110
+ let turn = 0;
111
+ let lastText = "";
112
+ while (turn < maxTurns) {
113
+ // Abort checks
114
+ if (clientDisconnected.value) {
115
+ return makeResult(false, "Client disconnected", totalIn, totalOut, modelId, toolsUsed, turn, cacheRead, cacheCreation);
116
+ }
117
+ if (Date.now() - startedAt > maxDurationMs) {
118
+ return makeResult(false, "Parent request timeout", totalIn, totalOut, modelId, toolsUsed, turn, cacheRead, cacheCreation);
119
+ }
120
+ turn++;
121
+ loopDetector.resetTurn();
122
+ onProgress?.({
123
+ subagentId,
124
+ event: "turn",
125
+ turn,
126
+ maxTurns
74
127
  });
75
- const system = storeId
76
- ? `${SUBAGENT_SYSTEM_PROMPT}\n\nstore_id: ${storeId}`
77
- : SUBAGENT_SYSTEM_PROMPT;
78
- const messages = [{ role: "user", content: prompt }];
79
- onProgress?.({ subagentId, event: "started", model: modelAlias });
80
- let turn = 0;
81
- let lastText = "";
82
- while (turn < maxTurns) {
83
- // Abort checks
84
- if (clientDisconnected.value) {
85
- return makeResult(false, "Client disconnected", totalIn, totalOut, modelId, toolsUsed, turn, cacheRead, cacheCreation);
86
- }
87
- if (Date.now() - startedAt > maxDurationMs) {
88
- return makeResult(false, "Parent request timeout", totalIn, totalOut, modelId, toolsUsed, turn, cacheRead, cacheCreation);
89
- }
90
- turn++;
91
- loopDetector.resetTurn();
92
- onProgress?.({ subagentId, event: "turn", turn, maxTurns });
93
- // Apply prompt caching to tools and messages for cache hits on repeated context
94
- const { tools: cachedTools, messages: cachedMessages } = addPromptCaching(tools, messages);
95
- // Non-streaming API call with retry
96
- let response;
97
- try {
98
- response = await withSubagentRetry(async () => {
99
- return await anthropic.beta.messages.create({
100
- model: modelId,
101
- max_tokens: apiConfig.maxTokens,
102
- temperature: shouldThink ? 1 : 0.3, // Anthropic requires temp=1 with thinking
103
- system,
104
- tools: cachedTools,
105
- messages: cachedMessages,
106
- betas: apiConfig.betas,
107
- context_management: apiConfig.contextManagement,
108
- ...(apiConfig.thinking ? { thinking: apiConfig.thinking } : {}),
109
- });
110
- });
111
- }
112
- catch (err) {
113
- const errMsg = sanitizeError(err);
114
- onProgress?.({ subagentId, event: "error", output: errMsg });
115
- return makeResult(false, `API error: ${errMsg}`, totalIn, totalOut, modelId, toolsUsed, turn, cacheRead, cacheCreation);
116
- }
117
- // Track tokens (including cache for accurate cost)
118
- totalIn += response.usage?.input_tokens || 0;
119
- totalOut += response.usage?.output_tokens || 0;
120
- cacheCreation += response.usage?.cache_creation_input_tokens ?? 0;
121
- cacheRead += response.usage?.cache_read_input_tokens ?? 0;
122
- // Extract text and tool_use blocks
123
- const textBlocks = [];
124
- const toolUseBlocks = [];
125
- for (const block of response.content) {
126
- if (block.type === "text") {
127
- textBlocks.push(block.text);
128
- }
129
- else if (block.type === "tool_use") {
130
- toolUseBlocks.push({ id: block.id, name: block.name, input: block.input });
131
- }
132
- }
133
- lastText = textBlocks.join("\n");
134
- // No tool calls → done
135
- if (toolUseBlocks.length === 0) {
136
- onProgress?.({ subagentId, event: "done", output: lastText });
137
- return makeResult(true, lastText, totalIn, totalOut, modelId, toolsUsed, turn, cacheRead, cacheCreation);
138
- }
139
- // Execute tools in parallel via dispatchTools
140
- const toolExecutor = async (name, input) => {
141
- toolsUsed.push(name);
142
- onProgress?.({ subagentId, event: "tool_start", toolName: name });
143
- try {
144
- const result = await executeTool(name, input);
145
- onProgress?.({ subagentId, event: "tool_result", toolName: name, toolSuccess: result.success });
146
- return {
147
- success: result.success,
148
- output: result.success ? JSON.stringify(result.data) : (result.error || "Unknown error"),
149
- };
150
- }
151
- catch (err) {
152
- const errMsg = sanitizeError(err);
153
- onProgress?.({ subagentId, event: "tool_result", toolName: name, toolSuccess: false });
154
- return { success: false, output: errMsg };
155
- }
156
- };
157
- const { results: toolResults, bailOut, bailMessage } = await dispatchTools(toolUseBlocks, toolExecutor, { loopDetector, maxConcurrent: 3 });
158
- if (bailOut) {
159
- onProgress?.({ subagentId, event: "error", output: bailMessage });
160
- return makeResult(false, bailMessage || "Too many errors", totalIn, totalOut, modelId, toolsUsed, turn, cacheRead, cacheCreation);
161
- }
162
- // Append for next turn
163
- messages.push({
164
- role: "assistant",
165
- content: response.content,
128
+
129
+ // Apply prompt caching to tools and messages for cache hits on repeated context
130
+ const {
131
+ tools: cachedTools,
132
+ messages: cachedMessages
133
+ } = addPromptCaching(tools, messages);
134
+
135
+ // Non-streaming API call with retry
136
+ let response;
137
+ try {
138
+ response = await withSubagentRetry(async () => {
139
+ return await anthropic.beta.messages.create({
140
+ model: modelId,
141
+ max_tokens: apiConfig.maxTokens,
142
+ temperature: shouldThink ? 1 : effectiveTemperature,
143
+ // Anthropic requires temp=1 with thinking
144
+ system,
145
+ tools: cachedTools,
146
+ messages: cachedMessages,
147
+ betas: apiConfig.betas,
148
+ context_management: apiConfig.contextManagement,
149
+ ...(apiConfig.thinking ? {
150
+ thinking: apiConfig.thinking
151
+ } : {})
152
+ });
153
+ });
154
+ } catch (err) {
155
+ const errMsg = sanitizeError(err);
156
+ onProgress?.({
157
+ subagentId,
158
+ event: "error",
159
+ output: errMsg
160
+ });
161
+ return makeResult(false, `API error: ${errMsg}`, totalIn, totalOut, modelId, toolsUsed, turn, cacheRead, cacheCreation);
162
+ }
163
+
164
+ // Track tokens (including cache for accurate cost)
165
+ totalIn += response.usage?.input_tokens || 0;
166
+ totalOut += response.usage?.output_tokens || 0;
167
+ cacheCreation += response.usage?.cache_creation_input_tokens ?? 0;
168
+ cacheRead += response.usage?.cache_read_input_tokens ?? 0;
169
+
170
+ // Extract text and tool_use blocks
171
+ const textBlocks = [];
172
+ const toolUseBlocks = [];
173
+ for (const block of response.content) {
174
+ if (block.type === "text") {
175
+ textBlocks.push(block.text);
176
+ } else if (block.type === "tool_use") {
177
+ toolUseBlocks.push({
178
+ id: block.id,
179
+ name: block.name,
180
+ input: block.input
181
+ });
182
+ }
183
+ }
184
+ lastText = textBlocks.join("\n");
185
+
186
+ // No tool calls → done
187
+ if (toolUseBlocks.length === 0) {
188
+ onProgress?.({
189
+ subagentId,
190
+ event: "done",
191
+ output: lastText
192
+ });
193
+ return makeResult(true, lastText, totalIn, totalOut, modelId, toolsUsed, turn, cacheRead, cacheCreation);
194
+ }
195
+
196
+ // Execute tools in parallel via dispatchTools
197
+ const toolExecutor = async (name, input) => {
198
+ toolsUsed.push(name);
199
+ onProgress?.({
200
+ subagentId,
201
+ event: "tool_start",
202
+ toolName: name
203
+ });
204
+ try {
205
+ const result = await executeTool(name, input);
206
+ onProgress?.({
207
+ subagentId,
208
+ event: "tool_result",
209
+ toolName: name,
210
+ toolSuccess: result.success
166
211
  });
167
- messages.push({
168
- role: "user",
169
- content: toolResults,
212
+ return {
213
+ success: result.success,
214
+ output: result.success ? JSON.stringify(result.data) : result.error || "Unknown error"
215
+ };
216
+ } catch (err) {
217
+ const errMsg = sanitizeError(err);
218
+ onProgress?.({
219
+ subagentId,
220
+ event: "tool_result",
221
+ toolName: name,
222
+ toolSuccess: false
170
223
  });
224
+ return {
225
+ success: false,
226
+ output: errMsg
227
+ };
228
+ }
229
+ };
230
+ const {
231
+ results: toolResults,
232
+ bailOut,
233
+ bailMessage
234
+ } = await dispatchTools(toolUseBlocks, toolExecutor, {
235
+ loopDetector,
236
+ maxConcurrent: AGENT_DEFAULTS.maxConcurrentTools,
237
+ batchErrorLimit: AGENT_DEFAULTS.loopBatchErrorLimit
238
+ });
239
+ if (bailOut) {
240
+ onProgress?.({
241
+ subagentId,
242
+ event: "error",
243
+ output: bailMessage
244
+ });
245
+ return makeResult(false, bailMessage || "Too many errors", totalIn, totalOut, modelId, toolsUsed, turn, cacheRead, cacheCreation);
171
246
  }
172
- // Exhausted max turns
173
- onProgress?.({ subagentId, event: "done", output: lastText });
174
- return makeResult(true, lastText || "(subagent completed without text response)", totalIn, totalOut, modelId, toolsUsed, turn, cacheRead, cacheCreation);
247
+
248
+ // Append for next turn
249
+ messages.push({
250
+ role: "assistant",
251
+ content: response.content
252
+ });
253
+ messages.push({
254
+ role: "user",
255
+ content: toolResults
256
+ });
257
+ }
258
+
259
+ // Exhausted max turns
260
+ onProgress?.({
261
+ subagentId,
262
+ event: "done",
263
+ output: lastText
264
+ });
265
+ return makeResult(true, lastText || "(subagent completed without text response)", totalIn, totalOut, modelId, toolsUsed, turn, cacheRead, cacheCreation);
175
266
  }
267
+
176
268
  // ============================================================================
177
269
  // HELPERS
178
270
  // ============================================================================
271
+
179
272
  function makeResult(success, output, inputTokens, outputTokens, modelId, toolsUsed, turnCount, cacheReadTokens = 0, cacheCreationTokens = 0) {
180
- return {
181
- success,
182
- output,
183
- tokensUsed: { input: inputTokens, output: outputTokens, cacheRead: cacheReadTokens, cacheCreation: cacheCreationTokens },
184
- costUsd: estimateCostUsd(inputTokens, outputTokens, modelId, 0, cacheReadTokens, cacheCreationTokens),
185
- toolsUsed: [...new Set(toolsUsed)],
186
- turnCount,
187
- stopReason: "end_turn", // subagent always runs to completion or error
188
- };
273
+ return {
274
+ success,
275
+ output,
276
+ tokensUsed: {
277
+ input: inputTokens,
278
+ output: outputTokens,
279
+ cacheRead: cacheReadTokens,
280
+ cacheCreation: cacheCreationTokens
281
+ },
282
+ costUsd: estimateCostUsd(inputTokens, outputTokens, modelId, 0, cacheReadTokens, cacheCreationTokens),
283
+ toolsUsed: [...new Set(toolsUsed)],
284
+ turnCount,
285
+ stopReason: "end_turn" // subagent always runs to completion or error
286
+ };
189
287
  }
190
288
  async function withSubagentRetry(fn, maxRetries = 2) {
191
- let lastError;
192
- for (let attempt = 0; attempt <= maxRetries; attempt++) {
193
- try {
194
- return await fn();
195
- }
196
- catch (err) {
197
- lastError = err;
198
- if (attempt < maxRetries && isRetryableError(err)) {
199
- await new Promise((resolve) => setTimeout(resolve, 1000 * Math.pow(2, attempt)));
200
- continue;
201
- }
202
- throw err;
203
- }
289
+ let lastError;
290
+ for (let attempt = 0; attempt <= maxRetries; attempt++) {
291
+ try {
292
+ return await fn();
293
+ } catch (err) {
294
+ lastError = err;
295
+ if (attempt < maxRetries && isRetryableError(err)) {
296
+ await new Promise(resolve => setTimeout(resolve, 1000 * Math.pow(2, attempt)));
297
+ continue;
298
+ }
299
+ throw err;
204
300
  }
205
- throw lastError;
301
+ }
302
+ throw lastError;
206
303
  }
304
+ //# sourceMappingURL=server-subagent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server-subagent.js","names":["randomUUID","LoopDetector","estimateCostUsd","sanitizeError","isRetryableError","addPromptCaching","AGENT_DEFAULTS","buildAPIRequest","MODELS","MODEL_MAP","dispatchTools","DELEGATE_TASK_TOOL_DEF","name","description","input_schema","type","properties","prompt","model","enum","max_turns","required","SUBAGENT_SYSTEM_PROMPT","SUBAGENT_MAX_OUTPUT_TOKENS","subagentMaxTokens","runServerSubagent","opts","anthropic","modelAlias","maxTurns","tools","executeTool","onProgress","clientDisconnected","startedAt","maxDurationMs","storeId","subagentId","slice","modelId","HAIKU","loopDetector","toolsUsed","totalIn","totalOut","cacheCreation","cacheRead","shouldThink","baseMaxTokens","maxOutputTokens","effectiveMaxTokens","Math","max","effectiveTemperature","temperature","subagentTemperature","apiConfig","contextProfile","thinkingEnabled","system","messages","role","content","event","turn","lastText","value","makeResult","Date","now","resetTurn","cachedTools","cachedMessages","response","withSubagentRetry","beta","create","max_tokens","maxTokens","betas","context_management","contextManagement","thinking","err","errMsg","output","usage","input_tokens","output_tokens","cache_creation_input_tokens","cache_read_input_tokens","textBlocks","toolUseBlocks","block","push","text","id","input","join","length","toolExecutor","toolName","result","toolSuccess","success","JSON","stringify","data","error","results","toolResults","bailOut","bailMessage","maxConcurrent","maxConcurrentTools","batchErrorLimit","loopBatchErrorLimit","inputTokens","outputTokens","turnCount","cacheReadTokens","cacheCreationTokens","tokensUsed","costUsd","Set","stopReason","fn","maxRetries","lastError","attempt","Promise","resolve","setTimeout","pow"],"sources":["../../../src/server/lib/server-subagent.ts"],"sourcesContent":["/**\n * Server Subagent — enables Opus to delegate tool execution to Haiku/Sonnet.\n *\n * The parent agent loop injects all dependencies; this module has zero imports\n * from index.ts (avoids circular deps) and is fully testable in isolation.\n */\n\nimport { randomUUID } from \"node:crypto\";\nimport type Anthropic from \"@anthropic-ai/sdk\";\nimport type { SupabaseClient } from \"@supabase/supabase-js\";\n\nimport {\n LoopDetector,\n estimateCostUsd,\n sanitizeError,\n isRetryableError,\n addPromptCaching,\n AGENT_DEFAULTS,\n} from \"../../shared/agent-core.js\";\nimport { buildAPIRequest } from \"../../shared/api-client.js\";\nimport { MODELS, MODEL_MAP } from \"../../shared/constants.js\";\nimport { dispatchTools } from \"../../shared/tool-dispatch.js\";\n\n// ============================================================================\n// TYPES\n// ============================================================================\n\nexport interface SubagentResult {\n success: boolean;\n output: string;\n tokensUsed: { input: number; output: number; cacheRead: number; cacheCreation: number };\n costUsd: number;\n toolsUsed: string[];\n turnCount: number;\n stopReason: string;\n}\n\nexport interface SubagentProgressEvent {\n subagentId: string;\n event: \"started\" | \"tool_start\" | \"tool_result\" | \"turn\" | \"done\" | \"error\";\n model?: string;\n toolName?: string;\n toolSuccess?: boolean;\n turn?: number;\n maxTurns?: number;\n output?: string;\n}\n\nexport type SubagentProgressCallback = (event: SubagentProgressEvent) => void;\n\nexport interface RunServerSubagentOptions {\n anthropic: Anthropic;\n supabase: SupabaseClient;\n storeId: string | undefined;\n prompt: string;\n model: \"haiku\" | \"sonnet\" | \"opus\";\n maxTurns: number;\n tools: Array<{ name: string; description: string; input_schema: Record<string, unknown> }>;\n executeTool: (\n toolName: string,\n args: Record<string, unknown>,\n ) => Promise<{ success: boolean; data?: unknown; error?: string }>;\n onProgress?: SubagentProgressCallback;\n clientDisconnected: { value: boolean };\n startedAt: number;\n maxDurationMs: number;\n // Parent-controlled overrides from context_config\n maxOutputTokens?: number; // Default: SUBAGENT_MAX_OUTPUT_TOKENS (8192)\n temperature?: number; // Default: 0.3\n}\n\n// ============================================================================\n// TOOL DEFINITION — exposed to parent Opus agent\n// ============================================================================\n\nexport const DELEGATE_TASK_TOOL_DEF = {\n name: \"delegate_task\",\n description:\n \"Delegate a focused task to a faster sub-agent. Use for: data lookups, \" +\n \"multi-step tool chains, analytics queries, inventory checks, customer lookups. \" +\n \"Do NOT delegate decisions requiring your judgment or creative writing.\",\n input_schema: {\n type: \"object\" as const,\n properties: {\n prompt: {\n type: \"string\",\n description: \"Clear instruction for the sub-agent. Include all context needed.\",\n },\n model: {\n type: \"string\",\n enum: [\"haiku\", \"sonnet\"],\n description: \"haiku (fast/$1) for simple lookups. sonnet ($3) for multi-step chains. Default: haiku.\",\n },\n max_turns: {\n type: \"number\",\n description: \"Max agentic turns (1-12). Default: 6.\",\n },\n },\n required: [\"prompt\"],\n },\n};\n\n// ============================================================================\n// SUBAGENT SYSTEM PROMPT\n// ============================================================================\n\nconst SUBAGENT_SYSTEM_PROMPT = `You are a focused tool executor. Your job is to complete the delegated task using the available tools, then return a clear summary of the results.\n\nRules:\n- Execute tools as needed to fulfill the request\n- Return factual results — do not add opinions or recommendations\n- If a tool fails, try an alternative approach or report the failure\n- Be concise in your final response\n- Always include store_id in tool calls when it's available in your context`;\n\n// ============================================================================\n// CORE LOOP\n// ============================================================================\n\nconst SUBAGENT_MAX_OUTPUT_TOKENS = AGENT_DEFAULTS.subagentMaxTokens;\nexport async function runServerSubagent(opts: RunServerSubagentOptions): Promise<SubagentResult> {\n const {\n anthropic,\n prompt,\n model: modelAlias,\n maxTurns,\n tools,\n executeTool,\n onProgress,\n clientDisconnected,\n startedAt,\n maxDurationMs,\n storeId,\n } = opts;\n\n const subagentId = `sub-${randomUUID().slice(0, 8)}`;\n const modelId = MODEL_MAP[modelAlias] || MODELS.HAIKU;\n const loopDetector = new LoopDetector();\n const toolsUsed: string[] = [];\n\n let totalIn = 0;\n let totalOut = 0;\n let cacheCreation = 0;\n let cacheRead = 0;\n\n // Enable thinking for capable models; adjust max tokens for Opus\n const shouldThink = modelAlias === \"opus\" || modelAlias === \"sonnet\";\n const baseMaxTokens = opts.maxOutputTokens ?? SUBAGENT_MAX_OUTPUT_TOKENS;\n const effectiveMaxTokens = modelAlias === \"opus\" ? Math.max(16384, baseMaxTokens) : baseMaxTokens;\n const effectiveTemperature = opts.temperature ?? AGENT_DEFAULTS.subagentTemperature;\n\n // Context management for subagent: clear at 60K, keep 2, no compaction\n const apiConfig = buildAPIRequest({\n model: modelId,\n contextProfile: \"subagent\",\n thinkingEnabled: shouldThink,\n maxOutputTokens: effectiveMaxTokens,\n });\n\n const system = storeId\n ? `${SUBAGENT_SYSTEM_PROMPT}\\n\\nstore_id: ${storeId}`\n : SUBAGENT_SYSTEM_PROMPT;\n\n const messages: Anthropic.MessageParam[] = [{ role: \"user\", content: prompt }];\n\n onProgress?.({ subagentId, event: \"started\", model: modelAlias });\n\n let turn = 0;\n let lastText = \"\";\n\n while (turn < maxTurns) {\n // Abort checks\n if (clientDisconnected.value) {\n return makeResult(false, \"Client disconnected\", totalIn, totalOut, modelId, toolsUsed, turn, cacheRead, cacheCreation);\n }\n if (Date.now() - startedAt > maxDurationMs) {\n return makeResult(false, \"Parent request timeout\", totalIn, totalOut, modelId, toolsUsed, turn, cacheRead, cacheCreation);\n }\n\n turn++;\n loopDetector.resetTurn();\n\n onProgress?.({ subagentId, event: \"turn\", turn, maxTurns });\n\n // Apply prompt caching to tools and messages for cache hits on repeated context\n const { tools: cachedTools, messages: cachedMessages } = addPromptCaching(\n tools as any, messages as any,\n );\n\n // Non-streaming API call with retry\n let response: Anthropic.Message;\n try {\n response = await withSubagentRetry(async () => {\n return await anthropic.beta.messages.create({\n model: modelId,\n max_tokens: apiConfig.maxTokens,\n temperature: shouldThink ? 1 : effectiveTemperature, // Anthropic requires temp=1 with thinking\n system,\n tools: cachedTools as any,\n messages: cachedMessages as any,\n betas: apiConfig.betas,\n context_management: apiConfig.contextManagement,\n ...(apiConfig.thinking ? { thinking: apiConfig.thinking } : {}),\n } as any) as unknown as Anthropic.Message;\n });\n } catch (err) {\n const errMsg = sanitizeError(err);\n onProgress?.({ subagentId, event: \"error\", output: errMsg });\n return makeResult(false, `API error: ${errMsg}`, totalIn, totalOut, modelId, toolsUsed, turn, cacheRead, cacheCreation);\n }\n\n // Track tokens (including cache for accurate cost)\n totalIn += response.usage?.input_tokens || 0;\n totalOut += response.usage?.output_tokens || 0;\n cacheCreation += (response.usage as any)?.cache_creation_input_tokens ?? 0;\n cacheRead += (response.usage as any)?.cache_read_input_tokens ?? 0;\n\n // Extract text and tool_use blocks\n const textBlocks: string[] = [];\n const toolUseBlocks: Array<{ id: string; name: string; input: Record<string, unknown> }> = [];\n\n for (const block of response.content) {\n if (block.type === \"text\") {\n textBlocks.push(block.text);\n } else if (block.type === \"tool_use\") {\n toolUseBlocks.push({ id: block.id, name: block.name, input: block.input as Record<string, unknown> });\n }\n }\n\n lastText = textBlocks.join(\"\\n\");\n\n // No tool calls → done\n if (toolUseBlocks.length === 0) {\n onProgress?.({ subagentId, event: \"done\", output: lastText });\n return makeResult(true, lastText, totalIn, totalOut, modelId, toolsUsed, turn, cacheRead, cacheCreation);\n }\n\n // Execute tools in parallel via dispatchTools\n const toolExecutor = async (name: string, input: Record<string, unknown>) => {\n toolsUsed.push(name);\n onProgress?.({ subagentId, event: \"tool_start\", toolName: name });\n try {\n const result = await executeTool(name, input);\n onProgress?.({ subagentId, event: \"tool_result\", toolName: name, toolSuccess: result.success });\n return {\n success: result.success,\n output: result.success ? JSON.stringify(result.data) : (result.error || \"Unknown error\"),\n };\n } catch (err) {\n const errMsg = sanitizeError(err);\n onProgress?.({ subagentId, event: \"tool_result\", toolName: name, toolSuccess: false });\n return { success: false, output: errMsg };\n }\n };\n\n const { results: toolResults, bailOut, bailMessage } = await dispatchTools(\n toolUseBlocks as any,\n toolExecutor,\n { loopDetector, maxConcurrent: AGENT_DEFAULTS.maxConcurrentTools, batchErrorLimit: AGENT_DEFAULTS.loopBatchErrorLimit },\n );\n\n if (bailOut) {\n onProgress?.({ subagentId, event: \"error\", output: bailMessage });\n return makeResult(false, bailMessage || \"Too many errors\", totalIn, totalOut, modelId, toolsUsed, turn, cacheRead, cacheCreation);\n }\n\n // Append for next turn\n messages.push({\n role: \"assistant\",\n content: response.content as any,\n });\n messages.push({\n role: \"user\",\n content: toolResults as any,\n });\n }\n\n // Exhausted max turns\n onProgress?.({ subagentId, event: \"done\", output: lastText });\n return makeResult(true, lastText || \"(subagent completed without text response)\", totalIn, totalOut, modelId, toolsUsed, turn, cacheRead, cacheCreation);\n}\n\n// ============================================================================\n// HELPERS\n// ============================================================================\n\nfunction makeResult(\n success: boolean,\n output: string,\n inputTokens: number,\n outputTokens: number,\n modelId: string,\n toolsUsed: string[],\n turnCount: number,\n cacheReadTokens = 0,\n cacheCreationTokens = 0,\n): SubagentResult {\n return {\n success,\n output,\n tokensUsed: { input: inputTokens, output: outputTokens, cacheRead: cacheReadTokens, cacheCreation: cacheCreationTokens },\n costUsd: estimateCostUsd(inputTokens, outputTokens, modelId, 0, cacheReadTokens, cacheCreationTokens),\n toolsUsed: [...new Set(toolsUsed)],\n turnCount,\n stopReason: \"end_turn\", // subagent always runs to completion or error\n };\n}\n\nasync function withSubagentRetry<T>(fn: () => Promise<T>, maxRetries = 2): Promise<T> {\n let lastError: unknown;\n for (let attempt = 0; attempt <= maxRetries; attempt++) {\n try {\n return await fn();\n } catch (err) {\n lastError = err;\n if (attempt < maxRetries && isRetryableError(err)) {\n await new Promise((resolve) => setTimeout(resolve, 1000 * Math.pow(2, attempt)));\n continue;\n }\n throw err;\n }\n }\n throw lastError;\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,UAAU,QAAQ,aAAa;AAIxC,SACEC,YAAY,EACZC,eAAe,EACfC,aAAa,EACbC,gBAAgB,EAChBC,gBAAgB,EAChBC,cAAc,QACT,4BAA4B;AACnC,SAASC,eAAe,QAAQ,4BAA4B;AAC5D,SAASC,MAAM,EAAEC,SAAS,QAAQ,2BAA2B;AAC7D,SAASC,aAAa,QAAQ,+BAA+B;;AAE7D;AACA;AACA;;AA8CA;AACA;AACA;;AAEA,OAAO,MAAMC,sBAAsB,GAAG;EACpCC,IAAI,EAAE,eAAe;EACrBC,WAAW,EACT,wEAAwE,GACxE,iFAAiF,GACjF,wEAAwE;EAC1EC,YAAY,EAAE;IACZC,IAAI,EAAE,QAAiB;IACvBC,UAAU,EAAE;MACVC,MAAM,EAAE;QACNF,IAAI,EAAE,QAAQ;QACdF,WAAW,EAAE;MACf,CAAC;MACDK,KAAK,EAAE;QACLH,IAAI,EAAE,QAAQ;QACdI,IAAI,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC;QACzBN,WAAW,EAAE;MACf,CAAC;MACDO,SAAS,EAAE;QACTL,IAAI,EAAE,QAAQ;QACdF,WAAW,EAAE;MACf;IACF,CAAC;IACDQ,QAAQ,EAAE,CAAC,QAAQ;EACrB;AACF,CAAC;;AAED;AACA;AACA;;AAEA,MAAMC,sBAAsB,GAAG;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,4EAA4E;;AAE5E;AACA;AACA;;AAEA,MAAMC,0BAA0B,GAAGjB,cAAc,CAACkB,iBAAiB;AACnE,OAAO,eAAeC,iBAAiBA,CAACC,IAA8B,EAA2B;EAC/F,MAAM;IACJC,SAAS;IACTV,MAAM;IACNC,KAAK,EAAEU,UAAU;IACjBC,QAAQ;IACRC,KAAK;IACLC,WAAW;IACXC,UAAU;IACVC,kBAAkB;IAClBC,SAAS;IACTC,aAAa;IACbC;EACF,CAAC,GAAGV,IAAI;EAER,MAAMW,UAAU,GAAG,OAAOrC,UAAU,CAAC,CAAC,CAACsC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;EACpD,MAAMC,OAAO,GAAG9B,SAAS,CAACmB,UAAU,CAAC,IAAIpB,MAAM,CAACgC,KAAK;EACrD,MAAMC,YAAY,GAAG,IAAIxC,YAAY,CAAC,CAAC;EACvC,MAAMyC,SAAmB,GAAG,EAAE;EAE9B,IAAIC,OAAO,GAAG,CAAC;EACf,IAAIC,QAAQ,GAAG,CAAC;EAChB,IAAIC,aAAa,GAAG,CAAC;EACrB,IAAIC,SAAS,GAAG,CAAC;;EAEjB;EACA,MAAMC,WAAW,GAAGnB,UAAU,KAAK,MAAM,IAAIA,UAAU,KAAK,QAAQ;EACpE,MAAMoB,aAAa,GAAGtB,IAAI,CAACuB,eAAe,IAAI1B,0BAA0B;EACxE,MAAM2B,kBAAkB,GAAGtB,UAAU,KAAK,MAAM,GAAGuB,IAAI,CAACC,GAAG,CAAC,KAAK,EAAEJ,aAAa,CAAC,GAAGA,aAAa;EACjG,MAAMK,oBAAoB,GAAG3B,IAAI,CAAC4B,WAAW,IAAIhD,cAAc,CAACiD,mBAAmB;;EAEnF;EACA,MAAMC,SAAS,GAAGjD,eAAe,CAAC;IAChCW,KAAK,EAAEqB,OAAO;IACdkB,cAAc,EAAE,UAAU;IAC1BC,eAAe,EAAEX,WAAW;IAC5BE,eAAe,EAAEC;EACnB,CAAC,CAAC;EAEF,MAAMS,MAAM,GAAGvB,OAAO,GAClB,GAAGd,sBAAsB,iBAAiBc,OAAO,EAAE,GACnDd,sBAAsB;EAE1B,MAAMsC,QAAkC,GAAG,CAAC;IAAEC,IAAI,EAAE,MAAM;IAAEC,OAAO,EAAE7C;EAAO,CAAC,CAAC;EAE9Ee,UAAU,GAAG;IAAEK,UAAU;IAAE0B,KAAK,EAAE,SAAS;IAAE7C,KAAK,EAAEU;EAAW,CAAC,CAAC;EAEjE,IAAIoC,IAAI,GAAG,CAAC;EACZ,IAAIC,QAAQ,GAAG,EAAE;EAEjB,OAAOD,IAAI,GAAGnC,QAAQ,EAAE;IACtB;IACA,IAAII,kBAAkB,CAACiC,KAAK,EAAE;MAC5B,OAAOC,UAAU,CAAC,KAAK,EAAE,qBAAqB,EAAExB,OAAO,EAAEC,QAAQ,EAAEL,OAAO,EAAEG,SAAS,EAAEsB,IAAI,EAAElB,SAAS,EAAED,aAAa,CAAC;IACxH;IACA,IAAIuB,IAAI,CAACC,GAAG,CAAC,CAAC,GAAGnC,SAAS,GAAGC,aAAa,EAAE;MAC1C,OAAOgC,UAAU,CAAC,KAAK,EAAE,wBAAwB,EAAExB,OAAO,EAAEC,QAAQ,EAAEL,OAAO,EAAEG,SAAS,EAAEsB,IAAI,EAAElB,SAAS,EAAED,aAAa,CAAC;IAC3H;IAEAmB,IAAI,EAAE;IACNvB,YAAY,CAAC6B,SAAS,CAAC,CAAC;IAExBtC,UAAU,GAAG;MAAEK,UAAU;MAAE0B,KAAK,EAAE,MAAM;MAAEC,IAAI;MAAEnC;IAAS,CAAC,CAAC;;IAE3D;IACA,MAAM;MAAEC,KAAK,EAAEyC,WAAW;MAAEX,QAAQ,EAAEY;IAAe,CAAC,GAAGnE,gBAAgB,CACvEyB,KAAK,EAAS8B,QAChB,CAAC;;IAED;IACA,IAAIa,QAA2B;IAC/B,IAAI;MACFA,QAAQ,GAAG,MAAMC,iBAAiB,CAAC,YAAY;QAC7C,OAAO,MAAM/C,SAAS,CAACgD,IAAI,CAACf,QAAQ,CAACgB,MAAM,CAAC;UAC1C1D,KAAK,EAAEqB,OAAO;UACdsC,UAAU,EAAErB,SAAS,CAACsB,SAAS;UAC/BxB,WAAW,EAAEP,WAAW,GAAG,CAAC,GAAGM,oBAAoB;UAAG;UACtDM,MAAM;UACN7B,KAAK,EAAEyC,WAAkB;UACzBX,QAAQ,EAAEY,cAAqB;UAC/BO,KAAK,EAAEvB,SAAS,CAACuB,KAAK;UACtBC,kBAAkB,EAAExB,SAAS,CAACyB,iBAAiB;UAC/C,IAAIzB,SAAS,CAAC0B,QAAQ,GAAG;YAAEA,QAAQ,EAAE1B,SAAS,CAAC0B;UAAS,CAAC,GAAG,CAAC,CAAC;QAChE,CAAQ,CAAC;MACX,CAAC,CAAC;IACJ,CAAC,CAAC,OAAOC,GAAG,EAAE;MACZ,MAAMC,MAAM,GAAGjF,aAAa,CAACgF,GAAG,CAAC;MACjCnD,UAAU,GAAG;QAAEK,UAAU;QAAE0B,KAAK,EAAE,OAAO;QAAEsB,MAAM,EAAED;MAAO,CAAC,CAAC;MAC5D,OAAOjB,UAAU,CAAC,KAAK,EAAE,cAAciB,MAAM,EAAE,EAAEzC,OAAO,EAAEC,QAAQ,EAAEL,OAAO,EAAEG,SAAS,EAAEsB,IAAI,EAAElB,SAAS,EAAED,aAAa,CAAC;IACzH;;IAEA;IACAF,OAAO,IAAI8B,QAAQ,CAACa,KAAK,EAAEC,YAAY,IAAI,CAAC;IAC5C3C,QAAQ,IAAI6B,QAAQ,CAACa,KAAK,EAAEE,aAAa,IAAI,CAAC;IAC9C3C,aAAa,IAAK4B,QAAQ,CAACa,KAAK,EAAUG,2BAA2B,IAAI,CAAC;IAC1E3C,SAAS,IAAK2B,QAAQ,CAACa,KAAK,EAAUI,uBAAuB,IAAI,CAAC;;IAElE;IACA,MAAMC,UAAoB,GAAG,EAAE;IAC/B,MAAMC,aAAkF,GAAG,EAAE;IAE7F,KAAK,MAAMC,KAAK,IAAIpB,QAAQ,CAACX,OAAO,EAAE;MACpC,IAAI+B,KAAK,CAAC9E,IAAI,KAAK,MAAM,EAAE;QACzB4E,UAAU,CAACG,IAAI,CAACD,KAAK,CAACE,IAAI,CAAC;MAC7B,CAAC,MAAM,IAAIF,KAAK,CAAC9E,IAAI,KAAK,UAAU,EAAE;QACpC6E,aAAa,CAACE,IAAI,CAAC;UAAEE,EAAE,EAAEH,KAAK,CAACG,EAAE;UAAEpF,IAAI,EAAEiF,KAAK,CAACjF,IAAI;UAAEqF,KAAK,EAAEJ,KAAK,CAACI;QAAiC,CAAC,CAAC;MACvG;IACF;IAEAhC,QAAQ,GAAG0B,UAAU,CAACO,IAAI,CAAC,IAAI,CAAC;;IAEhC;IACA,IAAIN,aAAa,CAACO,MAAM,KAAK,CAAC,EAAE;MAC9BnE,UAAU,GAAG;QAAEK,UAAU;QAAE0B,KAAK,EAAE,MAAM;QAAEsB,MAAM,EAAEpB;MAAS,CAAC,CAAC;MAC7D,OAAOE,UAAU,CAAC,IAAI,EAAEF,QAAQ,EAAEtB,OAAO,EAAEC,QAAQ,EAAEL,OAAO,EAAEG,SAAS,EAAEsB,IAAI,EAAElB,SAAS,EAAED,aAAa,CAAC;IAC1G;;IAEA;IACA,MAAMuD,YAAY,GAAG,MAAAA,CAAOxF,IAAY,EAAEqF,KAA8B,KAAK;MAC3EvD,SAAS,CAACoD,IAAI,CAAClF,IAAI,CAAC;MACpBoB,UAAU,GAAG;QAAEK,UAAU;QAAE0B,KAAK,EAAE,YAAY;QAAEsC,QAAQ,EAAEzF;MAAK,CAAC,CAAC;MACjE,IAAI;QACF,MAAM0F,MAAM,GAAG,MAAMvE,WAAW,CAACnB,IAAI,EAAEqF,KAAK,CAAC;QAC7CjE,UAAU,GAAG;UAAEK,UAAU;UAAE0B,KAAK,EAAE,aAAa;UAAEsC,QAAQ,EAAEzF,IAAI;UAAE2F,WAAW,EAAED,MAAM,CAACE;QAAQ,CAAC,CAAC;QAC/F,OAAO;UACLA,OAAO,EAAEF,MAAM,CAACE,OAAO;UACvBnB,MAAM,EAAEiB,MAAM,CAACE,OAAO,GAAGC,IAAI,CAACC,SAAS,CAACJ,MAAM,CAACK,IAAI,CAAC,GAAIL,MAAM,CAACM,KAAK,IAAI;QAC1E,CAAC;MACH,CAAC,CAAC,OAAOzB,GAAG,EAAE;QACZ,MAAMC,MAAM,GAAGjF,aAAa,CAACgF,GAAG,CAAC;QACjCnD,UAAU,GAAG;UAAEK,UAAU;UAAE0B,KAAK,EAAE,aAAa;UAAEsC,QAAQ,EAAEzF,IAAI;UAAE2F,WAAW,EAAE;QAAM,CAAC,CAAC;QACtF,OAAO;UAAEC,OAAO,EAAE,KAAK;UAAEnB,MAAM,EAAED;QAAO,CAAC;MAC3C;IACF,CAAC;IAED,MAAM;MAAEyB,OAAO,EAAEC,WAAW;MAAEC,OAAO;MAAEC;IAAY,CAAC,GAAG,MAAMtG,aAAa,CACxEkF,aAAa,EACbQ,YAAY,EACZ;MAAE3D,YAAY;MAAEwE,aAAa,EAAE3G,cAAc,CAAC4G,kBAAkB;MAAEC,eAAe,EAAE7G,cAAc,CAAC8G;IAAoB,CACxH,CAAC;IAED,IAAIL,OAAO,EAAE;MACX/E,UAAU,GAAG;QAAEK,UAAU;QAAE0B,KAAK,EAAE,OAAO;QAAEsB,MAAM,EAAE2B;MAAY,CAAC,CAAC;MACjE,OAAO7C,UAAU,CAAC,KAAK,EAAE6C,WAAW,IAAI,iBAAiB,EAAErE,OAAO,EAAEC,QAAQ,EAAEL,OAAO,EAAEG,SAAS,EAAEsB,IAAI,EAAElB,SAAS,EAAED,aAAa,CAAC;IACnI;;IAEA;IACAe,QAAQ,CAACkC,IAAI,CAAC;MACZjC,IAAI,EAAE,WAAW;MACjBC,OAAO,EAAEW,QAAQ,CAACX;IACpB,CAAC,CAAC;IACFF,QAAQ,CAACkC,IAAI,CAAC;MACZjC,IAAI,EAAE,MAAM;MACZC,OAAO,EAAEgD;IACX,CAAC,CAAC;EACJ;;EAEA;EACA9E,UAAU,GAAG;IAAEK,UAAU;IAAE0B,KAAK,EAAE,MAAM;IAAEsB,MAAM,EAAEpB;EAAS,CAAC,CAAC;EAC7D,OAAOE,UAAU,CAAC,IAAI,EAAEF,QAAQ,IAAI,4CAA4C,EAAEtB,OAAO,EAAEC,QAAQ,EAAEL,OAAO,EAAEG,SAAS,EAAEsB,IAAI,EAAElB,SAAS,EAAED,aAAa,CAAC;AAC1J;;AAEA;AACA;AACA;;AAEA,SAASsB,UAAUA,CACjBqC,OAAgB,EAChBnB,MAAc,EACdgC,WAAmB,EACnBC,YAAoB,EACpB/E,OAAe,EACfG,SAAmB,EACnB6E,SAAiB,EACjBC,eAAe,GAAG,CAAC,EACnBC,mBAAmB,GAAG,CAAC,EACP;EAChB,OAAO;IACLjB,OAAO;IACPnB,MAAM;IACNqC,UAAU,EAAE;MAAEzB,KAAK,EAAEoB,WAAW;MAAEhC,MAAM,EAAEiC,YAAY;MAAExE,SAAS,EAAE0E,eAAe;MAAE3E,aAAa,EAAE4E;IAAoB,CAAC;IACxHE,OAAO,EAAEzH,eAAe,CAACmH,WAAW,EAAEC,YAAY,EAAE/E,OAAO,EAAE,CAAC,EAAEiF,eAAe,EAAEC,mBAAmB,CAAC;IACrG/E,SAAS,EAAE,CAAC,GAAG,IAAIkF,GAAG,CAAClF,SAAS,CAAC,CAAC;IAClC6E,SAAS;IACTM,UAAU,EAAE,UAAU,CAAE;EAC1B,CAAC;AACH;AAEA,eAAenD,iBAAiBA,CAAIoD,EAAoB,EAAEC,UAAU,GAAG,CAAC,EAAc;EACpF,IAAIC,SAAkB;EACtB,KAAK,IAAIC,OAAO,GAAG,CAAC,EAAEA,OAAO,IAAIF,UAAU,EAAEE,OAAO,EAAE,EAAE;IACtD,IAAI;MACF,OAAO,MAAMH,EAAE,CAAC,CAAC;IACnB,CAAC,CAAC,OAAO3C,GAAG,EAAE;MACZ6C,SAAS,GAAG7C,GAAG;MACf,IAAI8C,OAAO,GAAGF,UAAU,IAAI3H,gBAAgB,CAAC+E,GAAG,CAAC,EAAE;QACjD,MAAM,IAAI+C,OAAO,CAAEC,OAAO,IAAKC,UAAU,CAACD,OAAO,EAAE,IAAI,GAAGhF,IAAI,CAACkF,GAAG,CAAC,CAAC,EAAEJ,OAAO,CAAC,CAAC,CAAC;QAChF;MACF;MACA,MAAM9C,GAAG;IACX;EACF;EACA,MAAM6C,SAAS;AACjB","ignoreList":[]}