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
@@ -4,16 +4,20 @@
4
4
  * Replaces proxy+direct call paths in agent-loop, subagent, teammate.
5
5
  * CLI-only: always calls through server proxy (no direct Anthropic SDK usage).
6
6
  */
7
- import { getContextManagement, getMaxOutputTokens, getThinkingConfig, isRetryableError, addPromptCaching, } from "./agent-core.js";
7
+
8
+ import { getContextManagement, getMaxOutputTokens, getThinkingConfig, isRetryableError, addPromptCaching } from "./agent-core.js";
8
9
  import { getProvider } from "./constants.js";
9
10
  // ============================================================================
10
11
  // CONSTANTS
11
12
  // ============================================================================
13
+
12
14
  const MAX_RETRIES = 3;
13
15
  const RETRY_BASE_DELAY_MS = 1000;
16
+
14
17
  // ============================================================================
15
18
  // API REQUEST CONFIG BUILDER
16
19
  // ============================================================================
20
+
17
21
  /**
18
22
  * Build all Anthropic API config from a simple profile.
19
23
  *
@@ -23,293 +27,359 @@ const RETRY_BASE_DELAY_MS = 1000;
23
27
  * - 'teammate': clear at 80K/keep 3, no compaction
24
28
  */
25
29
  export function buildAPIRequest(opts) {
26
- const { model, contextProfile, thinkingEnabled = false, maxOutputTokens, contextOverrides } = opts;
27
- // Context management config per profile
28
- // Non-Anthropic models (Gemini, OpenAI, etc.) don't support Anthropic betas or context management
29
- const provider = getProvider(model);
30
- const isAnthropicModel = provider === "anthropic" || provider === "bedrock";
31
- let betas = isAnthropicModel ? ["context-management-2025-06-27"] : [];
32
- let edits = [];
33
- switch (contextProfile) {
34
- case "main": {
35
- const ctxMgmt = getContextManagement(model, contextOverrides);
36
- betas = [...ctxMgmt.betas];
37
- edits = ctxMgmt.config.edits;
38
- break;
30
+ const {
31
+ model,
32
+ contextProfile,
33
+ thinkingEnabled = false,
34
+ maxOutputTokens,
35
+ contextOverrides
36
+ } = opts;
37
+
38
+ // Context management config per profile
39
+ // Non-Anthropic models (Gemini, OpenAI, etc.) don't support Anthropic betas or context management
40
+ const provider = getProvider(model);
41
+ const isAnthropicModel = provider === "anthropic" || provider === "bedrock";
42
+ let betas = isAnthropicModel ? ["context-management-2025-06-27"] : [];
43
+ let edits = [];
44
+ switch (contextProfile) {
45
+ case "main":
46
+ {
47
+ const ctxMgmt = getContextManagement(model, contextOverrides);
48
+ betas = [...ctxMgmt.betas];
49
+ edits = ctxMgmt.config.edits;
50
+ break;
51
+ }
52
+ case "subagent":
53
+ if (isAnthropicModel) {
54
+ edits = [{
55
+ type: "clear_thinking_20251015",
56
+ keep: {
57
+ type: "thinking_turns",
58
+ value: 1
59
+ }
60
+ }, {
61
+ type: "clear_tool_uses_20250919",
62
+ trigger: {
63
+ type: "input_tokens",
64
+ value: 60_000
65
+ },
66
+ keep: {
67
+ type: "tool_uses",
68
+ value: 2
69
+ }
70
+ }];
71
+ // Compaction for sub-agents on models that support it (lower threshold than main agent).
72
+ // Trigger at 80K — above the 60K clear_tool_uses threshold so clearing fires first.
73
+ const supportsCompaction = model.includes("opus-4-6") || model.includes("sonnet-4-6");
74
+ if (supportsCompaction) {
75
+ edits.push({
76
+ type: "compact_20260112",
77
+ trigger: {
78
+ type: "input_tokens",
79
+ value: 80_000
80
+ },
81
+ pause_after_compaction: true,
82
+ instructions: "Summarize preserving: task goal, files found/modified, key findings, next steps."
83
+ });
84
+ betas.push("compact-2026-01-12");
39
85
  }
40
- case "subagent":
41
- if (isAnthropicModel) {
42
- edits = [
43
- {
44
- type: "clear_thinking_20251015",
45
- keep: { type: "thinking_turns", value: 1 },
46
- },
47
- {
48
- type: "clear_tool_uses_20250919",
49
- trigger: { type: "input_tokens", value: 60_000 },
50
- keep: { type: "tool_uses", value: 2 },
51
- },
52
- ];
53
- // Compaction for sub-agents on models that support it (lower threshold than main agent).
54
- // Trigger at 80K — above the 60K clear_tool_uses threshold so clearing fires first.
55
- const supportsCompaction = model.includes("opus-4-6") || model.includes("sonnet-4-6");
56
- if (supportsCompaction) {
57
- edits.push({
58
- type: "compact_20260112",
59
- trigger: { type: "input_tokens", value: 80_000 },
60
- pause_after_compaction: true,
61
- instructions: "Summarize preserving: task goal, files found/modified, key findings, next steps.",
62
- });
63
- betas.push("compact-2026-01-12");
64
- }
65
- }
66
- break;
67
- case "teammate": {
68
- const ctxMgmt = getContextManagement(model);
69
- betas = [...ctxMgmt.betas];
70
- edits = ctxMgmt.config.edits;
71
- break;
72
- }
73
- }
74
- // Thinking config
75
- const thinkingCfg = getThinkingConfig(model, thinkingEnabled);
76
- if (thinkingCfg.beta)
77
- betas.push(thinkingCfg.beta);
78
- // Max tokens — caller is responsible for setting appropriate limits per context
79
- const maxTokens = getMaxOutputTokens(model, maxOutputTokens);
80
- // Build thinking param (ensure budget < maxTokens)
81
- // Only include for Anthropic/Bedrock — Gemini/OpenAI handle thinking internally
82
- let thinking;
83
- if (isAnthropicModel && thinkingCfg.thinking.type !== "disabled") {
84
- thinking = thinkingCfg.thinking.budget_tokens
85
- ? { ...thinkingCfg.thinking, budget_tokens: Math.min(thinkingCfg.thinking.budget_tokens, maxTokens - 1) }
86
- : thinkingCfg.thinking;
87
- }
88
- // Strip clear_thinking edits when thinking is disabled — API requires thinking
89
- // to be enabled or adaptive for clear_thinking_20251015 to be accepted
90
- if (!thinking) {
91
- edits = edits.filter(e => e.type !== "clear_thinking_20251015");
92
- }
93
- return {
94
- betas,
95
- contextManagement: { edits },
96
- thinking,
97
- maxTokens,
98
- };
86
+ }
87
+ break;
88
+ case "teammate":
89
+ {
90
+ const ctxMgmt = getContextManagement(model);
91
+ betas = [...ctxMgmt.betas];
92
+ edits = ctxMgmt.config.edits;
93
+ break;
94
+ }
95
+ }
96
+
97
+ // Thinking config
98
+ const thinkingCfg = getThinkingConfig(model, thinkingEnabled);
99
+ if (thinkingCfg.beta) betas.push(thinkingCfg.beta);
100
+
101
+ // Max tokens caller is responsible for setting appropriate limits per context
102
+ const maxTokens = getMaxOutputTokens(model, maxOutputTokens);
103
+
104
+ // Build thinking param (ensure budget < maxTokens)
105
+ // Only include for Anthropic/Bedrock Gemini/OpenAI handle thinking internally
106
+ let thinking;
107
+ if (isAnthropicModel && thinkingCfg.thinking.type !== "disabled") {
108
+ thinking = thinkingCfg.thinking.budget_tokens ? {
109
+ ...thinkingCfg.thinking,
110
+ budget_tokens: Math.min(thinkingCfg.thinking.budget_tokens, maxTokens - 1)
111
+ } : thinkingCfg.thinking;
112
+ }
113
+
114
+ // Strip clear_thinking edits when thinking is disabled — API requires thinking
115
+ // to be enabled or adaptive for clear_thinking_20251015 to be accepted
116
+ if (!thinking) {
117
+ edits = edits.filter(e => e.type !== "clear_thinking_20251015");
118
+ }
119
+ return {
120
+ betas,
121
+ contextManagement: {
122
+ edits
123
+ },
124
+ thinking,
125
+ maxTokens
126
+ };
99
127
  }
128
+
129
+ // ============================================================================
130
+ // SERVER PROXY CALLER
131
+ // ============================================================================
132
+
100
133
  /**
101
134
  * Call server proxy endpoint and return raw SSE stream.
102
135
  * Retries with exponential backoff on 429/500/529.
103
136
  */
104
137
  export async function callServerProxy(config) {
105
- const { proxyUrl, signal, timeoutMs } = config;
106
- let tokenRefreshed = false;
107
- for (let attempt = 0; attempt <= MAX_RETRIES; attempt++) {
108
- try {
109
- const body = {
110
- mode: "proxy",
111
- messages: config.messages,
112
- system: config.system,
113
- tools: config.tools,
114
- model: config.model,
115
- max_tokens: config.apiConfig.maxTokens,
116
- stream: true,
117
- betas: config.apiConfig.betas,
118
- ...(config.apiConfig.contextManagement?.edits?.length
119
- ? { context_management: config.apiConfig.contextManagement }
120
- : {}),
121
- };
122
- if (config.apiConfig.thinking) {
123
- body.thinking = config.apiConfig.thinking;
124
- }
125
- if (config.storeId) {
126
- body.store_id = config.storeId;
127
- }
128
- // Prune old base64 images from conversation history before serializing.
129
- // Keep images only in the last 2 messages to avoid multi-MB request bodies
130
- // that can cause "Invalid JSON" errors from body truncation on the proxy.
131
- if (Array.isArray(body.messages) && body.messages.length > 4) {
132
- const msgs = body.messages;
133
- const keepFrom = Math.max(0, msgs.length - 2);
134
- for (let i = 0; i < keepFrom; i++) {
135
- const msg = msgs[i];
136
- if (!Array.isArray(msg?.content))
137
- continue;
138
- for (const block of msg.content) {
139
- if (block.type === "image" && block.source?.type === "base64") {
140
- block.type = "text";
141
- block.text = "[image]";
142
- delete block.source;
143
- }
144
- if (block.type === "tool_result" && Array.isArray(block.content)) {
145
- for (const sub of block.content) {
146
- if (sub.type === "image" && sub.source?.type === "base64") {
147
- sub.type = "text";
148
- sub.text = "[image]";
149
- delete sub.source;
150
- }
151
- }
152
- }
153
- }
154
- }
155
- }
156
- const serialized = JSON.stringify(body);
157
- const fetchOpts = {
158
- method: "POST",
159
- headers: {
160
- "Content-Type": "application/json",
161
- "Authorization": `Bearer ${config.token}`,
162
- "Content-Length": String(Buffer.byteLength(serialized)),
163
- },
164
- body: serialized,
165
- signal,
166
- };
167
- // Apply timeout only when the caller did NOT already supply a signal
168
- let controller;
169
- let timeout;
170
- if (timeoutMs && !signal) {
171
- controller = new AbortController();
172
- timeout = setTimeout(() => controller.abort(), timeoutMs);
173
- fetchOpts.signal = controller.signal;
138
+ const {
139
+ proxyUrl,
140
+ signal,
141
+ timeoutMs
142
+ } = config;
143
+ let tokenRefreshed = false;
144
+ for (let attempt = 0; attempt <= MAX_RETRIES; attempt++) {
145
+ try {
146
+ const body = {
147
+ mode: "proxy",
148
+ messages: config.messages,
149
+ system: config.system,
150
+ tools: config.tools,
151
+ model: config.model,
152
+ max_tokens: config.apiConfig.maxTokens,
153
+ stream: true,
154
+ betas: config.apiConfig.betas,
155
+ ...(config.apiConfig.contextManagement?.edits?.length ? {
156
+ context_management: config.apiConfig.contextManagement
157
+ } : {})
158
+ };
159
+ if (config.apiConfig.thinking) {
160
+ body.thinking = config.apiConfig.thinking;
161
+ // Anthropic requires temperature=1.0 when thinking is enabled enforce client-side
162
+ if (config.apiConfig.thinking.type !== "disabled") {
163
+ body.temperature = 1.0;
164
+ }
165
+ }
166
+ if (config.storeId) {
167
+ body.store_id = config.storeId;
168
+ }
169
+
170
+ // Prune old base64 images from conversation history before serializing.
171
+ // Keep images only in the last 2 messages to avoid multi-MB request bodies
172
+ // that can cause "Invalid JSON" errors from body truncation on the proxy.
173
+ if (Array.isArray(body.messages) && body.messages.length > 4) {
174
+ const msgs = body.messages;
175
+ const keepFrom = Math.max(0, msgs.length - 2);
176
+ for (let i = 0; i < keepFrom; i++) {
177
+ const msg = msgs[i];
178
+ if (!Array.isArray(msg?.content)) continue;
179
+ for (const block of msg.content) {
180
+ if (block.type === "image" && block.source?.type === "base64") {
181
+ block.type = "text";
182
+ block.text = "[image]";
183
+ delete block.source;
174
184
  }
175
- try {
176
- const response = await fetch(proxyUrl, fetchOpts);
177
- if (timeout)
178
- clearTimeout(timeout);
179
- if (response.ok && response.body) {
180
- return response.body;
181
- }
182
- const errorBody = await response.text();
183
- // Auto-refresh on 401 (token invalidated server-side before local expiry)
184
- if (response.status === 401 && config.onTokenRefresh && !tokenRefreshed) {
185
- const newToken = await config.onTokenRefresh();
186
- if (newToken) {
187
- tokenRefreshed = true;
188
- config.token = newToken;
189
- continue; // retry with new token
190
- }
185
+ if (block.type === "tool_result" && Array.isArray(block.content)) {
186
+ for (const sub of block.content) {
187
+ if (sub.type === "image" && sub.source?.type === "base64") {
188
+ sub.type = "text";
189
+ sub.text = "[image]";
190
+ delete sub.source;
191
191
  }
192
- throw Object.assign(new Error(`Proxy error (${response.status}): ${errorBody}`), { status: response.status });
193
- }
194
- catch (err) {
195
- if (timeout)
196
- clearTimeout(timeout);
197
- throw err;
192
+ }
198
193
  }
194
+ }
199
195
  }
200
- catch (err) {
201
- if (signal?.aborted)
202
- throw err;
203
- if (attempt < MAX_RETRIES && isRetryableError(err)) {
204
- const errMsg = err instanceof Error ? err.message : String(err);
205
- config.onRetry?.(attempt + 1, MAX_RETRIES, errMsg);
206
- const delay = RETRY_BASE_DELAY_MS * Math.pow(2, attempt);
207
- // Abort-aware backoff — ESC can interrupt the wait immediately
208
- await new Promise((resolve, reject) => {
209
- if (signal?.aborted) {
210
- reject(signal.reason ?? new Error("Aborted"));
211
- return;
212
- }
213
- const timer = setTimeout(resolve, delay);
214
- const onAbort = () => { clearTimeout(timer); reject(signal.reason ?? new Error("Aborted")); };
215
- signal?.addEventListener("abort", onAbort, { once: true });
216
- });
217
- // Fallback model on last retry
218
- if (attempt === MAX_RETRIES - 1 && config.fallbackModel) {
219
- const fromModel = config.model;
220
- config.model = config.fallbackModel;
221
- config.onFallback?.(fromModel, config.model);
222
- }
223
- continue;
224
- }
225
- throw err;
196
+ }
197
+ const serialized = JSON.stringify(body);
198
+ const fetchOpts = {
199
+ method: "POST",
200
+ headers: {
201
+ "Content-Type": "application/json",
202
+ "Authorization": `Bearer ${config.token}`,
203
+ "Content-Length": String(Buffer.byteLength(serialized))
204
+ },
205
+ body: serialized,
206
+ signal
207
+ };
208
+
209
+ // Apply timeout only when the caller did NOT already supply a signal
210
+ let controller;
211
+ let timeout;
212
+ if (timeoutMs && !signal) {
213
+ controller = new AbortController();
214
+ timeout = setTimeout(() => controller.abort(), timeoutMs);
215
+ fetchOpts.signal = controller.signal;
216
+ }
217
+ try {
218
+ const response = await fetch(proxyUrl, fetchOpts);
219
+ if (timeout) clearTimeout(timeout);
220
+ if (response.ok && response.body) {
221
+ return response.body;
222
+ }
223
+ const errorBody = await response.text();
224
+
225
+ // Auto-refresh on 401 (token invalidated server-side before local expiry)
226
+ if (response.status === 401 && config.onTokenRefresh && !tokenRefreshed) {
227
+ const newToken = await config.onTokenRefresh();
228
+ if (newToken) {
229
+ tokenRefreshed = true;
230
+ config.token = newToken;
231
+ continue; // retry with new token
232
+ }
233
+ }
234
+ throw Object.assign(new Error(`Proxy error (${response.status}): ${errorBody}`), {
235
+ status: response.status
236
+ });
237
+ } catch (err) {
238
+ if (timeout) clearTimeout(timeout);
239
+ throw err;
240
+ }
241
+ } catch (err) {
242
+ if (signal?.aborted) throw err;
243
+ if (attempt < MAX_RETRIES && isRetryableError(err)) {
244
+ const errMsg = err instanceof Error ? err.message : String(err);
245
+ config.onRetry?.(attempt + 1, MAX_RETRIES, errMsg);
246
+ const delay = RETRY_BASE_DELAY_MS * Math.pow(2, attempt);
247
+
248
+ // Abort-aware backoff — ESC can interrupt the wait immediately
249
+ await new Promise((resolve, reject) => {
250
+ if (signal?.aborted) {
251
+ reject(signal.reason ?? new Error("Aborted"));
252
+ return;
253
+ }
254
+ const timer = setTimeout(resolve, delay);
255
+ const onAbort = () => {
256
+ clearTimeout(timer);
257
+ reject(signal.reason ?? new Error("Aborted"));
258
+ };
259
+ signal?.addEventListener("abort", onAbort, {
260
+ once: true
261
+ });
262
+ });
263
+
264
+ // Fallback model on last retry
265
+ if (attempt === MAX_RETRIES - 1 && config.fallbackModel) {
266
+ const fromModel = config.model;
267
+ config.model = config.fallbackModel;
268
+ config.onFallback?.(fromModel, config.model);
226
269
  }
270
+ continue;
271
+ }
272
+ throw err;
227
273
  }
228
- throw new Error("Failed to get response after retries");
274
+ }
275
+ throw new Error("Failed to get response after retries");
229
276
  }
277
+
230
278
  // ============================================================================
231
279
  // HELPERS — system prompt + caching setup
232
280
  // ============================================================================
281
+
233
282
  /**
234
283
  * Build system blocks with prompt caching.
235
284
  * Cached system prompt + optional dynamic cost context (after cache breakpoint).
236
285
  */
237
286
  export function buildSystemBlocks(systemPrompt, costContext, enableCaching = true) {
238
- const system = [];
239
- if (enableCaching) {
240
- system.push({
241
- type: "text",
242
- text: systemPrompt,
243
- cache_control: { type: "ephemeral" },
244
- });
245
- }
246
- else {
247
- system.push({ type: "text", text: systemPrompt });
248
- }
249
- if (costContext) {
250
- system.push({ type: "text", text: costContext });
251
- }
252
- return system;
287
+ const system = [];
288
+ if (enableCaching) {
289
+ system.push({
290
+ type: "text",
291
+ text: systemPrompt,
292
+ cache_control: {
293
+ type: "ephemeral"
294
+ }
295
+ });
296
+ } else {
297
+ system.push({
298
+ type: "text",
299
+ text: systemPrompt
300
+ });
301
+ }
302
+ if (costContext) {
303
+ system.push({
304
+ type: "text",
305
+ text: costContext
306
+ });
307
+ }
308
+ return system;
253
309
  }
310
+
254
311
  /**
255
312
  * Prepare messages and tools with prompt caching.
256
313
  * Skips cache_control injection for Gemini (uses implicit caching).
257
314
  */
258
315
  export function prepareWithCaching(tools, messages, model) {
259
- if (model) {
260
- const provider = getProvider(model);
261
- if (provider === "gemini" || provider === "openai") {
262
- return { tools, messages };
263
- }
316
+ if (model) {
317
+ const provider = getProvider(model);
318
+ if (provider === "gemini" || provider === "openai") {
319
+ return {
320
+ tools,
321
+ messages
322
+ };
264
323
  }
265
- return addPromptCaching(tools, messages);
324
+ }
325
+ return addPromptCaching(tools, messages);
266
326
  }
327
+
267
328
  // ============================================================================
268
329
  // GEMINI CONTEXT TRIMMING
269
330
  // ============================================================================
331
+
270
332
  /**
271
333
  * Client-side context trimming for Gemini (no server-side context management).
272
334
  * When estimated input tokens exceed threshold, replaces old tool result contents
273
335
  * with "[trimmed]" to stay within Gemini's 1M context window.
274
336
  */
275
337
  export function trimGeminiContext(messages, estimatedTokens, threshold = 950_000, keepRecent = 5) {
276
- if (estimatedTokens < threshold)
277
- return messages;
278
- // Find all tool_result blocks and trim oldest ones
279
- let toolResultCount = 0;
280
- for (const msg of messages) {
281
- if (Array.isArray(msg.content)) {
282
- for (const block of msg.content) {
283
- if (block.type === "tool_result")
284
- toolResultCount++;
285
- }
286
- }
338
+ if (estimatedTokens < threshold) return messages;
339
+ let toolResultCount = 0;
340
+ for (const msg of messages) {
341
+ if (Array.isArray(msg.content)) {
342
+ for (const block of msg.content) {
343
+ if (block.type === "tool_result") toolResultCount++;
344
+ }
287
345
  }
288
- if (toolResultCount <= keepRecent)
289
- return messages;
290
- const trimCount = toolResultCount - keepRecent;
291
- let trimmed = 0;
292
- return messages.map((msg) => {
293
- if (!Array.isArray(msg.content))
294
- return msg;
295
- const content = msg.content.map((block) => {
296
- if (block.type === "tool_result" && trimmed < trimCount) {
297
- trimmed++;
298
- if (typeof block.content === "string") {
299
- return { ...block, content: "[trimmed]" };
300
- }
301
- else if (Array.isArray(block.content)) {
302
- return { ...block, content: [{ type: "text", text: "[trimmed]" }] };
303
- }
304
- }
305
- return block;
306
- });
307
- return { ...msg, content };
346
+ }
347
+ if (toolResultCount <= keepRecent) return messages;
348
+ const trimCount = toolResultCount - keepRecent;
349
+ let trimmed = 0;
350
+ return messages.map(msg => {
351
+ if (!Array.isArray(msg.content)) return msg;
352
+ const content = msg.content.map(block => {
353
+ if (block.type === "tool_result" && trimmed < trimCount) {
354
+ trimmed++;
355
+ if (typeof block.content === "string") {
356
+ return {
357
+ ...block,
358
+ content: "[trimmed]"
359
+ };
360
+ } else if (Array.isArray(block.content)) {
361
+ return {
362
+ ...block,
363
+ content: [{
364
+ type: "text",
365
+ text: "[trimmed]"
366
+ }]
367
+ };
368
+ }
369
+ }
370
+ return block;
308
371
  });
372
+ return {
373
+ ...msg,
374
+ content
375
+ };
376
+ });
309
377
  }
378
+
310
379
  // ============================================================================
311
380
  // OPENAI CONTEXT TRIMMING
312
381
  // ============================================================================
382
+
313
383
  /**
314
384
  * Client-side context trimming for OpenAI (no server-side context management).
315
385
  * When estimated input tokens exceed threshold, replaces old tool result contents
@@ -318,113 +388,135 @@ export function trimGeminiContext(messages, estimatedTokens, threshold = 950_000
318
388
  // ============================================================================
319
389
  // AUDIO TRANSCRIPTION CLIENT
320
390
  // ============================================================================
391
+
321
392
  /**
322
393
  * Call server transcription endpoint (OpenAI Whisper via our Fly.io proxy).
323
394
  * Used by tool-dispatch when __AUDIO__ marker is detected in tool results.
324
395
  */
325
396
  export async function callTranscribe(opts) {
326
- const { proxyUrl, token, storeId, audioBase64, mediaType } = opts;
327
- // Use same server URL as proxy, just different mode
328
- const response = await fetch(proxyUrl, {
329
- method: "POST",
330
- headers: {
331
- "Content-Type": "application/json",
332
- Authorization: `Bearer ${token}`,
333
- },
334
- body: JSON.stringify({
335
- mode: "transcribe",
336
- audio_base64: audioBase64,
337
- media_type: mediaType,
338
- store_id: storeId,
339
- }),
340
- });
341
- if (!response.ok) {
342
- const errText = await response.text();
343
- throw new Error(`Transcription failed (${response.status}): ${errText}`);
344
- }
345
- const data = (await response.json());
346
- if (!data.success || !data.transcript) {
347
- throw new Error(data.error || "Transcription returned no transcript");
348
- }
349
- return data.transcript;
397
+ const {
398
+ proxyUrl,
399
+ token,
400
+ storeId,
401
+ audioBase64,
402
+ mediaType
403
+ } = opts;
404
+
405
+ // Use same server URL as proxy, just different mode
406
+ const response = await fetch(proxyUrl, {
407
+ method: "POST",
408
+ headers: {
409
+ "Content-Type": "application/json",
410
+ Authorization: `Bearer ${token}`
411
+ },
412
+ body: JSON.stringify({
413
+ mode: "transcribe",
414
+ audio_base64: audioBase64,
415
+ media_type: mediaType,
416
+ store_id: storeId
417
+ })
418
+ });
419
+ if (!response.ok) {
420
+ const errText = await response.text();
421
+ throw new Error(`Transcription failed (${response.status}): ${errText}`);
422
+ }
423
+ const data = await response.json();
424
+ if (!data.success || !data.transcript) {
425
+ throw new Error(data.error || "Transcription returned no transcript");
426
+ }
427
+ return data.transcript;
350
428
  }
429
+
351
430
  // ============================================================================
352
431
  // OPENAI CONTEXT TRIMMING
353
432
  // ============================================================================
433
+
354
434
  export function trimOpenAIContext(messages, estimatedTokens, threshold = 190_000, keepRecent = 5) {
355
- if (estimatedTokens < threshold)
356
- return messages;
357
- // Find all tool_result blocks and trim oldest ones
358
- let toolResultCount = 0;
359
- for (const msg of messages) {
360
- if (Array.isArray(msg.content)) {
361
- for (const block of msg.content) {
362
- if (block.type === "tool_result")
363
- toolResultCount++;
364
- }
365
- }
435
+ if (estimatedTokens < threshold) return messages;
436
+ let toolResultCount = 0;
437
+ for (const msg of messages) {
438
+ if (Array.isArray(msg.content)) {
439
+ for (const block of msg.content) {
440
+ if (block.type === "tool_result") toolResultCount++;
441
+ }
366
442
  }
367
- if (toolResultCount <= keepRecent)
368
- return messages;
369
- const trimCount = toolResultCount - keepRecent;
370
- let trimmed = 0;
371
- return messages.map((msg) => {
372
- if (!Array.isArray(msg.content))
373
- return msg;
374
- const content = msg.content.map((block) => {
375
- if (block.type === "tool_result" && trimmed < trimCount) {
376
- trimmed++;
377
- if (typeof block.content === "string") {
378
- return { ...block, content: "[trimmed]" };
379
- }
380
- else if (Array.isArray(block.content)) {
381
- return { ...block, content: [{ type: "text", text: "[trimmed]" }] };
382
- }
383
- }
384
- return block;
385
- });
386
- return { ...msg, content };
443
+ }
444
+ if (toolResultCount <= keepRecent) return messages;
445
+ const trimCount = toolResultCount - keepRecent;
446
+ let trimmed = 0;
447
+ return messages.map(msg => {
448
+ if (!Array.isArray(msg.content)) return msg;
449
+ const content = msg.content.map(block => {
450
+ if (block.type === "tool_result" && trimmed < trimCount) {
451
+ trimmed++;
452
+ if (typeof block.content === "string") {
453
+ return {
454
+ ...block,
455
+ content: "[trimmed]"
456
+ };
457
+ } else if (Array.isArray(block.content)) {
458
+ return {
459
+ ...block,
460
+ content: [{
461
+ type: "text",
462
+ text: "[trimmed]"
463
+ }]
464
+ };
465
+ }
466
+ }
467
+ return block;
387
468
  });
469
+ return {
470
+ ...msg,
471
+ content
472
+ };
473
+ });
388
474
  }
475
+
389
476
  // ============================================================================
390
477
  // PROVIDER COMPACTION CLIENT
391
478
  // ============================================================================
479
+
392
480
  const COMPACTION_TIMEOUT_MS = 30_000;
481
+
393
482
  /**
394
483
  * Request conversation compaction from the server (Haiku summarization).
395
484
  * Used by non-Anthropic providers (OpenAI, Gemini) that lack native compaction.
396
485
  * Returns summary string or null on failure (caller keeps unsummarized history).
397
486
  */
398
487
  export async function requestProviderCompaction(opts) {
399
- const { proxyUrl, token, messages, systemPrompt } = opts;
488
+ const {
489
+ proxyUrl,
490
+ token,
491
+ messages,
492
+ systemPrompt
493
+ } = opts;
494
+ try {
495
+ const controller = new AbortController();
496
+ const timeout = setTimeout(() => controller.abort(), COMPACTION_TIMEOUT_MS);
400
497
  try {
401
- const controller = new AbortController();
402
- const timeout = setTimeout(() => controller.abort(), COMPACTION_TIMEOUT_MS);
403
- try {
404
- const response = await fetch(proxyUrl, {
405
- method: "POST",
406
- headers: {
407
- "Content-Type": "application/json",
408
- Authorization: `Bearer ${token}`,
409
- },
410
- body: JSON.stringify({
411
- mode: "compact",
412
- messages,
413
- system_prompt: systemPrompt,
414
- }),
415
- signal: controller.signal,
416
- });
417
- clearTimeout(timeout);
418
- if (!response.ok)
419
- return null;
420
- const data = (await response.json());
421
- return data.success && data.compaction_content ? data.compaction_content : null;
422
- }
423
- finally {
424
- clearTimeout(timeout);
425
- }
426
- }
427
- catch {
428
- return null; // Graceful failure — caller keeps unsummarized history
498
+ const response = await fetch(proxyUrl, {
499
+ method: "POST",
500
+ headers: {
501
+ "Content-Type": "application/json",
502
+ Authorization: `Bearer ${token}`
503
+ },
504
+ body: JSON.stringify({
505
+ mode: "compact",
506
+ messages,
507
+ system_prompt: systemPrompt
508
+ }),
509
+ signal: controller.signal
510
+ });
511
+ clearTimeout(timeout);
512
+ if (!response.ok) return null;
513
+ const data = await response.json();
514
+ return data.success && data.compaction_content ? data.compaction_content : null;
515
+ } finally {
516
+ clearTimeout(timeout);
429
517
  }
518
+ } catch {
519
+ return null; // Graceful failure — caller keeps unsummarized history
520
+ }
430
521
  }
522
+ //# sourceMappingURL=api-client.js.map