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
@@ -3,22 +3,27 @@
3
3
  //
4
4
  // Phase 7.1: Uses getProviderAdapter() from the registry instead of
5
5
  // maintaining its own adapter map. Provider adapters self-register on import.
6
+
6
7
  import { ALLOWED_MODELS, MODELS, MODEL_MAP, getProvider, isOpenAIReasoningModel } from "../shared/constants.js";
7
8
  import { getProviderAdapter } from "./providers/registry.js";
8
9
  import { jsonResponse } from "./providers/shared.js";
9
10
  import { canProviderHandleRequest, getBestProviderForRequest } from "./lib/provider-capabilities.js";
11
+
10
12
  // Import adapters to trigger self-registration via registerProvider()
11
13
  import "./providers/anthropic.js";
12
14
  import "./providers/bedrock.js";
13
15
  import "./providers/gemini.js";
14
16
  import "./providers/openai.js";
17
+
15
18
  // ============================================================================
16
19
  // MAX TOKEN LIMITS (per provider — used for proxy request clamping)
17
20
  // ============================================================================
21
+
18
22
  const ANTHROPIC_MAX_TOKENS = 128000;
19
23
  const GEMINI_MAX_TOKENS = 65536;
20
24
  const OPENAI_MAX_TOKENS = 128000;
21
25
  const OPENAI_REASONING_MAX_TOKENS = 100000;
26
+
22
27
  // ============================================================================
23
28
  // IMAGE MIME TYPE CORRECTION
24
29
  // ============================================================================
@@ -26,65 +31,70 @@ const OPENAI_REASONING_MAX_TOKENS = 100000;
26
31
  // mismatches. Prevents Anthropic API 400 errors that permanently poison the
27
32
  // conversation when a file extension doesn't match the actual image content
28
33
  // (e.g. a .webp file that's actually PNG).
29
- const IMAGE_SIGNATURES = [
30
- { prefix: "iVBORw0KGgo", type: "image/png" },
31
- { prefix: "/9j/", type: "image/jpeg" },
32
- { prefix: "R0lGOD", type: "image/gif" },
33
- { prefix: "UklGR", type: "image/webp" },
34
- ];
34
+
35
+ const IMAGE_SIGNATURES = [{
36
+ prefix: "iVBORw0KGgo",
37
+ type: "image/png"
38
+ }, {
39
+ prefix: "/9j/",
40
+ type: "image/jpeg"
41
+ }, {
42
+ prefix: "R0lGOD",
43
+ type: "image/gif"
44
+ }, {
45
+ prefix: "UklGR",
46
+ type: "image/webp"
47
+ }];
35
48
  function detectImageType(base64Data) {
36
- for (const sig of IMAGE_SIGNATURES) {
37
- if (base64Data.startsWith(sig.prefix)) {
38
- // RIFF header could be WebP or other formats — verify WEBP marker at offset 8
39
- if (sig.prefix === "UklGR") {
40
- try {
41
- const buf = Buffer.from(base64Data.slice(0, 24), "base64");
42
- if (buf.length >= 12 && buf.toString("ascii", 8, 12) === "WEBP") {
43
- return "image/webp";
44
- }
45
- }
46
- catch {
47
- return null;
48
- }
49
- return null;
50
- }
51
- return sig.type;
49
+ for (const sig of IMAGE_SIGNATURES) {
50
+ if (base64Data.startsWith(sig.prefix)) {
51
+ // RIFF header could be WebP or other formats — verify WEBP marker at offset 8
52
+ if (sig.prefix === "UklGR") {
53
+ try {
54
+ const buf = Buffer.from(base64Data.slice(0, 24), "base64");
55
+ if (buf.length >= 12 && buf.toString("ascii", 8, 12) === "WEBP") {
56
+ return "image/webp";
57
+ }
58
+ } catch {
59
+ return null;
52
60
  }
61
+ return null;
62
+ }
63
+ return sig.type;
53
64
  }
54
- return null;
65
+ }
66
+ return null;
55
67
  }
56
68
  function fixImageBlock(block) {
57
- if (block.type === "image" && block.source?.type === "base64" && block.source?.data) {
58
- const actual = detectImageType(block.source.data);
59
- if (actual && actual !== block.source.media_type) {
60
- console.log(`[proxy] Fixed image MIME: declared=${block.source.media_type} actual=${actual}`);
61
- block.source.media_type = actual;
62
- return true;
63
- }
69
+ if (block.type === "image" && block.source?.type === "base64" && block.source?.data) {
70
+ const actual = detectImageType(block.source.data);
71
+ if (actual && actual !== block.source.media_type) {
72
+ console.log(`[proxy] Fixed image MIME: declared=${block.source.media_type} actual=${actual}`);
73
+ block.source.media_type = actual;
74
+ return true;
64
75
  }
65
- return false;
76
+ }
77
+ return false;
66
78
  }
67
79
  function fixImageMimeTypes(messages) {
68
- let fixes = 0;
69
- for (const msg of messages) {
70
- if (!Array.isArray(msg.content))
71
- continue;
72
- for (const block of msg.content) {
73
- if (fixImageBlock(block))
74
- fixes++;
75
- // Also check tool_result blocks — images from Read tool end up here
76
- if (block.type === "tool_result" && Array.isArray(block.content)) {
77
- for (const sub of block.content) {
78
- if (fixImageBlock(sub))
79
- fixes++;
80
- }
81
- }
80
+ let fixes = 0;
81
+ for (const msg of messages) {
82
+ if (!Array.isArray(msg.content)) continue;
83
+ for (const block of msg.content) {
84
+ if (fixImageBlock(block)) fixes++;
85
+ // Also check tool_result blocks — images from Read tool end up here
86
+ if (block.type === "tool_result" && Array.isArray(block.content)) {
87
+ for (const sub of block.content) {
88
+ if (fixImageBlock(sub)) fixes++;
82
89
  }
90
+ }
83
91
  }
84
- if (fixes > 0) {
85
- console.log(`[proxy] Corrected ${fixes} image MIME type(s)`);
86
- }
92
+ }
93
+ if (fixes > 0) {
94
+ console.log(`[proxy] Corrected ${fixes} image MIME type(s)`);
95
+ }
87
96
  }
97
+
88
98
  // ============================================================================
89
99
  // IMAGE PRUNING — strip base64 from old turns to keep conversation size bounded
90
100
  // ============================================================================
@@ -92,149 +102,183 @@ function fixImageMimeTypes(messages) {
92
102
  // data only in the most recent user turn; older turns get their base64 replaced
93
103
  // with a lightweight "[image]" text placeholder. The model already processed
94
104
  // those images — it doesn't need the raw bytes again.
105
+
95
106
  function replaceImageBlock(block) {
96
- // Replace a base64 image block with a text placeholder.
97
- // Matches both full-data blocks AND blocks whose data was zeroed by the raw pruner.
98
- if (block.type === "image" && block.source?.type === "base64") {
99
- block.type = "text";
100
- block.text = "[image]";
101
- delete block.source;
102
- return true;
103
- }
104
- return false;
107
+ // Replace a base64 image block with a text placeholder.
108
+ // Matches both full-data blocks AND blocks whose data was zeroed by the raw pruner.
109
+ if (block.type === "image" && block.source?.type === "base64") {
110
+ block.type = "text";
111
+ block.text = "[image]";
112
+ delete block.source;
113
+ return true;
114
+ }
115
+ return false;
105
116
  }
106
117
  function pruneOldImages(messages) {
107
- // Find index of last user message — that turn keeps full image data
108
- let lastUserIdx = -1;
109
- for (let i = messages.length - 1; i >= 0; i--) {
110
- if (messages[i].role === "user") {
111
- lastUserIdx = i;
112
- break;
113
- }
118
+ // Find index of last user message — that turn keeps full image data
119
+ let lastUserIdx = -1;
120
+ for (let i = messages.length - 1; i >= 0; i--) {
121
+ if (messages[i].role === "user") {
122
+ lastUserIdx = i;
123
+ break;
114
124
  }
115
- let pruned = 0;
116
- for (let i = 0; i < messages.length; i++) {
117
- if (i === lastUserIdx)
118
- continue; // keep latest user turn intact
119
- const msg = messages[i];
120
- if (!Array.isArray(msg.content))
121
- continue;
122
- for (const block of msg.content) {
123
- if (replaceImageBlock(block)) {
124
- pruned++;
125
- continue;
126
- }
127
- if (block.type === "tool_result" && Array.isArray(block.content)) {
128
- for (const sub of block.content) {
129
- if (replaceImageBlock(sub))
130
- pruned++;
131
- }
132
- }
125
+ }
126
+ let pruned = 0;
127
+ for (let i = 0; i < messages.length; i++) {
128
+ if (i === lastUserIdx) continue; // keep latest user turn intact
129
+ const msg = messages[i];
130
+ if (!Array.isArray(msg.content)) continue;
131
+ for (const block of msg.content) {
132
+ if (replaceImageBlock(block)) {
133
+ pruned++;
134
+ continue;
135
+ }
136
+ if (block.type === "tool_result" && Array.isArray(block.content)) {
137
+ for (const sub of block.content) {
138
+ if (replaceImageBlock(sub)) pruned++;
133
139
  }
140
+ }
134
141
  }
135
- if (pruned > 0)
136
- console.log(`[proxy] Pruned ${pruned} base64 image(s) from old conversation turns`);
142
+ }
143
+ if (pruned > 0) console.log(`[proxy] Pruned ${pruned} base64 image(s) from old conversation turns`);
137
144
  }
145
+
138
146
  /** Remove any image blocks with empty/missing data — left by the raw body pruner.
139
147
  * These would cause a 400 from Anthropic regardless of which turn they're in. */
140
148
  function removeEmptyImageBlocks(messages) {
141
- let removed = 0;
142
- for (const msg of messages) {
143
- if (!Array.isArray(msg.content))
144
- continue;
145
- for (const block of msg.content) {
146
- if (block.type === "image" && block.source?.type === "base64" && !block.source?.data) {
147
- block.type = "text";
148
- block.text = "[image]";
149
- delete block.source;
150
- removed++;
151
- }
152
- if (block.type === "tool_result" && Array.isArray(block.content)) {
153
- for (const sub of block.content) {
154
- if (sub.type === "image" && sub.source?.type === "base64" && !sub.source?.data) {
155
- sub.type = "text";
156
- sub.text = "[image]";
157
- delete sub.source;
158
- removed++;
159
- }
160
- }
161
- }
149
+ let removed = 0;
150
+ for (const msg of messages) {
151
+ if (!Array.isArray(msg.content)) continue;
152
+ for (const block of msg.content) {
153
+ if (block.type === "image" && block.source?.type === "base64" && !block.source?.data) {
154
+ block.type = "text";
155
+ block.text = "[image]";
156
+ delete block.source;
157
+ removed++;
158
+ }
159
+ if (block.type === "tool_result" && Array.isArray(block.content)) {
160
+ for (const sub of block.content) {
161
+ if (sub.type === "image" && sub.source?.type === "base64" && !sub.source?.data) {
162
+ sub.type = "text";
163
+ sub.text = "[image]";
164
+ delete sub.source;
165
+ removed++;
166
+ }
162
167
  }
168
+ }
163
169
  }
164
- if (removed > 0)
165
- console.log(`[proxy] Removed ${removed} empty image block(s) from messages`);
170
+ }
171
+ if (removed > 0) console.log(`[proxy] Removed ${removed} empty image block(s) from messages`);
166
172
  }
173
+
167
174
  // ============================================================================
168
175
  // MAIN PROXY DISPATCHER
169
176
  // ============================================================================
177
+
170
178
  export async function handleProxy(res, body, corsHeaders) {
171
- const { messages, system, tools, model: requestedModel = MODELS.SONNET, max_tokens: requestedMaxTokens = 4096, temperature, stream = true, betas, context_management, thinking, store_id: storeId, tool_choice: rawToolChoice, documents, } = body;
172
- if (!messages || !Array.isArray(messages)) {
173
- jsonResponse(res, 400, { error: "messages array required" }, corsHeaders);
174
- return;
175
- }
176
- // Fix mismatched image MIME types before they hit the API
177
- fixImageMimeTypes(messages);
178
- // Strip base64 data from old turns — keeps request size bounded across long conversations
179
- pruneOldImages(messages);
180
- // Remove empty image blocks left by the raw body pruner (data:"") — would cause Anthropic 400
181
- removeEmptyImageBlocks(messages);
182
- // Resolve aliases (e.g. "whale/agent" → "claude-opus-4-6", "opus" → "claude-opus-4-6")
183
- const resolved = MODEL_MAP[requestedModel] || requestedModel;
184
- const model = ALLOWED_MODELS.includes(resolved) ? resolved : MODELS.SONNET;
185
- let provider = getProvider(model);
186
- // Detect request capabilities from message content
187
- const requirements = detectRequestCapabilities(messages, { hasCitations: !!documents?.length });
188
- // If the selected provider can't handle the request, re-route to a capable one
189
- if (!canProviderHandleRequest(provider, requirements)) {
190
- const betterProvider = getBestProviderForRequest(requirements);
191
- console.log(`[proxy] ${provider} lacks capabilities for this request, re-routing to ${betterProvider}`);
192
- provider = betterProvider;
193
- }
194
- const maxTokensLimit = provider === "gemini" ? GEMINI_MAX_TOKENS
195
- : provider === "openai" ? (isOpenAIReasoningModel(model) ? OPENAI_REASONING_MAX_TOKENS : OPENAI_MAX_TOKENS)
196
- : ANTHROPIC_MAX_TOKENS;
197
- const max_tokens = Math.min(Math.max(1, Number(requestedMaxTokens) || 4096), maxTokensLimit);
198
- // Delegate to provider adapter via registry
199
- const adapter = getProviderAdapter(provider);
200
- // Normalize tool_choice: accept string or object from client
201
- const tool_choice = rawToolChoice;
202
- await adapter.handleStream(res, {
203
- model, messages, system, tools, max_tokens,
204
- temperature, stream, betas, context_management, thinking, tool_choice, storeId, documents,
179
+ const {
180
+ messages,
181
+ system,
182
+ tools,
183
+ model: requestedModel = MODELS.SONNET,
184
+ max_tokens: requestedMaxTokens = 4096,
185
+ temperature,
186
+ stream = true,
187
+ betas,
188
+ context_management,
189
+ thinking,
190
+ store_id: storeId,
191
+ tool_choice: rawToolChoice,
192
+ documents
193
+ } = body;
194
+ if (!messages || !Array.isArray(messages)) {
195
+ jsonResponse(res, 400, {
196
+ error: "messages array required"
205
197
  }, corsHeaders);
198
+ return;
199
+ }
200
+
201
+ // Fix mismatched image MIME types before they hit the API
202
+ fixImageMimeTypes(messages);
203
+
204
+ // Strip base64 data from old turns — keeps request size bounded across long conversations
205
+ pruneOldImages(messages);
206
+
207
+ // Remove empty image blocks left by the raw body pruner (data:"") — would cause Anthropic 400
208
+ removeEmptyImageBlocks(messages);
209
+
210
+ // Resolve aliases (e.g. "whale/agent" → "claude-opus-4-6", "opus" → "claude-opus-4-6")
211
+ const resolved = MODEL_MAP[requestedModel] || requestedModel;
212
+ const model = ALLOWED_MODELS.includes(resolved) ? resolved : MODELS.SONNET;
213
+ let provider = getProvider(model);
214
+
215
+ // Detect request capabilities from message content
216
+ const requirements = detectRequestCapabilities(messages, {
217
+ hasCitations: !!documents?.length
218
+ });
219
+
220
+ // If the selected provider can't handle the request, re-route to a capable one
221
+ if (!canProviderHandleRequest(provider, requirements)) {
222
+ const betterProvider = getBestProviderForRequest(requirements);
223
+ console.log(`[proxy] ${provider} lacks capabilities for this request, re-routing to ${betterProvider}`);
224
+ provider = betterProvider;
225
+ }
226
+ const maxTokensLimit = provider === "gemini" ? GEMINI_MAX_TOKENS : provider === "openai" ? isOpenAIReasoningModel(model) ? OPENAI_REASONING_MAX_TOKENS : OPENAI_MAX_TOKENS : ANTHROPIC_MAX_TOKENS;
227
+ const max_tokens = Math.min(Math.max(1, Number(requestedMaxTokens) || 4096), maxTokensLimit);
228
+
229
+ // Delegate to provider adapter via registry
230
+ const adapter = getProviderAdapter(provider);
231
+ // Normalize tool_choice: accept string or object from client
232
+ const tool_choice = rawToolChoice;
233
+ await adapter.handleStream(res, {
234
+ model,
235
+ messages,
236
+ system,
237
+ tools,
238
+ max_tokens,
239
+ temperature,
240
+ stream,
241
+ betas,
242
+ context_management,
243
+ thinking,
244
+ tool_choice,
245
+ storeId,
246
+ documents
247
+ }, corsHeaders);
206
248
  }
249
+
207
250
  // ============================================================================
208
251
  // REQUEST CAPABILITY DETECTION
209
252
  // ============================================================================
253
+
210
254
  /**
211
255
  * Scan messages to detect what capabilities the request requires.
212
256
  * Looks for image blocks, PDF content types, computer_use tools, etc.
213
257
  */
214
258
  function detectRequestCapabilities(messages, hints) {
215
- const requirements = {};
216
- if (hints?.hasCitations) {
217
- requirements.needsCitations = true;
218
- }
219
- for (const msg of messages) {
220
- if (!Array.isArray(msg.content))
221
- continue;
222
- for (const block of msg.content) {
223
- // Image detection: Anthropic image blocks
224
- if (block.type === "image" && block.source) {
225
- requirements.hasImages = true;
226
- }
227
- // PDF detection: document blocks with PDF media type
228
- if (block.type === "document" ||
229
- (block.source?.media_type && block.source.media_type === "application/pdf")) {
230
- requirements.hasPdf = true;
231
- }
232
- // Computer use detection: tool_use with computer_use-related tools
233
- if (block.type === "tool_use" &&
234
- (block.name === "computer" || block.name === "computer_use")) {
235
- requirements.needsComputerUse = true;
236
- }
237
- }
259
+ const requirements = {};
260
+ if (hints?.hasCitations) {
261
+ requirements.needsCitations = true;
262
+ }
263
+ for (const msg of messages) {
264
+ if (!Array.isArray(msg.content)) continue;
265
+ for (const block of msg.content) {
266
+ // Image detection: Anthropic image blocks
267
+ if (block.type === "image" && block.source) {
268
+ requirements.hasImages = true;
269
+ }
270
+
271
+ // PDF detection: document blocks with PDF media type
272
+ if (block.type === "document" || block.source?.media_type && block.source.media_type === "application/pdf") {
273
+ requirements.hasPdf = true;
274
+ }
275
+
276
+ // Computer use detection: tool_use with computer_use-related tools
277
+ if (block.type === "tool_use" && (block.name === "computer" || block.name === "computer_use")) {
278
+ requirements.needsComputerUse = true;
279
+ }
238
280
  }
239
- return requirements;
281
+ }
282
+ return requirements;
240
283
  }
284
+ //# sourceMappingURL=proxy-handlers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proxy-handlers.js","names":["ALLOWED_MODELS","MODELS","MODEL_MAP","getProvider","isOpenAIReasoningModel","getProviderAdapter","jsonResponse","canProviderHandleRequest","getBestProviderForRequest","ANTHROPIC_MAX_TOKENS","GEMINI_MAX_TOKENS","OPENAI_MAX_TOKENS","OPENAI_REASONING_MAX_TOKENS","IMAGE_SIGNATURES","prefix","type","detectImageType","base64Data","sig","startsWith","buf","Buffer","from","slice","length","toString","fixImageBlock","block","source","data","actual","media_type","console","log","fixImageMimeTypes","messages","fixes","msg","Array","isArray","content","sub","replaceImageBlock","text","pruneOldImages","lastUserIdx","i","role","pruned","removeEmptyImageBlocks","removed","handleProxy","res","body","corsHeaders","system","tools","model","requestedModel","SONNET","max_tokens","requestedMaxTokens","temperature","stream","betas","context_management","thinking","store_id","storeId","tool_choice","rawToolChoice","documents","error","resolved","includes","provider","requirements","detectRequestCapabilities","hasCitations","betterProvider","maxTokensLimit","Math","min","max","Number","adapter","handleStream","hints","needsCitations","hasImages","hasPdf","name","needsComputerUse"],"sources":["../../src/server/proxy-handlers.ts"],"sourcesContent":["// server/proxy-handlers.ts — Multi-provider API proxy router\n// Thin dispatcher that delegates to provider adapters via the registry.\n//\n// Phase 7.1: Uses getProviderAdapter() from the registry instead of\n// maintaining its own adapter map. Provider adapters self-register on import.\n\nimport type http from \"node:http\";\nimport { ALLOWED_MODELS, MODELS, MODEL_MAP, getProvider, isOpenAIReasoningModel } from \"../shared/constants.js\";\nimport type { ModelProvider } from \"../shared/constants.js\";\nimport { getProviderAdapter } from \"./providers/registry.js\";\nimport { jsonResponse } from \"./providers/shared.js\";\nimport { canProviderHandleRequest, getBestProviderForRequest, type RequestCapabilityRequirements } from \"./lib/provider-capabilities.js\";\n\n// Import adapters to trigger self-registration via registerProvider()\nimport \"./providers/anthropic.js\";\nimport \"./providers/bedrock.js\";\nimport \"./providers/gemini.js\";\nimport \"./providers/openai.js\";\n\n// ============================================================================\n// MAX TOKEN LIMITS (per provider — used for proxy request clamping)\n// ============================================================================\n\nconst ANTHROPIC_MAX_TOKENS = 128000;\nconst GEMINI_MAX_TOKENS = 65536;\nconst OPENAI_MAX_TOKENS = 128000;\nconst OPENAI_REASONING_MAX_TOKENS = 100000;\n\n// ============================================================================\n// IMAGE MIME TYPE CORRECTION\n// ============================================================================\n// Detects actual image format from base64 magic bytes and corrects media_type\n// mismatches. Prevents Anthropic API 400 errors that permanently poison the\n// conversation when a file extension doesn't match the actual image content\n// (e.g. a .webp file that's actually PNG).\n\nconst IMAGE_SIGNATURES = [\n { prefix: \"iVBORw0KGgo\", type: \"image/png\" },\n { prefix: \"/9j/\", type: \"image/jpeg\" },\n { prefix: \"R0lGOD\", type: \"image/gif\" },\n { prefix: \"UklGR\", type: \"image/webp\" },\n] as const;\n\ntype ImageMediaType = \"image/png\" | \"image/jpeg\" | \"image/gif\" | \"image/webp\";\n\nfunction detectImageType(base64Data: string): ImageMediaType | null {\n for (const sig of IMAGE_SIGNATURES) {\n if (base64Data.startsWith(sig.prefix)) {\n // RIFF header could be WebP or other formats — verify WEBP marker at offset 8\n if (sig.prefix === \"UklGR\") {\n try {\n const buf = Buffer.from(base64Data.slice(0, 24), \"base64\");\n if (buf.length >= 12 && buf.toString(\"ascii\", 8, 12) === \"WEBP\") {\n return \"image/webp\";\n }\n } catch { return null; }\n return null;\n }\n return sig.type;\n }\n }\n return null;\n}\n\nfunction fixImageBlock(block: any): boolean {\n if (block.type === \"image\" && block.source?.type === \"base64\" && block.source?.data) {\n const actual = detectImageType(block.source.data);\n if (actual && actual !== block.source.media_type) {\n console.log(`[proxy] Fixed image MIME: declared=${block.source.media_type} actual=${actual}`);\n block.source.media_type = actual;\n return true;\n }\n }\n return false;\n}\n\nfunction fixImageMimeTypes(messages: any[]): void {\n let fixes = 0;\n for (const msg of messages) {\n if (!Array.isArray(msg.content)) continue;\n for (const block of msg.content) {\n if (fixImageBlock(block)) fixes++;\n // Also check tool_result blocks — images from Read tool end up here\n if (block.type === \"tool_result\" && Array.isArray(block.content)) {\n for (const sub of block.content) {\n if (fixImageBlock(sub)) fixes++;\n }\n }\n }\n }\n if (fixes > 0) {\n console.log(`[proxy] Corrected ${fixes} image MIME type(s)`);\n }\n}\n\n// ============================================================================\n// IMAGE PRUNING — strip base64 from old turns to keep conversation size bounded\n// ============================================================================\n// Conversation history with many images grows unboundedly. We keep full image\n// data only in the most recent user turn; older turns get their base64 replaced\n// with a lightweight \"[image]\" text placeholder. The model already processed\n// those images — it doesn't need the raw bytes again.\n\nfunction replaceImageBlock(block: any): boolean {\n // Replace a base64 image block with a text placeholder.\n // Matches both full-data blocks AND blocks whose data was zeroed by the raw pruner.\n if (block.type === \"image\" && block.source?.type === \"base64\") {\n block.type = \"text\";\n block.text = \"[image]\";\n delete block.source;\n return true;\n }\n return false;\n}\n\nfunction pruneOldImages(messages: any[]): void {\n // Find index of last user message — that turn keeps full image data\n let lastUserIdx = -1;\n for (let i = messages.length - 1; i >= 0; i--) {\n if (messages[i].role === \"user\") { lastUserIdx = i; break; }\n }\n\n let pruned = 0;\n for (let i = 0; i < messages.length; i++) {\n if (i === lastUserIdx) continue; // keep latest user turn intact\n const msg = messages[i];\n if (!Array.isArray(msg.content)) continue;\n for (const block of msg.content) {\n if (replaceImageBlock(block)) { pruned++; continue; }\n if (block.type === \"tool_result\" && Array.isArray(block.content)) {\n for (const sub of block.content) {\n if (replaceImageBlock(sub)) pruned++;\n }\n }\n }\n }\n if (pruned > 0) console.log(`[proxy] Pruned ${pruned} base64 image(s) from old conversation turns`);\n}\n\n/** Remove any image blocks with empty/missing data — left by the raw body pruner.\n * These would cause a 400 from Anthropic regardless of which turn they're in. */\nfunction removeEmptyImageBlocks(messages: any[]): void {\n let removed = 0;\n for (const msg of messages) {\n if (!Array.isArray(msg.content)) continue;\n for (const block of msg.content) {\n if (block.type === \"image\" && block.source?.type === \"base64\" && !block.source?.data) {\n block.type = \"text\";\n block.text = \"[image]\";\n delete block.source;\n removed++;\n }\n if (block.type === \"tool_result\" && Array.isArray(block.content)) {\n for (const sub of block.content) {\n if (sub.type === \"image\" && sub.source?.type === \"base64\" && !sub.source?.data) {\n sub.type = \"text\";\n sub.text = \"[image]\";\n delete sub.source;\n removed++;\n }\n }\n }\n }\n }\n if (removed > 0) console.log(`[proxy] Removed ${removed} empty image block(s) from messages`);\n}\n\n// ============================================================================\n// MAIN PROXY DISPATCHER\n// ============================================================================\n\nexport async function handleProxy(\n res: http.ServerResponse,\n body: any,\n corsHeaders: Record<string, string>,\n): Promise<void> {\n const {\n messages,\n system,\n tools,\n model: requestedModel = MODELS.SONNET,\n max_tokens: requestedMaxTokens = 4096,\n temperature,\n stream = true,\n betas,\n context_management,\n thinking,\n store_id: storeId,\n tool_choice: rawToolChoice,\n documents,\n } = body;\n\n if (!messages || !Array.isArray(messages)) {\n jsonResponse(res, 400, { error: \"messages array required\" }, corsHeaders);\n return;\n }\n\n // Fix mismatched image MIME types before they hit the API\n fixImageMimeTypes(messages);\n\n // Strip base64 data from old turns — keeps request size bounded across long conversations\n pruneOldImages(messages);\n\n // Remove empty image blocks left by the raw body pruner (data:\"\") — would cause Anthropic 400\n removeEmptyImageBlocks(messages);\n\n // Resolve aliases (e.g. \"whale/agent\" → \"claude-opus-4-6\", \"opus\" → \"claude-opus-4-6\")\n const resolved = MODEL_MAP[requestedModel] || requestedModel;\n const model = ALLOWED_MODELS.includes(resolved) ? resolved : MODELS.SONNET;\n let provider = getProvider(model) as ModelProvider;\n\n // Detect request capabilities from message content\n const requirements = detectRequestCapabilities(messages, { hasCitations: !!documents?.length });\n\n // If the selected provider can't handle the request, re-route to a capable one\n if (!canProviderHandleRequest(provider, requirements)) {\n const betterProvider = getBestProviderForRequest(requirements);\n console.log(`[proxy] ${provider} lacks capabilities for this request, re-routing to ${betterProvider}`);\n provider = betterProvider;\n }\n\n const maxTokensLimit = provider === \"gemini\" ? GEMINI_MAX_TOKENS\n : provider === \"openai\" ? (isOpenAIReasoningModel(model) ? OPENAI_REASONING_MAX_TOKENS : OPENAI_MAX_TOKENS)\n : ANTHROPIC_MAX_TOKENS;\n const max_tokens = Math.min(Math.max(1, Number(requestedMaxTokens) || 4096), maxTokensLimit);\n\n // Delegate to provider adapter via registry\n const adapter = getProviderAdapter(provider);\n // Normalize tool_choice: accept string or object from client\n const tool_choice = rawToolChoice as import(\"../shared/agent-core.js\").ToolChoice | undefined;\n\n await adapter.handleStream(res, {\n model, messages, system, tools, max_tokens,\n temperature, stream, betas, context_management, thinking, tool_choice, storeId, documents,\n }, corsHeaders);\n}\n\n// ============================================================================\n// REQUEST CAPABILITY DETECTION\n// ============================================================================\n\n/**\n * Scan messages to detect what capabilities the request requires.\n * Looks for image blocks, PDF content types, computer_use tools, etc.\n */\nfunction detectRequestCapabilities(\n messages: any[],\n hints?: { hasCitations?: boolean },\n): RequestCapabilityRequirements {\n const requirements: RequestCapabilityRequirements = {};\n\n if (hints?.hasCitations) {\n requirements.needsCitations = true;\n }\n\n for (const msg of messages) {\n if (!Array.isArray(msg.content)) continue;\n\n for (const block of msg.content) {\n // Image detection: Anthropic image blocks\n if (block.type === \"image\" && block.source) {\n requirements.hasImages = true;\n }\n\n // PDF detection: document blocks with PDF media type\n if (\n block.type === \"document\" ||\n (block.source?.media_type && block.source.media_type === \"application/pdf\")\n ) {\n requirements.hasPdf = true;\n }\n\n // Computer use detection: tool_use with computer_use-related tools\n if (\n block.type === \"tool_use\" &&\n (block.name === \"computer\" || block.name === \"computer_use\")\n ) {\n requirements.needsComputerUse = true;\n }\n }\n }\n\n return requirements;\n}\n"],"mappings":"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","ignoreList":[]}