whale-code 6.5.5 → 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 (847) 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 +5 -1
  73. package/dist/cli/services/agent-config.js +66 -36
  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 +976 -688
  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.js +187 -169
  107. package/dist/cli/services/error-logger.js.map +1 -0
  108. package/dist/cli/services/file-history.d.ts +1 -1
  109. package/dist/cli/services/file-history.js +50 -54
  110. package/dist/cli/services/file-history.js.map +1 -0
  111. package/dist/cli/services/format-server-response.js +332 -372
  112. package/dist/cli/services/format-server-response.js.map +1 -0
  113. package/dist/cli/services/git-context.js +61 -45
  114. package/dist/cli/services/git-context.js.map +1 -0
  115. package/dist/cli/services/hooks.d.ts +2 -2
  116. package/dist/cli/services/hooks.js +195 -180
  117. package/dist/cli/services/hooks.js.map +1 -0
  118. package/dist/cli/services/ink-incremental.d.ts +19 -0
  119. package/dist/cli/services/ink-incremental.js +59 -0
  120. package/dist/cli/services/ink-incremental.js.map +1 -0
  121. package/dist/cli/services/ink-resize-fix.js +54 -44
  122. package/dist/cli/services/ink-resize-fix.js.map +1 -0
  123. package/dist/cli/services/ink-sync-output.d.ts +12 -0
  124. package/dist/cli/services/ink-sync-output.js +16 -0
  125. package/dist/cli/services/ink-sync-output.js.map +1 -0
  126. package/dist/cli/services/interactive-tools.js +268 -212
  127. package/dist/cli/services/interactive-tools.js.map +1 -0
  128. package/dist/cli/services/keybinding-manager.d.ts +11 -1
  129. package/dist/cli/services/keybinding-manager.js +126 -63
  130. package/dist/cli/services/keybinding-manager.js.map +1 -0
  131. package/dist/cli/services/local-tools.d.ts +1 -1
  132. package/dist/cli/services/local-tools.js +939 -656
  133. package/dist/cli/services/local-tools.js.map +1 -0
  134. package/dist/cli/services/lsp-manager.js +757 -594
  135. package/dist/cli/services/lsp-manager.js.map +1 -0
  136. package/dist/cli/services/mcp-client.d.ts +1 -1
  137. package/dist/cli/services/mcp-client.js +173 -134
  138. package/dist/cli/services/mcp-client.js.map +1 -0
  139. package/dist/cli/services/memory-manager.js +53 -40
  140. package/dist/cli/services/memory-manager.js.map +1 -0
  141. package/dist/cli/services/model-manager.js +55 -40
  142. package/dist/cli/services/model-manager.js.map +1 -0
  143. package/dist/cli/services/model-router.js +115 -85
  144. package/dist/cli/services/model-router.js.map +1 -0
  145. package/dist/cli/services/paths.d.ts +30 -0
  146. package/dist/cli/services/paths.js +81 -0
  147. package/dist/cli/services/paths.js.map +1 -0
  148. package/dist/cli/services/permission-modes.js +32 -25
  149. package/dist/cli/services/permission-modes.js.map +1 -0
  150. package/dist/cli/services/rewind.js +182 -168
  151. package/dist/cli/services/rewind.js.map +1 -0
  152. package/dist/cli/services/ripgrep.js +115 -115
  153. package/dist/cli/services/ripgrep.js.map +1 -0
  154. package/dist/cli/services/sandbox.d.ts +1 -1
  155. package/dist/cli/services/sandbox.js +58 -37
  156. package/dist/cli/services/sandbox.js.map +1 -0
  157. package/dist/cli/services/server-tools.js +738 -565
  158. package/dist/cli/services/server-tools.js.map +1 -0
  159. package/dist/cli/services/session-persistence.js +69 -74
  160. package/dist/cli/services/session-persistence.js.map +1 -0
  161. package/dist/cli/services/subagent-worker.js +42 -27
  162. package/dist/cli/services/subagent-worker.js.map +1 -0
  163. package/dist/cli/services/subagent.d.ts +2 -0
  164. package/dist/cli/services/subagent.js +605 -433
  165. package/dist/cli/services/subagent.js.map +1 -0
  166. package/dist/cli/services/system-prompt.js +86 -78
  167. package/dist/cli/services/system-prompt.js.map +1 -0
  168. package/dist/cli/services/task-decomposer.d.ts +1 -1
  169. package/dist/cli/services/task-decomposer.js +172 -139
  170. package/dist/cli/services/task-decomposer.js.map +1 -0
  171. package/dist/cli/services/team-lead.d.ts +2 -2
  172. package/dist/cli/services/team-lead.js +727 -529
  173. package/dist/cli/services/team-lead.js.map +1 -0
  174. package/dist/cli/services/team-state.js +319 -319
  175. package/dist/cli/services/team-state.js.map +1 -0
  176. package/dist/cli/services/teammate.d.ts +8 -2
  177. package/dist/cli/services/teammate.js +857 -569
  178. package/dist/cli/services/teammate.js.map +1 -0
  179. package/dist/cli/services/telemetry.d.ts +6 -1
  180. package/dist/cli/services/telemetry.js +180 -157
  181. package/dist/cli/services/telemetry.js.map +1 -0
  182. package/dist/cli/services/tools/agent-tools.d.ts +3 -3
  183. package/dist/cli/services/tools/agent-tools.js +480 -322
  184. package/dist/cli/services/tools/agent-tools.js.map +1 -0
  185. package/dist/cli/services/tools/file-ops.js +563 -450
  186. package/dist/cli/services/tools/file-ops.js.map +1 -0
  187. package/dist/cli/services/tools/search-tools.js +231 -162
  188. package/dist/cli/services/tools/search-tools.js.map +1 -0
  189. package/dist/cli/services/tools/shell-exec.js +197 -151
  190. package/dist/cli/services/tools/shell-exec.js.map +1 -0
  191. package/dist/cli/services/tools/task-manager.js +206 -173
  192. package/dist/cli/services/tools/task-manager.js.map +1 -0
  193. package/dist/cli/services/tools/web-tools.js +388 -341
  194. package/dist/cli/services/tools/web-tools.js.map +1 -0
  195. package/dist/cli/setup/SetupApp.d.ts +2 -2
  196. package/dist/cli/setup/SetupApp.js +608 -160
  197. package/dist/cli/setup/SetupApp.js.map +1 -0
  198. package/dist/cli/shared/ErrorBoundary.d.ts +22 -0
  199. package/dist/cli/shared/ErrorBoundary.js +73 -0
  200. package/dist/cli/shared/ErrorBoundary.js.map +1 -0
  201. package/dist/cli/shared/MatrixIntro.js +66 -69
  202. package/dist/cli/shared/MatrixIntro.js.map +1 -0
  203. package/dist/cli/shared/SpinnerSlot.d.ts +14 -0
  204. package/dist/cli/shared/SpinnerSlot.js +63 -0
  205. package/dist/cli/shared/SpinnerSlot.js.map +1 -0
  206. package/dist/cli/shared/Theme.d.ts +1 -1
  207. package/dist/cli/shared/Theme.js +136 -92
  208. package/dist/cli/shared/Theme.js.map +1 -0
  209. package/dist/cli/shared/WhaleBanner.js +99 -11
  210. package/dist/cli/shared/WhaleBanner.js.map +1 -0
  211. package/dist/cli/shared/markdown.d.ts +3 -1
  212. package/dist/cli/shared/markdown.js +736 -674
  213. package/dist/cli/shared/markdown.js.map +1 -0
  214. package/dist/cli/shared/marked-terminal.d.js +2 -0
  215. package/dist/cli/shared/marked-terminal.d.js.map +1 -0
  216. package/dist/cli/shared/theme-manager.js +99 -90
  217. package/dist/cli/shared/theme-manager.js.map +1 -0
  218. package/dist/cli/shared/theme-presets.js +256 -254
  219. package/dist/cli/shared/theme-presets.js.map +1 -0
  220. package/dist/cli/status/StatusApp.js +235 -86
  221. package/dist/cli/status/StatusApp.js.map +1 -0
  222. package/dist/cli/stores/StoreApp.js +275 -65
  223. package/dist/cli/stores/StoreApp.js.map +1 -0
  224. package/dist/index.d.ts +2 -2
  225. package/dist/index.js +509 -396
  226. package/dist/index.js.map +1 -0
  227. package/dist/local-agent/connection.d.ts +2 -2
  228. package/dist/local-agent/connection.js +352 -293
  229. package/dist/local-agent/connection.js.map +1 -0
  230. package/dist/local-agent/discovery.js +259 -122
  231. package/dist/local-agent/discovery.js.map +1 -0
  232. package/dist/local-agent/executor.js +216 -193
  233. package/dist/local-agent/executor.js.map +1 -0
  234. package/dist/local-agent/index.d.ts +2 -2
  235. package/dist/local-agent/index.js +156 -156
  236. package/dist/local-agent/index.js.map +1 -0
  237. package/dist/node/adapters/base.js +18 -8
  238. package/dist/node/adapters/base.js.map +1 -0
  239. package/dist/node/adapters/discord.js +286 -275
  240. package/dist/node/adapters/discord.js.map +1 -0
  241. package/dist/node/adapters/email.js +189 -202
  242. package/dist/node/adapters/email.js.map +1 -0
  243. package/dist/node/adapters/imessage.js +145 -142
  244. package/dist/node/adapters/imessage.js.map +1 -0
  245. package/dist/node/adapters/slack.js +237 -236
  246. package/dist/node/adapters/slack.js.map +1 -0
  247. package/dist/node/adapters/sms.js +149 -151
  248. package/dist/node/adapters/sms.js.map +1 -0
  249. package/dist/node/adapters/telegram.js +88 -92
  250. package/dist/node/adapters/telegram.js.map +1 -0
  251. package/dist/node/adapters/webchat.js +160 -136
  252. package/dist/node/adapters/webchat.js.map +1 -0
  253. package/dist/node/adapters/whatsapp.js +212 -215
  254. package/dist/node/adapters/whatsapp.js.map +1 -0
  255. package/dist/node/cli.js +884 -653
  256. package/dist/node/cli.js.map +1 -0
  257. package/dist/node/config.js +20 -18
  258. package/dist/node/config.js.map +1 -0
  259. package/dist/node/gateway-client.js +191 -181
  260. package/dist/node/gateway-client.js.map +1 -0
  261. package/dist/node/portal/clipboard.js +161 -130
  262. package/dist/node/portal/clipboard.js.map +1 -0
  263. package/dist/node/portal/discovery.js +51 -45
  264. package/dist/node/portal/discovery.js.map +1 -0
  265. package/dist/node/portal/forward.js +64 -58
  266. package/dist/node/portal/forward.js.map +1 -0
  267. package/dist/node/portal/index.js +246 -221
  268. package/dist/node/portal/index.js.map +1 -0
  269. package/dist/node/portal/multiplexer.js +192 -182
  270. package/dist/node/portal/multiplexer.js.map +1 -0
  271. package/dist/node/portal/permissions.js +102 -70
  272. package/dist/node/portal/permissions.js.map +1 -0
  273. package/dist/node/portal/protocol.js +153 -116
  274. package/dist/node/portal/protocol.js.map +1 -0
  275. package/dist/node/portal/screen.js +80 -69
  276. package/dist/node/portal/screen.js.map +1 -0
  277. package/dist/node/portal/session.js +124 -117
  278. package/dist/node/portal/session.js.map +1 -0
  279. package/dist/node/portal/shell.js +140 -113
  280. package/dist/node/portal/shell.js.map +1 -0
  281. package/dist/node/portal/stream.js +77 -75
  282. package/dist/node/portal/stream.js.map +1 -0
  283. package/dist/node/portal/transfer.js +190 -167
  284. package/dist/node/portal/transfer.js.map +1 -0
  285. package/dist/node/portal/ui.js +124 -99
  286. package/dist/node/portal/ui.js.map +1 -0
  287. package/dist/node/remote-desktop/compile-helper.js +50 -45
  288. package/dist/node/remote-desktop/compile-helper.js.map +1 -0
  289. package/dist/node/remote-desktop/index.js +215 -187
  290. package/dist/node/remote-desktop/index.js.map +1 -0
  291. package/dist/node/remote-desktop/protocol.js +45 -29
  292. package/dist/node/remote-desktop/protocol.js.map +1 -0
  293. package/dist/node/runtime.js +493 -410
  294. package/dist/node/runtime.js.map +1 -0
  295. package/dist/server/handlers/__test-utils__/test-db.js +39 -89
  296. package/dist/server/handlers/__test-utils__/test-db.js.map +1 -0
  297. package/dist/server/handlers/analytics.js +467 -261
  298. package/dist/server/handlers/analytics.js.map +1 -0
  299. package/dist/server/handlers/api-docs.js +1030 -895
  300. package/dist/server/handlers/api-docs.js.map +1 -0
  301. package/dist/server/handlers/api-keys.js +291 -242
  302. package/dist/server/handlers/api-keys.js.map +1 -0
  303. package/dist/server/handlers/billing.js +330 -239
  304. package/dist/server/handlers/billing.js.map +1 -0
  305. package/dist/server/handlers/browser.js +468 -395
  306. package/dist/server/handlers/browser.js.map +1 -0
  307. package/dist/server/handlers/catalog.js +1377 -978
  308. package/dist/server/handlers/catalog.js.map +1 -0
  309. package/dist/server/handlers/clickhouse.js +157 -109
  310. package/dist/server/handlers/clickhouse.js.map +1 -0
  311. package/dist/server/handlers/comms.js +1439 -984
  312. package/dist/server/handlers/comms.js.map +1 -0
  313. package/dist/server/handlers/creations.js +461 -394
  314. package/dist/server/handlers/creations.js.map +1 -0
  315. package/dist/server/handlers/crm.js +1082 -791
  316. package/dist/server/handlers/crm.js.map +1 -0
  317. package/dist/server/handlers/discovery.js +251 -232
  318. package/dist/server/handlers/discovery.js.map +1 -0
  319. package/dist/server/handlers/embeddings.js +241 -164
  320. package/dist/server/handlers/embeddings.js.map +1 -0
  321. package/dist/server/handlers/enrichment.js +887 -718
  322. package/dist/server/handlers/enrichment.js.map +1 -0
  323. package/dist/server/handlers/image-gen.js +467 -376
  324. package/dist/server/handlers/image-gen.js.map +1 -0
  325. package/dist/server/handlers/inventory.js +797 -424
  326. package/dist/server/handlers/inventory.js.map +1 -0
  327. package/dist/server/handlers/kali.js +272 -230
  328. package/dist/server/handlers/kali.js.map +1 -0
  329. package/dist/server/handlers/llm-providers.js +803 -580
  330. package/dist/server/handlers/llm-providers.js.map +1 -0
  331. package/dist/server/handlers/local-agent.js +133 -105
  332. package/dist/server/handlers/local-agent.js.map +1 -0
  333. package/dist/server/handlers/media.js +1179 -857
  334. package/dist/server/handlers/media.js.map +1 -0
  335. package/dist/server/handlers/meta-ads.js +2669 -2093
  336. package/dist/server/handlers/meta-ads.js.map +1 -0
  337. package/dist/server/handlers/nodes.js +1321 -913
  338. package/dist/server/handlers/nodes.js.map +1 -0
  339. package/dist/server/handlers/operations.js +183 -157
  340. package/dist/server/handlers/operations.js.map +1 -0
  341. package/dist/server/handlers/platform.js +346 -210
  342. package/dist/server/handlers/platform.js.map +1 -0
  343. package/dist/server/handlers/remove-bg.js +118 -86
  344. package/dist/server/handlers/remove-bg.js.map +1 -0
  345. package/dist/server/handlers/storefront.js +586 -446
  346. package/dist/server/handlers/storefront.js.map +1 -0
  347. package/dist/server/handlers/supply-chain.js +546 -326
  348. package/dist/server/handlers/supply-chain.js.map +1 -0
  349. package/dist/server/handlers/transcription.js +106 -97
  350. package/dist/server/handlers/transcription.js.map +1 -0
  351. package/dist/server/handlers/video-gen.js +593 -424
  352. package/dist/server/handlers/video-gen.js.map +1 -0
  353. package/dist/server/handlers/voice.js +1458 -1039
  354. package/dist/server/handlers/voice.js.map +1 -0
  355. package/dist/server/handlers/workflow-steps.js +2837 -2116
  356. package/dist/server/handlers/workflow-steps.js.map +1 -0
  357. package/dist/server/handlers/workflows.js +1630 -933
  358. package/dist/server/handlers/workflows.js.map +1 -0
  359. package/dist/server/index.js +3167 -2422
  360. package/dist/server/index.js.map +1 -0
  361. package/dist/server/lib/batch-client.js +471 -409
  362. package/dist/server/lib/batch-client.js.map +1 -0
  363. package/dist/server/lib/clickhouse-buffer.js +118 -104
  364. package/dist/server/lib/clickhouse-buffer.js.map +1 -0
  365. package/dist/server/lib/clickhouse-client.js +107 -107
  366. package/dist/server/lib/clickhouse-client.js.map +1 -0
  367. package/dist/server/lib/coa-renderer.js +1786 -356
  368. package/dist/server/lib/coa-renderer.js.map +1 -0
  369. package/dist/server/lib/code-worker-pool.js +227 -177
  370. package/dist/server/lib/code-worker-pool.js.map +1 -0
  371. package/dist/server/lib/code-worker.js +174 -164
  372. package/dist/server/lib/code-worker.js.map +1 -0
  373. package/dist/server/lib/compaction-service.d.ts +2 -12
  374. package/dist/server/lib/compaction-service.js +74 -184
  375. package/dist/server/lib/compaction-service.js.map +1 -0
  376. package/dist/server/lib/logger.js +36 -24
  377. package/dist/server/lib/logger.js.map +1 -0
  378. package/dist/server/lib/otel.js +101 -80
  379. package/dist/server/lib/otel.js.map +1 -0
  380. package/dist/server/lib/pdf-renderer.js +952 -788
  381. package/dist/server/lib/pdf-renderer.js.map +1 -0
  382. package/dist/server/lib/prompt-sanitizer.js +188 -108
  383. package/dist/server/lib/prompt-sanitizer.js.map +1 -0
  384. package/dist/server/lib/provider-capabilities.js +136 -138
  385. package/dist/server/lib/provider-capabilities.js.map +1 -0
  386. package/dist/server/lib/provider-failover.js +190 -168
  387. package/dist/server/lib/provider-failover.js.map +1 -0
  388. package/dist/server/lib/rate-limiter.js +186 -117
  389. package/dist/server/lib/rate-limiter.js.map +1 -0
  390. package/dist/server/lib/react-pdf-layout.js +551 -382
  391. package/dist/server/lib/react-pdf-layout.js.map +1 -0
  392. package/dist/server/lib/server-agent-loop.d.ts +4 -1
  393. package/dist/server/lib/server-agent-loop.js +906 -634
  394. package/dist/server/lib/server-agent-loop.js.map +1 -0
  395. package/dist/server/lib/server-subagent.js +260 -164
  396. package/dist/server/lib/server-subagent.js.map +1 -0
  397. package/dist/server/lib/session-checkpoint.js +105 -96
  398. package/dist/server/lib/session-checkpoint.js.map +1 -0
  399. package/dist/server/lib/ssrf-guard.js +193 -184
  400. package/dist/server/lib/ssrf-guard.js.map +1 -0
  401. package/dist/server/lib/supabase-client.js +94 -82
  402. package/dist/server/lib/supabase-client.js.map +1 -0
  403. package/dist/server/lib/template-resolver.js +154 -176
  404. package/dist/server/lib/template-resolver.js.map +1 -0
  405. package/dist/server/lib/utils.js +242 -133
  406. package/dist/server/lib/utils.js.map +1 -0
  407. package/dist/server/local-agent-gateway.d.ts +2 -2
  408. package/dist/server/local-agent-gateway.js +785 -627
  409. package/dist/server/local-agent-gateway.js.map +1 -0
  410. package/dist/server/providers/anthropic.js +250 -172
  411. package/dist/server/providers/anthropic.js.map +1 -0
  412. package/dist/server/providers/bedrock.js +217 -158
  413. package/dist/server/providers/bedrock.js.map +1 -0
  414. package/dist/server/providers/gemini.js +548 -418
  415. package/dist/server/providers/gemini.js.map +1 -0
  416. package/dist/server/providers/openai.js +571 -437
  417. package/dist/server/providers/openai.js.map +1 -0
  418. package/dist/server/providers/registry.js +23 -18
  419. package/dist/server/providers/registry.js.map +1 -0
  420. package/dist/server/providers/shared.js +123 -95
  421. package/dist/server/providers/shared.js.map +1 -0
  422. package/dist/server/providers/types.js +1 -11
  423. package/dist/server/providers/types.js.map +1 -0
  424. package/dist/server/proxy-handlers.js +209 -165
  425. package/dist/server/proxy-handlers.js.map +1 -0
  426. package/dist/server/tool-router.js +959 -599
  427. package/dist/server/tool-router.js.map +1 -0
  428. package/dist/server/validation.js +248 -188
  429. package/dist/server/validation.js.map +1 -0
  430. package/dist/server/worker.js +202 -133
  431. package/dist/server/worker.js.map +1 -0
  432. package/dist/setup.d.ts +2 -2
  433. package/dist/setup.js +151 -147
  434. package/dist/setup.js.map +1 -0
  435. package/dist/shared/agent-core.d.ts +115 -26
  436. package/dist/shared/agent-core.js +956 -522
  437. package/dist/shared/agent-core.js.map +1 -0
  438. package/dist/shared/anthropic-types.js +1 -6
  439. package/dist/shared/anthropic-types.js.map +1 -0
  440. package/dist/shared/api-client.d.ts +16 -9
  441. package/dist/shared/api-client.js +419 -327
  442. package/dist/shared/api-client.js.map +1 -0
  443. package/dist/shared/compaction.d.ts +36 -0
  444. package/dist/shared/compaction.js +138 -0
  445. package/dist/shared/compaction.js.map +1 -0
  446. package/dist/shared/constants.js +67 -64
  447. package/dist/shared/constants.js.map +1 -0
  448. package/dist/shared/sse-parser.js +221 -219
  449. package/dist/shared/sse-parser.js.map +1 -0
  450. package/dist/shared/tool-dispatch.d.ts +4 -0
  451. package/dist/shared/tool-dispatch.js +226 -165
  452. package/dist/shared/tool-dispatch.js.map +1 -0
  453. package/dist/shared/types.js +1 -6
  454. package/dist/shared/types.js.map +1 -0
  455. package/dist/types/cli-highlight.d.js +2 -0
  456. package/dist/types/cli-highlight.d.js.map +1 -0
  457. package/dist/types/diff.d.js +2 -0
  458. package/dist/types/diff.d.js.map +1 -0
  459. package/dist/types/pdf-parse.d.js +2 -0
  460. package/dist/types/pdf-parse.d.js.map +1 -0
  461. package/dist/updater.d.ts +1 -1
  462. package/dist/updater.js +118 -92
  463. package/dist/updater.js.map +1 -0
  464. package/dist/webchat/widget.js +227 -380
  465. package/dist/webchat/widget.js.map +1 -0
  466. package/package.json +22 -10
  467. package/vendor/ink/build/ansi-tokenizer.d.ts +38 -0
  468. package/vendor/ink/build/ansi-tokenizer.js +316 -0
  469. package/vendor/ink/build/ansi-tokenizer.js.map +1 -0
  470. package/vendor/ink/build/apply-styles.js +175 -0
  471. package/vendor/ink/build/build-layout.js +77 -0
  472. package/vendor/ink/build/calculate-wrapped-text.js +53 -0
  473. package/vendor/ink/build/colorize.d.ts +3 -0
  474. package/vendor/ink/build/colorize.js +48 -0
  475. package/vendor/ink/build/colorize.js.map +1 -0
  476. package/vendor/ink/build/components/AccessibilityContext.d.ts +3 -0
  477. package/vendor/ink/build/components/AccessibilityContext.js +5 -0
  478. package/vendor/ink/build/components/AccessibilityContext.js.map +1 -0
  479. package/vendor/ink/build/components/App.d.ts +18 -0
  480. package/vendor/ink/build/components/App.js +351 -0
  481. package/vendor/ink/build/components/App.js.map +1 -0
  482. package/vendor/ink/build/components/AppContext.d.ts +15 -0
  483. package/vendor/ink/build/components/AppContext.js +11 -0
  484. package/vendor/ink/build/components/AppContext.js.map +1 -0
  485. package/vendor/ink/build/components/BackgroundContext.d.ts +4 -0
  486. package/vendor/ink/build/components/BackgroundContext.js +3 -0
  487. package/vendor/ink/build/components/BackgroundContext.js.map +1 -0
  488. package/vendor/ink/build/components/Box.d.ts +117 -0
  489. package/vendor/ink/build/components/Box.js +34 -0
  490. package/vendor/ink/build/components/Box.js.map +1 -0
  491. package/vendor/ink/build/components/Color.js +62 -0
  492. package/vendor/ink/build/components/Cursor.d.ts +83 -0
  493. package/vendor/ink/build/components/Cursor.js +53 -0
  494. package/vendor/ink/build/components/Cursor.js.map +1 -0
  495. package/vendor/ink/build/components/CursorContext.d.ts +11 -0
  496. package/vendor/ink/build/components/CursorContext.js +8 -0
  497. package/vendor/ink/build/components/CursorContext.js.map +1 -0
  498. package/vendor/ink/build/components/ErrorBoundary.d.ts +18 -0
  499. package/vendor/ink/build/components/ErrorBoundary.js +23 -0
  500. package/vendor/ink/build/components/ErrorBoundary.js.map +1 -0
  501. package/vendor/ink/build/components/ErrorOverview.d.ts +6 -0
  502. package/vendor/ink/build/components/ErrorOverview.js +84 -0
  503. package/vendor/ink/build/components/ErrorOverview.js.map +1 -0
  504. package/vendor/ink/build/components/FocusContext.d.ts +16 -0
  505. package/vendor/ink/build/components/FocusContext.js +17 -0
  506. package/vendor/ink/build/components/FocusContext.js.map +1 -0
  507. package/vendor/ink/build/components/Newline.d.ts +13 -0
  508. package/vendor/ink/build/components/Newline.js +8 -0
  509. package/vendor/ink/build/components/Newline.js.map +1 -0
  510. package/vendor/ink/build/components/Spacer.d.ts +7 -0
  511. package/vendor/ink/build/components/Spacer.js +11 -0
  512. package/vendor/ink/build/components/Spacer.js.map +1 -0
  513. package/vendor/ink/build/components/Static.d.ts +24 -0
  514. package/vendor/ink/build/components/Static.js +28 -0
  515. package/vendor/ink/build/components/Static.js.map +1 -0
  516. package/vendor/ink/build/components/StderrContext.d.ts +15 -0
  517. package/vendor/ink/build/components/StderrContext.js +13 -0
  518. package/vendor/ink/build/components/StderrContext.js.map +1 -0
  519. package/vendor/ink/build/components/StdinContext.d.ts +22 -0
  520. package/vendor/ink/build/components/StdinContext.js +19 -0
  521. package/vendor/ink/build/components/StdinContext.js.map +1 -0
  522. package/vendor/ink/build/components/StdoutContext.d.ts +15 -0
  523. package/vendor/ink/build/components/StdoutContext.js +13 -0
  524. package/vendor/ink/build/components/StdoutContext.js.map +1 -0
  525. package/vendor/ink/build/components/Text.d.ts +55 -0
  526. package/vendor/ink/build/components/Text.js +50 -0
  527. package/vendor/ink/build/components/Text.js.map +1 -0
  528. package/vendor/ink/build/components/Transform.d.ts +16 -0
  529. package/vendor/ink/build/components/Transform.js +15 -0
  530. package/vendor/ink/build/components/Transform.js.map +1 -0
  531. package/vendor/ink/build/cursor-helpers.d.ts +38 -0
  532. package/vendor/ink/build/cursor-helpers.js +56 -0
  533. package/vendor/ink/build/cursor-helpers.js.map +1 -0
  534. package/vendor/ink/build/devtools-window-polyfill.d.ts +1 -0
  535. package/vendor/ink/build/devtools-window-polyfill.js +65 -0
  536. package/vendor/ink/build/devtools-window-polyfill.js.map +1 -0
  537. package/vendor/ink/build/devtools.d.ts +1 -0
  538. package/vendor/ink/build/devtools.js +11 -0
  539. package/vendor/ink/build/devtools.js.map +1 -0
  540. package/vendor/ink/build/dom.d.ts +56 -0
  541. package/vendor/ink/build/dom.js +124 -0
  542. package/vendor/ink/build/dom.js.map +1 -0
  543. package/vendor/ink/build/experimental/apply-style.js +140 -0
  544. package/vendor/ink/build/experimental/dom.js +123 -0
  545. package/vendor/ink/build/experimental/output.js +91 -0
  546. package/vendor/ink/build/experimental/reconciler.js +141 -0
  547. package/vendor/ink/build/experimental/renderer.js +81 -0
  548. package/vendor/ink/build/get-max-width.d.ts +3 -0
  549. package/vendor/ink/build/get-max-width.js +10 -0
  550. package/vendor/ink/build/get-max-width.js.map +1 -0
  551. package/vendor/ink/build/hooks/use-app.d.ts +5 -0
  552. package/vendor/ink/build/hooks/use-app.js +8 -0
  553. package/vendor/ink/build/hooks/use-app.js.map +1 -0
  554. package/vendor/ink/build/hooks/use-cursor.d.ts +12 -0
  555. package/vendor/ink/build/hooks/use-cursor.js +29 -0
  556. package/vendor/ink/build/hooks/use-cursor.js.map +1 -0
  557. package/vendor/ink/build/hooks/use-focus-manager.d.ts +28 -0
  558. package/vendor/ink/build/hooks/use-focus-manager.js +17 -0
  559. package/vendor/ink/build/hooks/use-focus-manager.js.map +1 -0
  560. package/vendor/ink/build/hooks/use-focus.d.ts +29 -0
  561. package/vendor/ink/build/hooks/use-focus.js +42 -0
  562. package/vendor/ink/build/hooks/use-focus.js.map +1 -0
  563. package/vendor/ink/build/hooks/use-input.d.ts +131 -0
  564. package/vendor/ink/build/hooks/use-input.js +124 -0
  565. package/vendor/ink/build/hooks/use-input.js.map +1 -0
  566. package/vendor/ink/build/hooks/use-is-screen-reader-enabled.d.ts +5 -0
  567. package/vendor/ink/build/hooks/use-is-screen-reader-enabled.js +11 -0
  568. package/vendor/ink/build/hooks/use-is-screen-reader-enabled.js.map +1 -0
  569. package/vendor/ink/build/hooks/use-stderr.d.ts +5 -0
  570. package/vendor/ink/build/hooks/use-stderr.js +8 -0
  571. package/vendor/ink/build/hooks/use-stderr.js.map +1 -0
  572. package/vendor/ink/build/hooks/use-stdin.d.ts +5 -0
  573. package/vendor/ink/build/hooks/use-stdin.js +8 -0
  574. package/vendor/ink/build/hooks/use-stdin.js.map +1 -0
  575. package/vendor/ink/build/hooks/use-stdout.d.ts +5 -0
  576. package/vendor/ink/build/hooks/use-stdout.js +8 -0
  577. package/vendor/ink/build/hooks/use-stdout.js.map +1 -0
  578. package/vendor/ink/build/hooks/useInput.js +38 -0
  579. package/vendor/ink/build/index.d.ts +34 -0
  580. package/vendor/ink/build/index.js +20 -0
  581. package/vendor/ink/build/index.js.map +1 -0
  582. package/vendor/ink/build/ink.d.ts +90 -0
  583. package/vendor/ink/build/ink.js +654 -0
  584. package/vendor/ink/build/ink.js.map +1 -0
  585. package/vendor/ink/build/input-parser.d.ts +7 -0
  586. package/vendor/ink/build/input-parser.js +154 -0
  587. package/vendor/ink/build/input-parser.js.map +1 -0
  588. package/vendor/ink/build/instance.js +205 -0
  589. package/vendor/ink/build/instances.d.ts +3 -0
  590. package/vendor/ink/build/instances.js +8 -0
  591. package/vendor/ink/build/instances.js.map +1 -0
  592. package/vendor/ink/build/kitty-keyboard.d.ts +23 -0
  593. package/vendor/ink/build/kitty-keyboard.js +32 -0
  594. package/vendor/ink/build/kitty-keyboard.js.map +1 -0
  595. package/vendor/ink/build/layout.d.ts +7 -0
  596. package/vendor/ink/build/layout.js +33 -0
  597. package/vendor/ink/build/layout.js.map +1 -0
  598. package/vendor/ink/build/log-update.d.ts +19 -0
  599. package/vendor/ink/build/log-update.js +243 -0
  600. package/vendor/ink/build/log-update.js.map +1 -0
  601. package/vendor/ink/build/measure-element.d.ts +16 -0
  602. package/vendor/ink/build/measure-element.js +9 -0
  603. package/vendor/ink/build/measure-element.js.map +1 -0
  604. package/vendor/ink/build/measure-text.d.ts +6 -0
  605. package/vendor/ink/build/measure-text.js +21 -0
  606. package/vendor/ink/build/measure-text.js.map +1 -0
  607. package/vendor/ink/build/options.d.ts +52 -0
  608. package/vendor/ink/build/options.js +2 -0
  609. package/vendor/ink/build/options.js.map +1 -0
  610. package/vendor/ink/build/output.d.ts +35 -0
  611. package/vendor/ink/build/output.js +183 -0
  612. package/vendor/ink/build/output.js.map +1 -0
  613. package/vendor/ink/build/parse-keypress.d.ts +22 -0
  614. package/vendor/ink/build/parse-keypress.js +493 -0
  615. package/vendor/ink/build/parse-keypress.js.map +1 -0
  616. package/vendor/ink/build/reconciler.d.ts +4 -0
  617. package/vendor/ink/build/reconciler.js +274 -0
  618. package/vendor/ink/build/reconciler.js.map +1 -0
  619. package/vendor/ink/build/render-background.d.ts +4 -0
  620. package/vendor/ink/build/render-background.js +25 -0
  621. package/vendor/ink/build/render-background.js.map +1 -0
  622. package/vendor/ink/build/render-border.d.ts +4 -0
  623. package/vendor/ink/build/render-border.js +73 -0
  624. package/vendor/ink/build/render-border.js.map +1 -0
  625. package/vendor/ink/build/render-node-to-output.d.ts +14 -0
  626. package/vendor/ink/build/render-node-to-output.js +147 -0
  627. package/vendor/ink/build/render-node-to-output.js.map +1 -0
  628. package/vendor/ink/build/render-to-string.d.ts +38 -0
  629. package/vendor/ink/build/render-to-string.js +115 -0
  630. package/vendor/ink/build/render-to-string.js.map +1 -0
  631. package/vendor/ink/build/render.d.ts +121 -0
  632. package/vendor/ink/build/render.js +55 -0
  633. package/vendor/ink/build/render.js.map +1 -0
  634. package/vendor/ink/build/renderer.d.ts +8 -0
  635. package/vendor/ink/build/renderer.js +55 -0
  636. package/vendor/ink/build/renderer.js.map +1 -0
  637. package/vendor/ink/build/sanitize-ansi.d.ts +2 -0
  638. package/vendor/ink/build/sanitize-ansi.js +27 -0
  639. package/vendor/ink/build/sanitize-ansi.js.map +1 -0
  640. package/vendor/ink/build/screen-reader-update.d.ts +13 -0
  641. package/vendor/ink/build/screen-reader-update.js +38 -0
  642. package/vendor/ink/build/screen-reader-update.js.map +1 -0
  643. package/vendor/ink/build/squash-text-nodes.d.ts +3 -0
  644. package/vendor/ink/build/squash-text-nodes.js +36 -0
  645. package/vendor/ink/build/squash-text-nodes.js.map +1 -0
  646. package/vendor/ink/build/styles.d.ts +240 -0
  647. package/vendor/ink/build/styles.js +232 -0
  648. package/vendor/ink/build/styles.js.map +1 -0
  649. package/vendor/ink/build/utils.d.ts +2 -0
  650. package/vendor/ink/build/utils.js +4 -0
  651. package/vendor/ink/build/utils.js.map +1 -0
  652. package/vendor/ink/build/wrap-text.d.ts +3 -0
  653. package/vendor/ink/build/wrap-text.js +31 -0
  654. package/vendor/ink/build/wrap-text.js.map +1 -0
  655. package/vendor/ink/build/write-synchronized.d.ts +4 -0
  656. package/vendor/ink/build/write-synchronized.js +7 -0
  657. package/vendor/ink/build/write-synchronized.js.map +1 -0
  658. package/vendor/ink/license +10 -0
  659. package/vendor/ink/node_modules/@types/node/LICENSE +21 -0
  660. package/vendor/ink/node_modules/@types/node/README.md +15 -0
  661. package/vendor/ink/node_modules/@types/node/assert/strict.d.ts +105 -0
  662. package/vendor/ink/node_modules/@types/node/assert.d.ts +955 -0
  663. package/vendor/ink/node_modules/@types/node/async_hooks.d.ts +623 -0
  664. package/vendor/ink/node_modules/@types/node/buffer.buffer.d.ts +466 -0
  665. package/vendor/ink/node_modules/@types/node/buffer.d.ts +1810 -0
  666. package/vendor/ink/node_modules/@types/node/child_process.d.ts +1428 -0
  667. package/vendor/ink/node_modules/@types/node/cluster.d.ts +486 -0
  668. package/vendor/ink/node_modules/@types/node/compatibility/iterators.d.ts +21 -0
  669. package/vendor/ink/node_modules/@types/node/console.d.ts +151 -0
  670. package/vendor/ink/node_modules/@types/node/constants.d.ts +20 -0
  671. package/vendor/ink/node_modules/@types/node/crypto.d.ts +4065 -0
  672. package/vendor/ink/node_modules/@types/node/dgram.d.ts +564 -0
  673. package/vendor/ink/node_modules/@types/node/diagnostics_channel.d.ts +576 -0
  674. package/vendor/ink/node_modules/@types/node/dns/promises.d.ts +503 -0
  675. package/vendor/ink/node_modules/@types/node/dns.d.ts +922 -0
  676. package/vendor/ink/node_modules/@types/node/domain.d.ts +166 -0
  677. package/vendor/ink/node_modules/@types/node/events.d.ts +1054 -0
  678. package/vendor/ink/node_modules/@types/node/fs/promises.d.ts +1329 -0
  679. package/vendor/ink/node_modules/@types/node/fs.d.ts +4676 -0
  680. package/vendor/ink/node_modules/@types/node/globals.d.ts +150 -0
  681. package/vendor/ink/node_modules/@types/node/globals.typedarray.d.ts +101 -0
  682. package/vendor/ink/node_modules/@types/node/http.d.ts +2167 -0
  683. package/vendor/ink/node_modules/@types/node/http2.d.ts +2480 -0
  684. package/vendor/ink/node_modules/@types/node/https.d.ts +405 -0
  685. package/vendor/ink/node_modules/@types/node/index.d.ts +115 -0
  686. package/vendor/ink/node_modules/@types/node/inspector/promises.d.ts +41 -0
  687. package/vendor/ink/node_modules/@types/node/inspector.d.ts +224 -0
  688. package/vendor/ink/node_modules/@types/node/inspector.generated.d.ts +4226 -0
  689. package/vendor/ink/node_modules/@types/node/module.d.ts +819 -0
  690. package/vendor/ink/node_modules/@types/node/net.d.ts +933 -0
  691. package/vendor/ink/node_modules/@types/node/os.d.ts +507 -0
  692. package/vendor/ink/node_modules/@types/node/package.json +155 -0
  693. package/vendor/ink/node_modules/@types/node/path/posix.d.ts +8 -0
  694. package/vendor/ink/node_modules/@types/node/path/win32.d.ts +8 -0
  695. package/vendor/ink/node_modules/@types/node/path.d.ts +187 -0
  696. package/vendor/ink/node_modules/@types/node/perf_hooks.d.ts +643 -0
  697. package/vendor/ink/node_modules/@types/node/process.d.ts +2156 -0
  698. package/vendor/ink/node_modules/@types/node/punycode.d.ts +117 -0
  699. package/vendor/ink/node_modules/@types/node/querystring.d.ts +152 -0
  700. package/vendor/ink/node_modules/@types/node/quic.d.ts +910 -0
  701. package/vendor/ink/node_modules/@types/node/readline/promises.d.ts +161 -0
  702. package/vendor/ink/node_modules/@types/node/readline.d.ts +541 -0
  703. package/vendor/ink/node_modules/@types/node/repl.d.ts +415 -0
  704. package/vendor/ink/node_modules/@types/node/sea.d.ts +162 -0
  705. package/vendor/ink/node_modules/@types/node/sqlite.d.ts +955 -0
  706. package/vendor/ink/node_modules/@types/node/stream/consumers.d.ts +38 -0
  707. package/vendor/ink/node_modules/@types/node/stream/promises.d.ts +211 -0
  708. package/vendor/ink/node_modules/@types/node/stream/web.d.ts +296 -0
  709. package/vendor/ink/node_modules/@types/node/stream.d.ts +1760 -0
  710. package/vendor/ink/node_modules/@types/node/string_decoder.d.ts +67 -0
  711. package/vendor/ink/node_modules/@types/node/test/reporters.d.ts +96 -0
  712. package/vendor/ink/node_modules/@types/node/test.d.ts +2240 -0
  713. package/vendor/ink/node_modules/@types/node/timers/promises.d.ts +108 -0
  714. package/vendor/ink/node_modules/@types/node/timers.d.ts +159 -0
  715. package/vendor/ink/node_modules/@types/node/tls.d.ts +1198 -0
  716. package/vendor/ink/node_modules/@types/node/trace_events.d.ts +197 -0
  717. package/vendor/ink/node_modules/@types/node/ts5.6/buffer.buffer.d.ts +462 -0
  718. package/vendor/ink/node_modules/@types/node/ts5.6/compatibility/float16array.d.ts +71 -0
  719. package/vendor/ink/node_modules/@types/node/ts5.6/globals.typedarray.d.ts +36 -0
  720. package/vendor/ink/node_modules/@types/node/ts5.6/index.d.ts +117 -0
  721. package/vendor/ink/node_modules/@types/node/ts5.7/compatibility/float16array.d.ts +72 -0
  722. package/vendor/ink/node_modules/@types/node/ts5.7/index.d.ts +117 -0
  723. package/vendor/ink/node_modules/@types/node/tty.d.ts +250 -0
  724. package/vendor/ink/node_modules/@types/node/url.d.ts +519 -0
  725. package/vendor/ink/node_modules/@types/node/util/types.d.ts +558 -0
  726. package/vendor/ink/node_modules/@types/node/util.d.ts +1662 -0
  727. package/vendor/ink/node_modules/@types/node/v8.d.ts +983 -0
  728. package/vendor/ink/node_modules/@types/node/vm.d.ts +1208 -0
  729. package/vendor/ink/node_modules/@types/node/wasi.d.ts +202 -0
  730. package/vendor/ink/node_modules/@types/node/web-globals/abortcontroller.d.ts +59 -0
  731. package/vendor/ink/node_modules/@types/node/web-globals/blob.d.ts +23 -0
  732. package/vendor/ink/node_modules/@types/node/web-globals/console.d.ts +9 -0
  733. package/vendor/ink/node_modules/@types/node/web-globals/crypto.d.ts +39 -0
  734. package/vendor/ink/node_modules/@types/node/web-globals/domexception.d.ts +68 -0
  735. package/vendor/ink/node_modules/@types/node/web-globals/encoding.d.ts +11 -0
  736. package/vendor/ink/node_modules/@types/node/web-globals/events.d.ts +106 -0
  737. package/vendor/ink/node_modules/@types/node/web-globals/fetch.d.ts +69 -0
  738. package/vendor/ink/node_modules/@types/node/web-globals/importmeta.d.ts +13 -0
  739. package/vendor/ink/node_modules/@types/node/web-globals/messaging.d.ts +23 -0
  740. package/vendor/ink/node_modules/@types/node/web-globals/navigator.d.ts +25 -0
  741. package/vendor/ink/node_modules/@types/node/web-globals/performance.d.ts +45 -0
  742. package/vendor/ink/node_modules/@types/node/web-globals/storage.d.ts +24 -0
  743. package/vendor/ink/node_modules/@types/node/web-globals/streams.d.ts +115 -0
  744. package/vendor/ink/node_modules/@types/node/web-globals/timers.d.ts +44 -0
  745. package/vendor/ink/node_modules/@types/node/web-globals/url.d.ts +24 -0
  746. package/vendor/ink/node_modules/@types/node/worker_threads.d.ts +717 -0
  747. package/vendor/ink/node_modules/@types/node/zlib.d.ts +618 -0
  748. package/vendor/ink/node_modules/node-pty/LICENSE +69 -0
  749. package/vendor/ink/node_modules/node-pty/README.md +164 -0
  750. package/vendor/ink/node_modules/node-pty/binding.gyp +150 -0
  751. package/vendor/ink/node_modules/node-pty/lib/conpty_console_list_agent.js +25 -0
  752. package/vendor/ink/node_modules/node-pty/lib/eventEmitter2.js +47 -0
  753. package/vendor/ink/node_modules/node-pty/lib/index.js +52 -0
  754. package/vendor/ink/node_modules/node-pty/lib/interfaces.js +7 -0
  755. package/vendor/ink/node_modules/node-pty/lib/shared/conout.js +11 -0
  756. package/vendor/ink/node_modules/node-pty/lib/terminal.js +190 -0
  757. package/vendor/ink/node_modules/node-pty/lib/types.js +7 -0
  758. package/vendor/ink/node_modules/node-pty/lib/unixTerminal.js +349 -0
  759. package/vendor/ink/node_modules/node-pty/lib/utils.js +39 -0
  760. package/vendor/ink/node_modules/node-pty/lib/windowsConoutConnection.js +125 -0
  761. package/vendor/ink/node_modules/node-pty/lib/windowsPtyAgent.js +287 -0
  762. package/vendor/ink/node_modules/node-pty/lib/windowsTerminal.js +201 -0
  763. package/vendor/ink/node_modules/node-pty/lib/worker/conoutSocketWorker.js +22 -0
  764. package/vendor/ink/node_modules/node-pty/package.json +65 -0
  765. package/vendor/ink/node_modules/node-pty/prebuilds/darwin-arm64/pty.node +0 -0
  766. package/vendor/ink/node_modules/node-pty/prebuilds/darwin-arm64/spawn-helper +0 -0
  767. package/vendor/ink/node_modules/node-pty/prebuilds/darwin-x64/pty.node +0 -0
  768. package/vendor/ink/node_modules/node-pty/prebuilds/darwin-x64/spawn-helper +0 -0
  769. package/vendor/ink/node_modules/node-pty/prebuilds/linux-arm64/pty.node +0 -0
  770. package/vendor/ink/node_modules/node-pty/prebuilds/linux-x64/pty.node +0 -0
  771. package/vendor/ink/node_modules/node-pty/prebuilds/win32-arm64/conpty/OpenConsole.exe +0 -0
  772. package/vendor/ink/node_modules/node-pty/prebuilds/win32-arm64/conpty/conpty.dll +0 -0
  773. package/vendor/ink/node_modules/node-pty/prebuilds/win32-arm64/conpty.node +0 -0
  774. package/vendor/ink/node_modules/node-pty/prebuilds/win32-arm64/conpty.pdb +0 -0
  775. package/vendor/ink/node_modules/node-pty/prebuilds/win32-arm64/conpty_console_list.node +0 -0
  776. package/vendor/ink/node_modules/node-pty/prebuilds/win32-arm64/conpty_console_list.pdb +0 -0
  777. package/vendor/ink/node_modules/node-pty/prebuilds/win32-x64/conpty/OpenConsole.exe +0 -0
  778. package/vendor/ink/node_modules/node-pty/prebuilds/win32-x64/conpty/conpty.dll +0 -0
  779. package/vendor/ink/node_modules/node-pty/prebuilds/win32-x64/conpty.node +0 -0
  780. package/vendor/ink/node_modules/node-pty/prebuilds/win32-x64/conpty.pdb +0 -0
  781. package/vendor/ink/node_modules/node-pty/prebuilds/win32-x64/conpty_console_list.node +0 -0
  782. package/vendor/ink/node_modules/node-pty/prebuilds/win32-x64/conpty_console_list.pdb +0 -0
  783. package/vendor/ink/node_modules/node-pty/scripts/post-install.js +76 -0
  784. package/vendor/ink/node_modules/node-pty/scripts/prebuild.js +34 -0
  785. package/vendor/ink/node_modules/node-pty/src/unix/pty.cc +875 -0
  786. package/vendor/ink/node_modules/node-pty/src/unix/spawn-helper.cc +23 -0
  787. package/vendor/ink/node_modules/node-pty/src/win/conpty.cc +582 -0
  788. package/vendor/ink/node_modules/node-pty/src/win/conpty.h +41 -0
  789. package/vendor/ink/node_modules/node-pty/src/win/conpty_console_list.cc +44 -0
  790. package/vendor/ink/node_modules/node-pty/src/win/path_util.cc +95 -0
  791. package/vendor/ink/node_modules/node-pty/src/win/path_util.h +26 -0
  792. package/vendor/ink/node_modules/node-pty/third_party/conpty/1.23.251008001/win10-arm64/OpenConsole.exe +0 -0
  793. package/vendor/ink/node_modules/node-pty/third_party/conpty/1.23.251008001/win10-arm64/conpty.dll +0 -0
  794. package/vendor/ink/node_modules/node-pty/third_party/conpty/1.23.251008001/win10-x64/OpenConsole.exe +0 -0
  795. package/vendor/ink/node_modules/node-pty/third_party/conpty/1.23.251008001/win10-x64/conpty.dll +0 -0
  796. package/vendor/ink/node_modules/node-pty/typings/node-pty.d.ts +215 -0
  797. package/vendor/ink/node_modules/undici-types/LICENSE +21 -0
  798. package/vendor/ink/node_modules/undici-types/README.md +6 -0
  799. package/vendor/ink/node_modules/undici-types/agent.d.ts +32 -0
  800. package/vendor/ink/node_modules/undici-types/api.d.ts +43 -0
  801. package/vendor/ink/node_modules/undici-types/balanced-pool.d.ts +30 -0
  802. package/vendor/ink/node_modules/undici-types/cache-interceptor.d.ts +173 -0
  803. package/vendor/ink/node_modules/undici-types/cache.d.ts +36 -0
  804. package/vendor/ink/node_modules/undici-types/client-stats.d.ts +15 -0
  805. package/vendor/ink/node_modules/undici-types/client.d.ts +108 -0
  806. package/vendor/ink/node_modules/undici-types/connector.d.ts +34 -0
  807. package/vendor/ink/node_modules/undici-types/content-type.d.ts +21 -0
  808. package/vendor/ink/node_modules/undici-types/cookies.d.ts +30 -0
  809. package/vendor/ink/node_modules/undici-types/diagnostics-channel.d.ts +74 -0
  810. package/vendor/ink/node_modules/undici-types/dispatcher.d.ts +276 -0
  811. package/vendor/ink/node_modules/undici-types/env-http-proxy-agent.d.ts +22 -0
  812. package/vendor/ink/node_modules/undici-types/errors.d.ts +161 -0
  813. package/vendor/ink/node_modules/undici-types/eventsource.d.ts +66 -0
  814. package/vendor/ink/node_modules/undici-types/fetch.d.ts +211 -0
  815. package/vendor/ink/node_modules/undici-types/formdata.d.ts +108 -0
  816. package/vendor/ink/node_modules/undici-types/global-dispatcher.d.ts +9 -0
  817. package/vendor/ink/node_modules/undici-types/global-origin.d.ts +7 -0
  818. package/vendor/ink/node_modules/undici-types/h2c-client.d.ts +73 -0
  819. package/vendor/ink/node_modules/undici-types/handlers.d.ts +15 -0
  820. package/vendor/ink/node_modules/undici-types/header.d.ts +160 -0
  821. package/vendor/ink/node_modules/undici-types/index.d.ts +88 -0
  822. package/vendor/ink/node_modules/undici-types/interceptors.d.ts +73 -0
  823. package/vendor/ink/node_modules/undici-types/mock-agent.d.ts +68 -0
  824. package/vendor/ink/node_modules/undici-types/mock-call-history.d.ts +111 -0
  825. package/vendor/ink/node_modules/undici-types/mock-client.d.ts +27 -0
  826. package/vendor/ink/node_modules/undici-types/mock-errors.d.ts +12 -0
  827. package/vendor/ink/node_modules/undici-types/mock-interceptor.d.ts +94 -0
  828. package/vendor/ink/node_modules/undici-types/mock-pool.d.ts +27 -0
  829. package/vendor/ink/node_modules/undici-types/package.json +55 -0
  830. package/vendor/ink/node_modules/undici-types/patch.d.ts +29 -0
  831. package/vendor/ink/node_modules/undici-types/pool-stats.d.ts +19 -0
  832. package/vendor/ink/node_modules/undici-types/pool.d.ts +41 -0
  833. package/vendor/ink/node_modules/undici-types/proxy-agent.d.ts +29 -0
  834. package/vendor/ink/node_modules/undici-types/readable.d.ts +68 -0
  835. package/vendor/ink/node_modules/undici-types/retry-agent.d.ts +8 -0
  836. package/vendor/ink/node_modules/undici-types/retry-handler.d.ts +125 -0
  837. package/vendor/ink/node_modules/undici-types/round-robin-pool.d.ts +41 -0
  838. package/vendor/ink/node_modules/undici-types/snapshot-agent.d.ts +109 -0
  839. package/vendor/ink/node_modules/undici-types/util.d.ts +18 -0
  840. package/vendor/ink/node_modules/undici-types/utility.d.ts +7 -0
  841. package/vendor/ink/node_modules/undici-types/webidl.d.ts +341 -0
  842. package/vendor/ink/node_modules/undici-types/websocket.d.ts +186 -0
  843. package/vendor/ink/package.json +201 -0
  844. package/vendor/ink/readme.md +2636 -0
  845. package/bin/swag-agent.js +0 -9
  846. package/dist/server/lib/pg-rate-limiter.d.ts +0 -21
  847. package/dist/server/lib/pg-rate-limiter.js +0 -86
@@ -8,460 +8,522 @@
8
8
  * Batch API typically saves ~50% cost for non-latency-sensitive operations
9
9
  * like workflow steps, bulk classification, and background processing.
10
10
  */
11
+
11
12
  import { createLogger } from "./logger.js";
12
13
  const log = createLogger("batch-client");
14
+
15
+ // ============================================================================
16
+ // TYPES
17
+ // ============================================================================
18
+
13
19
  // ============================================================================
14
20
  // CONSTANTS
15
21
  // ============================================================================
22
+
16
23
  const ANTHROPIC_BASE_URL = "https://api.anthropic.com";
17
24
  const OPENAI_BASE_URL = "https://api.openai.com";
18
25
  const POLL_INTERVAL_MS = 5_000;
19
26
  const MAX_POLL_DURATION_MS = 10 * 60 * 1000; // 10 minutes
20
27
  const ANTHROPIC_API_VERSION = "2023-06-01";
21
28
  const ANTHROPIC_BATCH_BETA = "message-batches-2024-09-24";
29
+
22
30
  // ============================================================================
23
31
  // BATCH CLIENT
24
32
  // ============================================================================
33
+
25
34
  export class BatchClient {
26
- queue = [];
27
- /**
28
- * Add a request to the queue. Call submitBatch() to send them all.
29
- */
30
- queueRequest(id, provider, model, messages, config = {}) {
31
- this.queue.push({
32
- id,
33
- provider,
34
- model,
35
- messages,
36
- system: config.system,
37
- tools: config.tools,
38
- max_tokens: config.max_tokens ?? 4096,
39
- temperature: config.temperature,
40
- });
41
- log.info({ id, provider, model, queueSize: this.queue.length }, "queued batch request");
35
+ queue = [];
36
+
37
+ /**
38
+ * Add a request to the queue. Call submitBatch() to send them all.
39
+ */
40
+ queueRequest(id, provider, model, messages, config = {}) {
41
+ this.queue.push({
42
+ id,
43
+ provider,
44
+ model,
45
+ messages,
46
+ system: config.system,
47
+ tools: config.tools,
48
+ max_tokens: config.max_tokens ?? 4096,
49
+ temperature: config.temperature
50
+ });
51
+ log.info({
52
+ id,
53
+ provider,
54
+ model,
55
+ queueSize: this.queue.length
56
+ }, "queued batch request");
57
+ }
58
+
59
+ /**
60
+ * Submit all queued requests as a batch job. Returns the batch ID.
61
+ * Clears the queue after submission.
62
+ */
63
+ async submitBatch() {
64
+ if (this.queue.length === 0) {
65
+ throw new Error("No requests queued for batch submission");
42
66
  }
43
- /**
44
- * Submit all queued requests as a batch job. Returns the batch ID.
45
- * Clears the queue after submission.
46
- */
47
- async submitBatch() {
48
- if (this.queue.length === 0) {
49
- throw new Error("No requests queued for batch submission");
50
- }
51
- // All requests in a batch must use the same provider
52
- const provider = this.queue[0].provider;
53
- const mixedProvider = this.queue.find(r => r.provider !== provider);
54
- if (mixedProvider) {
55
- throw new Error(`Mixed providers in batch: ${provider} and ${mixedProvider.provider}. Submit separate batches per provider.`);
56
- }
57
- const requests = [...this.queue];
58
- this.queue = [];
59
- if (provider === "anthropic") {
60
- return this.submitAnthropicBatch(requests);
61
- }
62
- else {
63
- return this.submitOpenAIBatch(requests);
64
- }
67
+
68
+ // All requests in a batch must use the same provider
69
+ const provider = this.queue[0].provider;
70
+ const mixedProvider = this.queue.find(r => r.provider !== provider);
71
+ if (mixedProvider) {
72
+ throw new Error(`Mixed providers in batch: ${provider} and ${mixedProvider.provider}. Submit separate batches per provider.`);
65
73
  }
66
- /**
67
- * Poll a batch until it completes. Returns a map of custom_id → result.
68
- */
69
- async pollBatch(batchId, provider) {
70
- if (provider === "anthropic") {
71
- return this.pollAnthropicBatch(batchId);
72
- }
73
- else {
74
- return this.pollOpenAIBatch(batchId);
75
- }
74
+ const requests = [...this.queue];
75
+ this.queue = [];
76
+ if (provider === "anthropic") {
77
+ return this.submitAnthropicBatch(requests);
78
+ } else {
79
+ return this.submitOpenAIBatch(requests);
76
80
  }
77
- /**
78
- * Convenience: queue a single request, submit it as a batch, poll until done, return result.
79
- * Best for workflow steps where you want batch pricing but only have one request.
80
- */
81
- async processSingle(id, provider, model, messages, config = {}) {
82
- this.queueRequest(id, provider, model, messages, config);
83
- const { batchId } = await this.submitBatch();
84
- const results = await this.pollBatch(batchId, provider);
85
- return results.get(id) || { id, success: false, error: "Result not found in batch response" };
81
+ }
82
+
83
+ /**
84
+ * Poll a batch until it completes. Returns a map of custom_id → result.
85
+ */
86
+ async pollBatch(batchId, provider) {
87
+ if (provider === "anthropic") {
88
+ return this.pollAnthropicBatch(batchId);
89
+ } else {
90
+ return this.pollOpenAIBatch(batchId);
86
91
  }
87
- /** Return the current queue size (for diagnostics). */
88
- get queueSize() {
89
- return this.queue.length;
92
+ }
93
+
94
+ /**
95
+ * Convenience: queue a single request, submit it as a batch, poll until done, return result.
96
+ * Best for workflow steps where you want batch pricing but only have one request.
97
+ */
98
+ async processSingle(id, provider, model, messages, config = {}) {
99
+ this.queueRequest(id, provider, model, messages, config);
100
+ const {
101
+ batchId
102
+ } = await this.submitBatch();
103
+ const results = await this.pollBatch(batchId, provider);
104
+ return results.get(id) || {
105
+ id,
106
+ success: false,
107
+ error: "Result not found in batch response"
108
+ };
109
+ }
110
+
111
+ /** Return the current queue size (for diagnostics). */
112
+ get queueSize() {
113
+ return this.queue.length;
114
+ }
115
+
116
+ // ==========================================================================
117
+ // ANTHROPIC BATCH API
118
+ // ==========================================================================
119
+
120
+ async submitAnthropicBatch(requests) {
121
+ const apiKey = process.env.ANTHROPIC_API_KEY;
122
+ if (!apiKey) throw new Error("ANTHROPIC_API_KEY not set");
123
+ const batchRequests = requests.map(r => {
124
+ const params = {
125
+ model: r.model,
126
+ messages: r.messages,
127
+ max_tokens: r.max_tokens
128
+ };
129
+ if (r.system) params.system = r.system;
130
+ if (r.tools?.length) {
131
+ params.tools = r.tools.map(t => ({
132
+ name: t.name,
133
+ description: typeof t.description === "string" ? t.description.slice(0, 4096) : "",
134
+ input_schema: t.input_schema
135
+ }));
136
+ }
137
+ if (r.temperature !== undefined) params.temperature = r.temperature;
138
+ return {
139
+ custom_id: r.id,
140
+ params
141
+ };
142
+ });
143
+ const resp = await fetch(`${ANTHROPIC_BASE_URL}/v1/messages/batches`, {
144
+ method: "POST",
145
+ headers: {
146
+ "Content-Type": "application/json",
147
+ "x-api-key": apiKey,
148
+ "anthropic-version": ANTHROPIC_API_VERSION,
149
+ "anthropic-beta": ANTHROPIC_BATCH_BETA
150
+ },
151
+ body: JSON.stringify({
152
+ requests: batchRequests
153
+ })
154
+ });
155
+ if (!resp.ok) {
156
+ const errText = await resp.text();
157
+ throw new Error(`Anthropic batch submit failed (${resp.status}): ${errText.substring(0, 500)}`);
90
158
  }
91
- // ==========================================================================
92
- // ANTHROPIC BATCH API
93
- // ==========================================================================
94
- async submitAnthropicBatch(requests) {
95
- const apiKey = process.env.ANTHROPIC_API_KEY;
96
- if (!apiKey)
97
- throw new Error("ANTHROPIC_API_KEY not set");
98
- const batchRequests = requests.map(r => {
99
- const params = {
100
- model: r.model,
101
- messages: r.messages,
102
- max_tokens: r.max_tokens,
103
- };
104
- if (r.system)
105
- params.system = r.system;
106
- if (r.tools?.length) {
107
- params.tools = r.tools.map((t) => ({
108
- name: t.name,
109
- description: typeof t.description === "string" ? t.description.slice(0, 4096) : "",
110
- input_schema: t.input_schema,
111
- }));
112
- }
113
- if (r.temperature !== undefined)
114
- params.temperature = r.temperature;
115
- return { custom_id: r.id, params };
116
- });
117
- const resp = await fetch(`${ANTHROPIC_BASE_URL}/v1/messages/batches`, {
118
- method: "POST",
119
- headers: {
120
- "Content-Type": "application/json",
121
- "x-api-key": apiKey,
122
- "anthropic-version": ANTHROPIC_API_VERSION,
123
- "anthropic-beta": ANTHROPIC_BATCH_BETA,
124
- },
125
- body: JSON.stringify({ requests: batchRequests }),
126
- });
127
- if (!resp.ok) {
128
- const errText = await resp.text();
129
- throw new Error(`Anthropic batch submit failed (${resp.status}): ${errText.substring(0, 500)}`);
159
+ const data = await resp.json();
160
+ log.info({
161
+ batchId: data.id,
162
+ count: requests.length
163
+ }, "anthropic batch submitted");
164
+ return {
165
+ batchId: data.id,
166
+ provider: "anthropic",
167
+ count: requests.length
168
+ };
169
+ }
170
+ async pollAnthropicBatch(batchId) {
171
+ const apiKey = process.env.ANTHROPIC_API_KEY;
172
+ if (!apiKey) throw new Error("ANTHROPIC_API_KEY not set");
173
+ const startTime = Date.now();
174
+ while (Date.now() - startTime < MAX_POLL_DURATION_MS) {
175
+ const resp = await fetch(`${ANTHROPIC_BASE_URL}/v1/messages/batches/${batchId}`, {
176
+ headers: {
177
+ "x-api-key": apiKey,
178
+ "anthropic-version": ANTHROPIC_API_VERSION,
179
+ "anthropic-beta": ANTHROPIC_BATCH_BETA
130
180
  }
131
- const data = await resp.json();
132
- log.info({ batchId: data.id, count: requests.length }, "anthropic batch submitted");
133
- return { batchId: data.id, provider: "anthropic", count: requests.length };
181
+ });
182
+ if (!resp.ok) {
183
+ const errText = await resp.text();
184
+ throw new Error(`Anthropic batch poll failed (${resp.status}): ${errText.substring(0, 500)}`);
185
+ }
186
+ const batch = await resp.json();
187
+ log.info({
188
+ batchId,
189
+ status: batch.processing_status,
190
+ counts: batch.request_counts,
191
+ elapsed: Date.now() - startTime
192
+ }, "anthropic batch poll");
193
+ if (batch.processing_status === "ended") {
194
+ return this.fetchAnthropicResults(batchId);
195
+ }
196
+ if (batch.processing_status === "canceling" || batch.processing_status === "canceled") {
197
+ throw new Error(`Anthropic batch ${batchId} was canceled`);
198
+ }
199
+ await sleep(POLL_INTERVAL_MS);
134
200
  }
135
- async pollAnthropicBatch(batchId) {
136
- const apiKey = process.env.ANTHROPIC_API_KEY;
137
- if (!apiKey)
138
- throw new Error("ANTHROPIC_API_KEY not set");
139
- const startTime = Date.now();
140
- while (Date.now() - startTime < MAX_POLL_DURATION_MS) {
141
- const resp = await fetch(`${ANTHROPIC_BASE_URL}/v1/messages/batches/${batchId}`, {
142
- headers: {
143
- "x-api-key": apiKey,
144
- "anthropic-version": ANTHROPIC_API_VERSION,
145
- "anthropic-beta": ANTHROPIC_BATCH_BETA,
146
- },
147
- });
148
- if (!resp.ok) {
149
- const errText = await resp.text();
150
- throw new Error(`Anthropic batch poll failed (${resp.status}): ${errText.substring(0, 500)}`);
151
- }
152
- const batch = await resp.json();
153
- log.info({
154
- batchId,
155
- status: batch.processing_status,
156
- counts: batch.request_counts,
157
- elapsed: Date.now() - startTime,
158
- }, "anthropic batch poll");
159
- if (batch.processing_status === "ended") {
160
- return this.fetchAnthropicResults(batchId);
161
- }
162
- if (batch.processing_status === "canceling" || batch.processing_status === "canceled") {
163
- throw new Error(`Anthropic batch ${batchId} was canceled`);
164
- }
165
- await sleep(POLL_INTERVAL_MS);
166
- }
167
- throw new Error(`Anthropic batch ${batchId} timed out after ${MAX_POLL_DURATION_MS / 1000}s`);
201
+ throw new Error(`Anthropic batch ${batchId} timed out after ${MAX_POLL_DURATION_MS / 1000}s`);
202
+ }
203
+ async fetchAnthropicResults(batchId) {
204
+ const apiKey = process.env.ANTHROPIC_API_KEY;
205
+ if (!apiKey) throw new Error("ANTHROPIC_API_KEY not set");
206
+ const resp = await fetch(`${ANTHROPIC_BASE_URL}/v1/messages/batches/${batchId}/results`, {
207
+ headers: {
208
+ "x-api-key": apiKey,
209
+ "anthropic-version": ANTHROPIC_API_VERSION,
210
+ "anthropic-beta": ANTHROPIC_BATCH_BETA
211
+ }
212
+ });
213
+ if (!resp.ok) {
214
+ const errText = await resp.text();
215
+ throw new Error(`Anthropic batch results fetch failed (${resp.status}): ${errText.substring(0, 500)}`);
168
216
  }
169
- async fetchAnthropicResults(batchId) {
170
- const apiKey = process.env.ANTHROPIC_API_KEY;
171
- if (!apiKey)
172
- throw new Error("ANTHROPIC_API_KEY not set");
173
- const resp = await fetch(`${ANTHROPIC_BASE_URL}/v1/messages/batches/${batchId}/results`, {
174
- headers: {
175
- "x-api-key": apiKey,
176
- "anthropic-version": ANTHROPIC_API_VERSION,
177
- "anthropic-beta": ANTHROPIC_BATCH_BETA,
178
- },
179
- });
180
- if (!resp.ok) {
181
- const errText = await resp.text();
182
- throw new Error(`Anthropic batch results fetch failed (${resp.status}): ${errText.substring(0, 500)}`);
217
+
218
+ // Results come as JSONL (one JSON object per line)
219
+ const text = await resp.text();
220
+ const results = new Map();
221
+ for (const line of text.split("\n")) {
222
+ if (!line.trim()) continue;
223
+ try {
224
+ const item = JSON.parse(line);
225
+ if (item.result.type === "succeeded" && item.result.message) {
226
+ const textBlocks = item.result.message.content.filter(b => b.type === "text" && b.text).map(b => b.text);
227
+ results.set(item.custom_id, {
228
+ id: item.custom_id,
229
+ success: true,
230
+ content: item.result.message.content,
231
+ text: textBlocks.join("\n"),
232
+ usage: item.result.message.usage
233
+ });
234
+ } else {
235
+ results.set(item.custom_id, {
236
+ id: item.custom_id,
237
+ success: false,
238
+ error: item.result.error?.message || `Batch item ${item.result.type}`
239
+ });
183
240
  }
184
- // Results come as JSONL (one JSON object per line)
185
- const text = await resp.text();
186
- const results = new Map();
187
- for (const line of text.split("\n")) {
188
- if (!line.trim())
189
- continue;
190
- try {
191
- const item = JSON.parse(line);
192
- if (item.result.type === "succeeded" && item.result.message) {
193
- const textBlocks = item.result.message.content
194
- .filter((b) => b.type === "text" && b.text)
195
- .map((b) => b.text);
196
- results.set(item.custom_id, {
197
- id: item.custom_id,
198
- success: true,
199
- content: item.result.message.content,
200
- text: textBlocks.join("\n"),
201
- usage: item.result.message.usage,
202
- });
203
- }
204
- else {
205
- results.set(item.custom_id, {
206
- id: item.custom_id,
207
- success: false,
208
- error: item.result.error?.message || `Batch item ${item.result.type}`,
209
- });
210
- }
211
- }
212
- catch {
213
- // Skip malformed lines
214
- }
215
- }
216
- log.info({ batchId, resultCount: results.size }, "anthropic batch results fetched");
217
- return results;
241
+ } catch {
242
+ // Skip malformed lines
243
+ }
218
244
  }
219
- // ==========================================================================
220
- // OPENAI BATCH API
221
- // ==========================================================================
222
- async submitOpenAIBatch(requests) {
223
- const apiKey = process.env.OPENAI_API_KEY;
224
- if (!apiKey)
225
- throw new Error("OPENAI_API_KEY not set");
226
- // Step 1: Build JSONL content
227
- const lines = requests.map(r => {
228
- const body = {
229
- model: r.model,
230
- messages: this.buildOpenAIMessages(r),
231
- max_tokens: r.max_tokens,
232
- };
233
- if (r.tools?.length) {
234
- body.tools = r.tools.map((t) => ({
235
- type: "function",
236
- function: {
237
- name: t.name,
238
- description: typeof t.description === "string" ? t.description.slice(0, 4096) : "",
239
- parameters: t.input_schema || {},
240
- },
241
- }));
242
- }
243
- if (r.temperature !== undefined)
244
- body.temperature = r.temperature;
245
- const item = {
246
- custom_id: r.id,
247
- method: "POST",
248
- url: "/v1/chat/completions",
249
- body,
250
- };
251
- return JSON.stringify(item);
252
- });
253
- const jsonlContent = lines.join("\n");
254
- // Step 2: Upload JSONL as a file
255
- const formData = new FormData();
256
- const blob = new Blob([jsonlContent], { type: "application/jsonl" });
257
- formData.append("file", blob, "batch_requests.jsonl");
258
- formData.append("purpose", "batch");
259
- const uploadResp = await fetch(`${OPENAI_BASE_URL}/v1/files`, {
260
- method: "POST",
261
- headers: { Authorization: `Bearer ${apiKey}` },
262
- body: formData,
263
- });
264
- if (!uploadResp.ok) {
265
- const errText = await uploadResp.text();
266
- throw new Error(`OpenAI file upload failed (${uploadResp.status}): ${errText.substring(0, 500)}`);
267
- }
268
- const fileData = await uploadResp.json();
269
- // Step 3: Create batch
270
- const batchResp = await fetch(`${OPENAI_BASE_URL}/v1/batches`, {
271
- method: "POST",
272
- headers: {
273
- "Content-Type": "application/json",
274
- Authorization: `Bearer ${apiKey}`,
275
- },
276
- body: JSON.stringify({
277
- input_file_id: fileData.id,
278
- endpoint: "/v1/chat/completions",
279
- completion_window: "24h",
280
- }),
281
- });
282
- if (!batchResp.ok) {
283
- const errText = await batchResp.text();
284
- throw new Error(`OpenAI batch create failed (${batchResp.status}): ${errText.substring(0, 500)}`);
245
+ log.info({
246
+ batchId,
247
+ resultCount: results.size
248
+ }, "anthropic batch results fetched");
249
+ return results;
250
+ }
251
+
252
+ // ==========================================================================
253
+ // OPENAI BATCH API
254
+ // ==========================================================================
255
+
256
+ async submitOpenAIBatch(requests) {
257
+ const apiKey = process.env.OPENAI_API_KEY;
258
+ if (!apiKey) throw new Error("OPENAI_API_KEY not set");
259
+
260
+ // Step 1: Build JSONL content
261
+ const lines = requests.map(r => {
262
+ const body = {
263
+ model: r.model,
264
+ messages: this.buildOpenAIMessages(r),
265
+ max_tokens: r.max_tokens
266
+ };
267
+ if (r.tools?.length) {
268
+ body.tools = r.tools.map(t => ({
269
+ type: "function",
270
+ function: {
271
+ name: t.name,
272
+ description: typeof t.description === "string" ? t.description.slice(0, 4096) : "",
273
+ parameters: t.input_schema || {}
274
+ }
275
+ }));
276
+ }
277
+ if (r.temperature !== undefined) body.temperature = r.temperature;
278
+ const item = {
279
+ custom_id: r.id,
280
+ method: "POST",
281
+ url: "/v1/chat/completions",
282
+ body
283
+ };
284
+ return JSON.stringify(item);
285
+ });
286
+ const jsonlContent = lines.join("\n");
287
+
288
+ // Step 2: Upload JSONL as a file
289
+ const formData = new FormData();
290
+ const blob = new Blob([jsonlContent], {
291
+ type: "application/jsonl"
292
+ });
293
+ formData.append("file", blob, "batch_requests.jsonl");
294
+ formData.append("purpose", "batch");
295
+ const uploadResp = await fetch(`${OPENAI_BASE_URL}/v1/files`, {
296
+ method: "POST",
297
+ headers: {
298
+ Authorization: `Bearer ${apiKey}`
299
+ },
300
+ body: formData
301
+ });
302
+ if (!uploadResp.ok) {
303
+ const errText = await uploadResp.text();
304
+ throw new Error(`OpenAI file upload failed (${uploadResp.status}): ${errText.substring(0, 500)}`);
305
+ }
306
+ const fileData = await uploadResp.json();
307
+
308
+ // Step 3: Create batch
309
+ const batchResp = await fetch(`${OPENAI_BASE_URL}/v1/batches`, {
310
+ method: "POST",
311
+ headers: {
312
+ "Content-Type": "application/json",
313
+ Authorization: `Bearer ${apiKey}`
314
+ },
315
+ body: JSON.stringify({
316
+ input_file_id: fileData.id,
317
+ endpoint: "/v1/chat/completions",
318
+ completion_window: "24h"
319
+ })
320
+ });
321
+ if (!batchResp.ok) {
322
+ const errText = await batchResp.text();
323
+ throw new Error(`OpenAI batch create failed (${batchResp.status}): ${errText.substring(0, 500)}`);
324
+ }
325
+ const batch = await batchResp.json();
326
+ log.info({
327
+ batchId: batch.id,
328
+ fileId: fileData.id,
329
+ count: requests.length
330
+ }, "openai batch submitted");
331
+ return {
332
+ batchId: batch.id,
333
+ provider: "openai",
334
+ count: requests.length
335
+ };
336
+ }
337
+ async pollOpenAIBatch(batchId) {
338
+ const apiKey = process.env.OPENAI_API_KEY;
339
+ if (!apiKey) throw new Error("OPENAI_API_KEY not set");
340
+ const startTime = Date.now();
341
+ while (Date.now() - startTime < MAX_POLL_DURATION_MS) {
342
+ const resp = await fetch(`${OPENAI_BASE_URL}/v1/batches/${batchId}`, {
343
+ headers: {
344
+ Authorization: `Bearer ${apiKey}`
285
345
  }
286
- const batch = await batchResp.json();
287
- log.info({ batchId: batch.id, fileId: fileData.id, count: requests.length }, "openai batch submitted");
288
- return { batchId: batch.id, provider: "openai", count: requests.length };
346
+ });
347
+ if (!resp.ok) {
348
+ const errText = await resp.text();
349
+ throw new Error(`OpenAI batch poll failed (${resp.status}): ${errText.substring(0, 500)}`);
350
+ }
351
+ const batch = await resp.json();
352
+ log.info({
353
+ batchId,
354
+ status: batch.status,
355
+ counts: batch.request_counts,
356
+ elapsed: Date.now() - startTime
357
+ }, "openai batch poll");
358
+ if (batch.status === "completed" && batch.output_file_id) {
359
+ return this.fetchOpenAIResults(batch.output_file_id);
360
+ }
361
+ if (batch.status === "failed" || batch.status === "cancelled" || batch.status === "expired") {
362
+ throw new Error(`OpenAI batch ${batchId} ended with status: ${batch.status}`);
363
+ }
364
+ await sleep(POLL_INTERVAL_MS);
289
365
  }
290
- async pollOpenAIBatch(batchId) {
291
- const apiKey = process.env.OPENAI_API_KEY;
292
- if (!apiKey)
293
- throw new Error("OPENAI_API_KEY not set");
294
- const startTime = Date.now();
295
- while (Date.now() - startTime < MAX_POLL_DURATION_MS) {
296
- const resp = await fetch(`${OPENAI_BASE_URL}/v1/batches/${batchId}`, {
297
- headers: { Authorization: `Bearer ${apiKey}` },
298
- });
299
- if (!resp.ok) {
300
- const errText = await resp.text();
301
- throw new Error(`OpenAI batch poll failed (${resp.status}): ${errText.substring(0, 500)}`);
302
- }
303
- const batch = await resp.json();
304
- log.info({
305
- batchId,
306
- status: batch.status,
307
- counts: batch.request_counts,
308
- elapsed: Date.now() - startTime,
309
- }, "openai batch poll");
310
- if (batch.status === "completed" && batch.output_file_id) {
311
- return this.fetchOpenAIResults(batch.output_file_id);
312
- }
313
- if (batch.status === "failed" || batch.status === "cancelled" || batch.status === "expired") {
314
- throw new Error(`OpenAI batch ${batchId} ended with status: ${batch.status}`);
366
+ throw new Error(`OpenAI batch ${batchId} timed out after ${MAX_POLL_DURATION_MS / 1000}s`);
367
+ }
368
+ async fetchOpenAIResults(outputFileId) {
369
+ const apiKey = process.env.OPENAI_API_KEY;
370
+ if (!apiKey) throw new Error("OPENAI_API_KEY not set");
371
+ const resp = await fetch(`${OPENAI_BASE_URL}/v1/files/${outputFileId}/content`, {
372
+ headers: {
373
+ Authorization: `Bearer ${apiKey}`
374
+ }
375
+ });
376
+ if (!resp.ok) {
377
+ const errText = await resp.text();
378
+ throw new Error(`OpenAI results fetch failed (${resp.status}): ${errText.substring(0, 500)}`);
379
+ }
380
+ const text = await resp.text();
381
+ const results = new Map();
382
+ for (const line of text.split("\n")) {
383
+ if (!line.trim()) continue;
384
+ try {
385
+ const item = JSON.parse(line);
386
+ if (item.response && item.response.status_code === 200) {
387
+ const choice = item.response.body.choices[0];
388
+ results.set(item.custom_id, {
389
+ id: item.custom_id,
390
+ success: true,
391
+ content: item.response.body.choices,
392
+ text: choice?.message?.content || "",
393
+ usage: {
394
+ input_tokens: item.response.body.usage.prompt_tokens,
395
+ output_tokens: item.response.body.usage.completion_tokens
315
396
  }
316
- await sleep(POLL_INTERVAL_MS);
397
+ });
398
+ } else {
399
+ results.set(item.custom_id, {
400
+ id: item.custom_id,
401
+ success: false,
402
+ error: item.error?.message || `HTTP ${item.response?.status_code || "unknown"}`
403
+ });
317
404
  }
318
- throw new Error(`OpenAI batch ${batchId} timed out after ${MAX_POLL_DURATION_MS / 1000}s`);
405
+ } catch {
406
+ // Skip malformed lines
407
+ }
319
408
  }
320
- async fetchOpenAIResults(outputFileId) {
321
- const apiKey = process.env.OPENAI_API_KEY;
322
- if (!apiKey)
323
- throw new Error("OPENAI_API_KEY not set");
324
- const resp = await fetch(`${OPENAI_BASE_URL}/v1/files/${outputFileId}/content`, {
325
- headers: { Authorization: `Bearer ${apiKey}` },
409
+ log.info({
410
+ outputFileId,
411
+ resultCount: results.size
412
+ }, "openai batch results fetched");
413
+ return results;
414
+ }
415
+
416
+ /**
417
+ * Convert Anthropic-format messages to OpenAI chat format for batch requests.
418
+ * Simplified conversion — handles the common patterns (text, system, tool_use/tool_result).
419
+ */
420
+ buildOpenAIMessages(r) {
421
+ const out = [];
422
+
423
+ // System prompt → system message
424
+ if (r.system) {
425
+ if (typeof r.system === "string") {
426
+ out.push({
427
+ role: "system",
428
+ content: r.system
326
429
  });
327
- if (!resp.ok) {
328
- const errText = await resp.text();
329
- throw new Error(`OpenAI results fetch failed (${resp.status}): ${errText.substring(0, 500)}`);
330
- }
331
- const text = await resp.text();
332
- const results = new Map();
333
- for (const line of text.split("\n")) {
334
- if (!line.trim())
335
- continue;
336
- try {
337
- const item = JSON.parse(line);
338
- if (item.response && item.response.status_code === 200) {
339
- const choice = item.response.body.choices[0];
340
- results.set(item.custom_id, {
341
- id: item.custom_id,
342
- success: true,
343
- content: item.response.body.choices,
344
- text: choice?.message?.content || "",
345
- usage: {
346
- input_tokens: item.response.body.usage.prompt_tokens,
347
- output_tokens: item.response.body.usage.completion_tokens,
348
- },
349
- });
350
- }
351
- else {
352
- results.set(item.custom_id, {
353
- id: item.custom_id,
354
- success: false,
355
- error: item.error?.message || `HTTP ${item.response?.status_code || "unknown"}`,
356
- });
357
- }
358
- }
359
- catch {
360
- // Skip malformed lines
361
- }
362
- }
363
- log.info({ outputFileId, resultCount: results.size }, "openai batch results fetched");
364
- return results;
430
+ } else if (Array.isArray(r.system)) {
431
+ const systemText = r.system.map(s => s.text || "").filter(Boolean).join("\n");
432
+ if (systemText) out.push({
433
+ role: "system",
434
+ content: systemText
435
+ });
436
+ }
365
437
  }
366
- /**
367
- * Convert Anthropic-format messages to OpenAI chat format for batch requests.
368
- * Simplified conversion handles the common patterns (text, system, tool_use/tool_result).
369
- */
370
- buildOpenAIMessages(r) {
371
- const out = [];
372
- // System prompt → system message
373
- if (r.system) {
374
- if (typeof r.system === "string") {
375
- out.push({ role: "system", content: r.system });
376
- }
377
- else if (Array.isArray(r.system)) {
378
- const systemText = r.system
379
- .map(s => s.text || "")
380
- .filter(Boolean)
381
- .join("\n");
382
- if (systemText)
383
- out.push({ role: "system", content: systemText });
438
+
439
+ // Convert messages
440
+ for (const msg of r.messages) {
441
+ if (msg.role === "user") {
442
+ if (typeof msg.content === "string") {
443
+ out.push({
444
+ role: "user",
445
+ content: msg.content
446
+ });
447
+ } else if (Array.isArray(msg.content)) {
448
+ const parts = [];
449
+ for (const block of msg.content) {
450
+ if (block.type === "text" && block.text) {
451
+ parts.push({
452
+ type: "text",
453
+ text: block.text
454
+ });
455
+ } else if (block.type === "tool_result") {
456
+ // OpenAI tool results are separate messages
457
+ let output = "";
458
+ if (typeof block.content === "string") output = block.content;else if (Array.isArray(block.content)) {
459
+ output = block.content.filter(c => c.type === "text").map(c => c.text).join("\n");
460
+ }
461
+ out.push({
462
+ role: "tool",
463
+ tool_call_id: block.tool_use_id,
464
+ content: output || "(no output)"
465
+ });
384
466
  }
467
+ }
468
+ if (parts.length === 1 && parts[0].type === "text") {
469
+ out.push({
470
+ role: "user",
471
+ content: parts[0].text
472
+ });
473
+ } else if (parts.length > 0) {
474
+ out.push({
475
+ role: "user",
476
+ content: parts
477
+ });
478
+ }
385
479
  }
386
- // Convert messages
387
- for (const msg of r.messages) {
388
- if (msg.role === "user") {
389
- if (typeof msg.content === "string") {
390
- out.push({ role: "user", content: msg.content });
391
- }
392
- else if (Array.isArray(msg.content)) {
393
- const parts = [];
394
- for (const block of msg.content) {
395
- if (block.type === "text" && block.text) {
396
- parts.push({ type: "text", text: block.text });
397
- }
398
- else if (block.type === "tool_result") {
399
- // OpenAI tool results are separate messages
400
- let output = "";
401
- if (typeof block.content === "string")
402
- output = block.content;
403
- else if (Array.isArray(block.content)) {
404
- output = block.content
405
- .filter(c => c.type === "text")
406
- .map(c => c.text)
407
- .join("\n");
408
- }
409
- out.push({
410
- role: "tool",
411
- tool_call_id: block.tool_use_id,
412
- content: output || "(no output)",
413
- });
414
- }
415
- }
416
- if (parts.length === 1 && parts[0].type === "text") {
417
- out.push({ role: "user", content: parts[0].text });
418
- }
419
- else if (parts.length > 0) {
420
- out.push({ role: "user", content: parts });
421
- }
422
- }
423
- }
424
- else if (msg.role === "assistant") {
425
- if (typeof msg.content === "string") {
426
- out.push({ role: "assistant", content: msg.content });
427
- }
428
- else if (Array.isArray(msg.content)) {
429
- let textContent = "";
430
- const toolCalls = [];
431
- for (const block of msg.content) {
432
- if (block.type === "text" && block.text) {
433
- textContent += block.text;
434
- }
435
- else if (block.type === "tool_use") {
436
- toolCalls.push({
437
- id: block.id,
438
- type: "function",
439
- function: {
440
- name: block.name,
441
- arguments: JSON.stringify(block.input || {}),
442
- },
443
- });
444
- }
445
- }
446
- const assistantMsg = { role: "assistant" };
447
- if (textContent)
448
- assistantMsg.content = textContent;
449
- if (toolCalls.length)
450
- assistantMsg.tool_calls = toolCalls;
451
- out.push(assistantMsg);
480
+ } else if (msg.role === "assistant") {
481
+ if (typeof msg.content === "string") {
482
+ out.push({
483
+ role: "assistant",
484
+ content: msg.content
485
+ });
486
+ } else if (Array.isArray(msg.content)) {
487
+ let textContent = "";
488
+ const toolCalls = [];
489
+ for (const block of msg.content) {
490
+ if (block.type === "text" && block.text) {
491
+ textContent += block.text;
492
+ } else if (block.type === "tool_use") {
493
+ toolCalls.push({
494
+ id: block.id,
495
+ type: "function",
496
+ function: {
497
+ name: block.name,
498
+ arguments: JSON.stringify(block.input || {})
452
499
  }
500
+ });
453
501
  }
502
+ }
503
+ const assistantMsg = {
504
+ role: "assistant"
505
+ };
506
+ if (textContent) assistantMsg.content = textContent;
507
+ if (toolCalls.length) assistantMsg.tool_calls = toolCalls;
508
+ out.push(assistantMsg);
454
509
  }
455
- return out;
510
+ }
456
511
  }
512
+ return out;
513
+ }
457
514
  }
515
+
458
516
  // ============================================================================
459
517
  // HELPERS
460
518
  // ============================================================================
519
+
461
520
  function sleep(ms) {
462
- return new Promise(resolve => setTimeout(resolve, ms));
521
+ return new Promise(resolve => setTimeout(resolve, ms));
463
522
  }
523
+
464
524
  // ============================================================================
465
525
  // SINGLETON EXPORT
466
526
  // ============================================================================
527
+
467
528
  export const batchClient = new BatchClient();
529
+ //# sourceMappingURL=batch-client.js.map