whale-code 6.5.4 → 6.5.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (853) hide show
  1. package/README.md +39 -31
  2. package/bin/{swagmanager-mcp.js → whale-code.js} +17 -2
  3. package/dist/cli/app.js +148 -72
  4. package/dist/cli/app.js.map +1 -0
  5. package/dist/cli/chat/AgentSelector.js +105 -10
  6. package/dist/cli/chat/AgentSelector.js.map +1 -0
  7. package/dist/cli/chat/ChatApp.d.ts +31 -0
  8. package/dist/cli/chat/ChatApp.js +539 -286
  9. package/dist/cli/chat/ChatApp.js.map +1 -0
  10. package/dist/cli/chat/ChatInput.js +1088 -770
  11. package/dist/cli/chat/ChatInput.js.map +1 -0
  12. package/dist/cli/chat/MarkdownText.js +39 -14
  13. package/dist/cli/chat/MarkdownText.js.map +1 -0
  14. package/dist/cli/chat/MemoryManager.js +181 -46
  15. package/dist/cli/chat/MemoryManager.js.map +1 -0
  16. package/dist/cli/chat/MessageList.d.ts +2 -3
  17. package/dist/cli/chat/MessageList.js +186 -45
  18. package/dist/cli/chat/MessageList.js.map +1 -0
  19. package/dist/cli/chat/ModelSelector.js +282 -63
  20. package/dist/cli/chat/ModelSelector.js.map +1 -0
  21. package/dist/cli/chat/NodeManager.js +165 -75
  22. package/dist/cli/chat/NodeManager.js.map +1 -0
  23. package/dist/cli/chat/NodeSelector.js +171 -30
  24. package/dist/cli/chat/NodeSelector.js.map +1 -0
  25. package/dist/cli/chat/PlanApproval.js +281 -57
  26. package/dist/cli/chat/PlanApproval.js.map +1 -0
  27. package/dist/cli/chat/RewindViewer.js +559 -144
  28. package/dist/cli/chat/RewindViewer.js.map +1 -0
  29. package/dist/cli/chat/SessionManager.js +137 -30
  30. package/dist/cli/chat/SessionManager.js.map +1 -0
  31. package/dist/cli/chat/SlashMenu.js +293 -164
  32. package/dist/cli/chat/SlashMenu.js.map +1 -0
  33. package/dist/cli/chat/StatusBar.js +172 -9
  34. package/dist/cli/chat/StatusBar.js.map +1 -0
  35. package/dist/cli/chat/StoreSelector.js +147 -18
  36. package/dist/cli/chat/StoreSelector.js.map +1 -0
  37. package/dist/cli/chat/StreamingText.d.ts +1 -5
  38. package/dist/cli/chat/StreamingText.js +22 -7
  39. package/dist/cli/chat/StreamingText.js.map +1 -0
  40. package/dist/cli/chat/SubagentPanel.d.ts +1 -2
  41. package/dist/cli/chat/SubagentPanel.js +612 -72
  42. package/dist/cli/chat/SubagentPanel.js.map +1 -0
  43. package/dist/cli/chat/TeamPanel.d.ts +1 -0
  44. package/dist/cli/chat/TeamPanel.js +230 -30
  45. package/dist/cli/chat/TeamPanel.js.map +1 -0
  46. package/dist/cli/chat/ThemeSelector.js +84 -24
  47. package/dist/cli/chat/ThemeSelector.js.map +1 -0
  48. package/dist/cli/chat/ToolIndicator.js +1476 -371
  49. package/dist/cli/chat/ToolIndicator.js.map +1 -0
  50. package/dist/cli/chat/hooks/useAgentLoop.d.ts +1 -0
  51. package/dist/cli/chat/hooks/useAgentLoop.js +481 -367
  52. package/dist/cli/chat/hooks/useAgentLoop.js.map +1 -0
  53. package/dist/cli/chat/hooks/useSlashCommands.d.ts +3 -14
  54. package/dist/cli/chat/hooks/useSlashCommands.js +744 -572
  55. package/dist/cli/chat/hooks/useSlashCommands.js.map +1 -0
  56. package/dist/cli/commands/config-cmd.js +56 -57
  57. package/dist/cli/commands/config-cmd.js.map +1 -0
  58. package/dist/cli/commands/db.js +184 -169
  59. package/dist/cli/commands/db.js.map +1 -0
  60. package/dist/cli/commands/doctor.js +212 -122
  61. package/dist/cli/commands/doctor.js.map +1 -0
  62. package/dist/cli/commands/init.js +211 -244
  63. package/dist/cli/commands/init.js.map +1 -0
  64. package/dist/cli/commands/mcp.js +127 -122
  65. package/dist/cli/commands/mcp.js.map +1 -0
  66. package/dist/cli/login/LoginApp.js +355 -141
  67. package/dist/cli/login/LoginApp.js.map +1 -0
  68. package/dist/cli/print-mode.js +196 -177
  69. package/dist/cli/print-mode.js.map +1 -0
  70. package/dist/cli/serve-mode.js +615 -530
  71. package/dist/cli/serve-mode.js.map +1 -0
  72. package/dist/cli/services/agent-config.d.ts +29 -0
  73. package/dist/cli/services/agent-config.js +91 -0
  74. package/dist/cli/services/agent-config.js.map +1 -0
  75. package/dist/cli/services/agent-definitions.d.ts +4 -1
  76. package/dist/cli/services/agent-definitions.js +97 -56
  77. package/dist/cli/services/agent-definitions.js.map +1 -0
  78. package/dist/cli/services/agent-events.js +225 -162
  79. package/dist/cli/services/agent-events.js.map +1 -0
  80. package/dist/cli/services/agent-loop.js +978 -669
  81. package/dist/cli/services/agent-loop.js.map +1 -0
  82. package/dist/cli/services/agent-worker-base.d.ts +35 -5
  83. package/dist/cli/services/agent-worker-base.js +337 -153
  84. package/dist/cli/services/agent-worker-base.js.map +1 -0
  85. package/dist/cli/services/api-retry.js +69 -64
  86. package/dist/cli/services/api-retry.js.map +1 -0
  87. package/dist/cli/services/auth-service.d.ts +3 -3
  88. package/dist/cli/services/auth-service.js +209 -132
  89. package/dist/cli/services/auth-service.js.map +1 -0
  90. package/dist/cli/services/background-processes.js +343 -267
  91. package/dist/cli/services/background-processes.js.map +1 -0
  92. package/dist/cli/services/browser-auth.d.ts +2 -2
  93. package/dist/cli/services/browser-auth.js +159 -118
  94. package/dist/cli/services/browser-auth.js.map +1 -0
  95. package/dist/cli/services/claude-md-loader.js +40 -36
  96. package/dist/cli/services/claude-md-loader.js.map +1 -0
  97. package/dist/cli/services/config-store.d.ts +9 -4
  98. package/dist/cli/services/config-store.js +164 -117
  99. package/dist/cli/services/config-store.js.map +1 -0
  100. package/dist/cli/services/debug-log.d.ts +1 -1
  101. package/dist/cli/services/debug-log.js +34 -35
  102. package/dist/cli/services/debug-log.js.map +1 -0
  103. package/dist/cli/services/env-detect.d.ts +7 -0
  104. package/dist/cli/services/env-detect.js +9 -0
  105. package/dist/cli/services/env-detect.js.map +1 -0
  106. package/dist/cli/services/error-logger.d.ts +2 -3
  107. package/dist/cli/services/error-logger.js +189 -180
  108. package/dist/cli/services/error-logger.js.map +1 -0
  109. package/dist/cli/services/file-history.d.ts +1 -1
  110. package/dist/cli/services/file-history.js +50 -54
  111. package/dist/cli/services/file-history.js.map +1 -0
  112. package/dist/cli/services/format-server-response.js +332 -372
  113. package/dist/cli/services/format-server-response.js.map +1 -0
  114. package/dist/cli/services/git-context.js +61 -45
  115. package/dist/cli/services/git-context.js.map +1 -0
  116. package/dist/cli/services/hooks.d.ts +2 -2
  117. package/dist/cli/services/hooks.js +195 -180
  118. package/dist/cli/services/hooks.js.map +1 -0
  119. package/dist/cli/services/ink-incremental.d.ts +19 -0
  120. package/dist/cli/services/ink-incremental.js +59 -0
  121. package/dist/cli/services/ink-incremental.js.map +1 -0
  122. package/dist/cli/services/ink-resize-fix.js +54 -44
  123. package/dist/cli/services/ink-resize-fix.js.map +1 -0
  124. package/dist/cli/services/ink-sync-output.d.ts +12 -0
  125. package/dist/cli/services/ink-sync-output.js +16 -0
  126. package/dist/cli/services/ink-sync-output.js.map +1 -0
  127. package/dist/cli/services/interactive-tools.js +268 -212
  128. package/dist/cli/services/interactive-tools.js.map +1 -0
  129. package/dist/cli/services/keybinding-manager.d.ts +11 -1
  130. package/dist/cli/services/keybinding-manager.js +126 -63
  131. package/dist/cli/services/keybinding-manager.js.map +1 -0
  132. package/dist/cli/services/local-tools.d.ts +1 -1
  133. package/dist/cli/services/local-tools.js +939 -656
  134. package/dist/cli/services/local-tools.js.map +1 -0
  135. package/dist/cli/services/lsp-manager.js +757 -594
  136. package/dist/cli/services/lsp-manager.js.map +1 -0
  137. package/dist/cli/services/mcp-client.d.ts +1 -1
  138. package/dist/cli/services/mcp-client.js +173 -134
  139. package/dist/cli/services/mcp-client.js.map +1 -0
  140. package/dist/cli/services/memory-manager.js +53 -40
  141. package/dist/cli/services/memory-manager.js.map +1 -0
  142. package/dist/cli/services/model-manager.js +55 -40
  143. package/dist/cli/services/model-manager.js.map +1 -0
  144. package/dist/cli/services/model-router.js +115 -85
  145. package/dist/cli/services/model-router.js.map +1 -0
  146. package/dist/cli/services/paths.d.ts +30 -0
  147. package/dist/cli/services/paths.js +81 -0
  148. package/dist/cli/services/paths.js.map +1 -0
  149. package/dist/cli/services/permission-modes.js +32 -25
  150. package/dist/cli/services/permission-modes.js.map +1 -0
  151. package/dist/cli/services/rewind.js +182 -168
  152. package/dist/cli/services/rewind.js.map +1 -0
  153. package/dist/cli/services/ripgrep.js +115 -115
  154. package/dist/cli/services/ripgrep.js.map +1 -0
  155. package/dist/cli/services/sandbox.d.ts +1 -1
  156. package/dist/cli/services/sandbox.js +58 -37
  157. package/dist/cli/services/sandbox.js.map +1 -0
  158. package/dist/cli/services/server-tools.js +738 -565
  159. package/dist/cli/services/server-tools.js.map +1 -0
  160. package/dist/cli/services/session-persistence.js +69 -74
  161. package/dist/cli/services/session-persistence.js.map +1 -0
  162. package/dist/cli/services/subagent-worker.js +42 -27
  163. package/dist/cli/services/subagent-worker.js.map +1 -0
  164. package/dist/cli/services/subagent.d.ts +2 -0
  165. package/dist/cli/services/subagent.js +606 -430
  166. package/dist/cli/services/subagent.js.map +1 -0
  167. package/dist/cli/services/system-prompt.js +86 -78
  168. package/dist/cli/services/system-prompt.js.map +1 -0
  169. package/dist/cli/services/task-decomposer.d.ts +1 -1
  170. package/dist/cli/services/task-decomposer.js +172 -139
  171. package/dist/cli/services/task-decomposer.js.map +1 -0
  172. package/dist/cli/services/team-lead.d.ts +2 -2
  173. package/dist/cli/services/team-lead.js +727 -529
  174. package/dist/cli/services/team-lead.js.map +1 -0
  175. package/dist/cli/services/team-state.js +319 -319
  176. package/dist/cli/services/team-state.js.map +1 -0
  177. package/dist/cli/services/teammate.d.ts +8 -2
  178. package/dist/cli/services/teammate.js +862 -560
  179. package/dist/cli/services/teammate.js.map +1 -0
  180. package/dist/cli/services/telemetry.d.ts +6 -1
  181. package/dist/cli/services/telemetry.js +180 -157
  182. package/dist/cli/services/telemetry.js.map +1 -0
  183. package/dist/cli/services/tools/agent-tools.d.ts +3 -3
  184. package/dist/cli/services/tools/agent-tools.js +480 -322
  185. package/dist/cli/services/tools/agent-tools.js.map +1 -0
  186. package/dist/cli/services/tools/file-ops.js +563 -450
  187. package/dist/cli/services/tools/file-ops.js.map +1 -0
  188. package/dist/cli/services/tools/search-tools.js +231 -162
  189. package/dist/cli/services/tools/search-tools.js.map +1 -0
  190. package/dist/cli/services/tools/shell-exec.js +197 -151
  191. package/dist/cli/services/tools/shell-exec.js.map +1 -0
  192. package/dist/cli/services/tools/task-manager.js +206 -173
  193. package/dist/cli/services/tools/task-manager.js.map +1 -0
  194. package/dist/cli/services/tools/web-tools.js +388 -341
  195. package/dist/cli/services/tools/web-tools.js.map +1 -0
  196. package/dist/cli/setup/SetupApp.d.ts +2 -2
  197. package/dist/cli/setup/SetupApp.js +608 -160
  198. package/dist/cli/setup/SetupApp.js.map +1 -0
  199. package/dist/cli/shared/ErrorBoundary.d.ts +22 -0
  200. package/dist/cli/shared/ErrorBoundary.js +73 -0
  201. package/dist/cli/shared/ErrorBoundary.js.map +1 -0
  202. package/dist/cli/shared/MatrixIntro.js +66 -69
  203. package/dist/cli/shared/MatrixIntro.js.map +1 -0
  204. package/dist/cli/shared/SpinnerSlot.d.ts +14 -0
  205. package/dist/cli/shared/SpinnerSlot.js +63 -0
  206. package/dist/cli/shared/SpinnerSlot.js.map +1 -0
  207. package/dist/cli/shared/Theme.d.ts +1 -1
  208. package/dist/cli/shared/Theme.js +136 -92
  209. package/dist/cli/shared/Theme.js.map +1 -0
  210. package/dist/cli/shared/WhaleBanner.js +99 -11
  211. package/dist/cli/shared/WhaleBanner.js.map +1 -0
  212. package/dist/cli/shared/markdown.d.ts +3 -1
  213. package/dist/cli/shared/markdown.js +736 -674
  214. package/dist/cli/shared/markdown.js.map +1 -0
  215. package/dist/cli/shared/marked-terminal.d.js +2 -0
  216. package/dist/cli/shared/marked-terminal.d.js.map +1 -0
  217. package/dist/cli/shared/theme-manager.js +99 -90
  218. package/dist/cli/shared/theme-manager.js.map +1 -0
  219. package/dist/cli/shared/theme-presets.js +256 -254
  220. package/dist/cli/shared/theme-presets.js.map +1 -0
  221. package/dist/cli/status/StatusApp.js +235 -86
  222. package/dist/cli/status/StatusApp.js.map +1 -0
  223. package/dist/cli/stores/StoreApp.js +275 -65
  224. package/dist/cli/stores/StoreApp.js.map +1 -0
  225. package/dist/index.d.ts +2 -2
  226. package/dist/index.js +509 -396
  227. package/dist/index.js.map +1 -0
  228. package/dist/local-agent/connection.d.ts +2 -2
  229. package/dist/local-agent/connection.js +352 -293
  230. package/dist/local-agent/connection.js.map +1 -0
  231. package/dist/local-agent/discovery.js +259 -122
  232. package/dist/local-agent/discovery.js.map +1 -0
  233. package/dist/local-agent/executor.js +216 -193
  234. package/dist/local-agent/executor.js.map +1 -0
  235. package/dist/local-agent/index.d.ts +2 -2
  236. package/dist/local-agent/index.js +156 -156
  237. package/dist/local-agent/index.js.map +1 -0
  238. package/dist/node/adapters/base.js +18 -8
  239. package/dist/node/adapters/base.js.map +1 -0
  240. package/dist/node/adapters/discord.js +286 -275
  241. package/dist/node/adapters/discord.js.map +1 -0
  242. package/dist/node/adapters/email.js +189 -202
  243. package/dist/node/adapters/email.js.map +1 -0
  244. package/dist/node/adapters/imessage.js +145 -142
  245. package/dist/node/adapters/imessage.js.map +1 -0
  246. package/dist/node/adapters/slack.js +237 -236
  247. package/dist/node/adapters/slack.js.map +1 -0
  248. package/dist/node/adapters/sms.js +149 -151
  249. package/dist/node/adapters/sms.js.map +1 -0
  250. package/dist/node/adapters/telegram.js +88 -92
  251. package/dist/node/adapters/telegram.js.map +1 -0
  252. package/dist/node/adapters/webchat.js +160 -136
  253. package/dist/node/adapters/webchat.js.map +1 -0
  254. package/dist/node/adapters/whatsapp.js +212 -215
  255. package/dist/node/adapters/whatsapp.js.map +1 -0
  256. package/dist/node/cli.js +884 -653
  257. package/dist/node/cli.js.map +1 -0
  258. package/dist/node/config.js +20 -18
  259. package/dist/node/config.js.map +1 -0
  260. package/dist/node/gateway-client.js +191 -181
  261. package/dist/node/gateway-client.js.map +1 -0
  262. package/dist/node/portal/clipboard.js +161 -130
  263. package/dist/node/portal/clipboard.js.map +1 -0
  264. package/dist/node/portal/discovery.js +51 -45
  265. package/dist/node/portal/discovery.js.map +1 -0
  266. package/dist/node/portal/forward.js +64 -58
  267. package/dist/node/portal/forward.js.map +1 -0
  268. package/dist/node/portal/index.js +246 -221
  269. package/dist/node/portal/index.js.map +1 -0
  270. package/dist/node/portal/multiplexer.js +192 -182
  271. package/dist/node/portal/multiplexer.js.map +1 -0
  272. package/dist/node/portal/permissions.js +102 -70
  273. package/dist/node/portal/permissions.js.map +1 -0
  274. package/dist/node/portal/protocol.js +153 -116
  275. package/dist/node/portal/protocol.js.map +1 -0
  276. package/dist/node/portal/screen.js +80 -69
  277. package/dist/node/portal/screen.js.map +1 -0
  278. package/dist/node/portal/session.js +124 -117
  279. package/dist/node/portal/session.js.map +1 -0
  280. package/dist/node/portal/shell.js +140 -113
  281. package/dist/node/portal/shell.js.map +1 -0
  282. package/dist/node/portal/stream.js +77 -75
  283. package/dist/node/portal/stream.js.map +1 -0
  284. package/dist/node/portal/transfer.js +190 -167
  285. package/dist/node/portal/transfer.js.map +1 -0
  286. package/dist/node/portal/ui.js +124 -99
  287. package/dist/node/portal/ui.js.map +1 -0
  288. package/dist/node/remote-desktop/compile-helper.js +50 -45
  289. package/dist/node/remote-desktop/compile-helper.js.map +1 -0
  290. package/dist/node/remote-desktop/index.js +215 -187
  291. package/dist/node/remote-desktop/index.js.map +1 -0
  292. package/dist/node/remote-desktop/protocol.js +45 -29
  293. package/dist/node/remote-desktop/protocol.js.map +1 -0
  294. package/dist/node/runtime.js +493 -410
  295. package/dist/node/runtime.js.map +1 -0
  296. package/dist/server/handlers/__test-utils__/test-db.js +39 -89
  297. package/dist/server/handlers/__test-utils__/test-db.js.map +1 -0
  298. package/dist/server/handlers/analytics.js +467 -261
  299. package/dist/server/handlers/analytics.js.map +1 -0
  300. package/dist/server/handlers/api-docs.d.ts +6 -0
  301. package/dist/server/handlers/api-docs.js +1613 -0
  302. package/dist/server/handlers/api-docs.js.map +1 -0
  303. package/dist/server/handlers/api-keys.js +295 -232
  304. package/dist/server/handlers/api-keys.js.map +1 -0
  305. package/dist/server/handlers/billing.js +330 -239
  306. package/dist/server/handlers/billing.js.map +1 -0
  307. package/dist/server/handlers/browser.js +468 -395
  308. package/dist/server/handlers/browser.js.map +1 -0
  309. package/dist/server/handlers/catalog.js +1377 -978
  310. package/dist/server/handlers/catalog.js.map +1 -0
  311. package/dist/server/handlers/clickhouse.js +157 -109
  312. package/dist/server/handlers/clickhouse.js.map +1 -0
  313. package/dist/server/handlers/comms.d.ts +0 -53
  314. package/dist/server/handlers/comms.js +1443 -970
  315. package/dist/server/handlers/comms.js.map +1 -0
  316. package/dist/server/handlers/creations.js +461 -394
  317. package/dist/server/handlers/creations.js.map +1 -0
  318. package/dist/server/handlers/crm.js +1082 -791
  319. package/dist/server/handlers/crm.js.map +1 -0
  320. package/dist/server/handlers/discovery.js +251 -232
  321. package/dist/server/handlers/discovery.js.map +1 -0
  322. package/dist/server/handlers/embeddings.js +241 -164
  323. package/dist/server/handlers/embeddings.js.map +1 -0
  324. package/dist/server/handlers/enrichment.js +887 -718
  325. package/dist/server/handlers/enrichment.js.map +1 -0
  326. package/dist/server/handlers/image-gen.js +467 -376
  327. package/dist/server/handlers/image-gen.js.map +1 -0
  328. package/dist/server/handlers/inventory.js +797 -424
  329. package/dist/server/handlers/inventory.js.map +1 -0
  330. package/dist/server/handlers/kali.js +272 -230
  331. package/dist/server/handlers/kali.js.map +1 -0
  332. package/dist/server/handlers/llm-providers.js +803 -580
  333. package/dist/server/handlers/llm-providers.js.map +1 -0
  334. package/dist/server/handlers/local-agent.js +133 -105
  335. package/dist/server/handlers/local-agent.js.map +1 -0
  336. package/dist/server/handlers/media.js +1179 -857
  337. package/dist/server/handlers/media.js.map +1 -0
  338. package/dist/server/handlers/meta-ads.js +2669 -2093
  339. package/dist/server/handlers/meta-ads.js.map +1 -0
  340. package/dist/server/handlers/nodes.js +1321 -913
  341. package/dist/server/handlers/nodes.js.map +1 -0
  342. package/dist/server/handlers/operations.js +183 -157
  343. package/dist/server/handlers/operations.js.map +1 -0
  344. package/dist/server/handlers/platform.js +346 -210
  345. package/dist/server/handlers/platform.js.map +1 -0
  346. package/dist/server/handlers/remove-bg.js +118 -86
  347. package/dist/server/handlers/remove-bg.js.map +1 -0
  348. package/dist/server/handlers/storefront.js +586 -446
  349. package/dist/server/handlers/storefront.js.map +1 -0
  350. package/dist/server/handlers/supply-chain.js +546 -326
  351. package/dist/server/handlers/supply-chain.js.map +1 -0
  352. package/dist/server/handlers/transcription.js +106 -97
  353. package/dist/server/handlers/transcription.js.map +1 -0
  354. package/dist/server/handlers/video-gen.js +593 -424
  355. package/dist/server/handlers/video-gen.js.map +1 -0
  356. package/dist/server/handlers/voice.js +1458 -1017
  357. package/dist/server/handlers/voice.js.map +1 -0
  358. package/dist/server/handlers/workflow-steps.js +2837 -2116
  359. package/dist/server/handlers/workflow-steps.js.map +1 -0
  360. package/dist/server/handlers/workflows.js +1630 -933
  361. package/dist/server/handlers/workflows.js.map +1 -0
  362. package/dist/server/index.js +3166 -2390
  363. package/dist/server/index.js.map +1 -0
  364. package/dist/server/lib/batch-client.js +471 -409
  365. package/dist/server/lib/batch-client.js.map +1 -0
  366. package/dist/server/lib/clickhouse-buffer.js +118 -104
  367. package/dist/server/lib/clickhouse-buffer.js.map +1 -0
  368. package/dist/server/lib/clickhouse-client.js +107 -107
  369. package/dist/server/lib/clickhouse-client.js.map +1 -0
  370. package/dist/server/lib/coa-renderer.js +1786 -356
  371. package/dist/server/lib/coa-renderer.js.map +1 -0
  372. package/dist/server/lib/code-worker-pool.js +227 -177
  373. package/dist/server/lib/code-worker-pool.js.map +1 -0
  374. package/dist/server/lib/code-worker.js +174 -164
  375. package/dist/server/lib/code-worker.js.map +1 -0
  376. package/dist/server/lib/compaction-service.d.ts +2 -12
  377. package/dist/server/lib/compaction-service.js +74 -184
  378. package/dist/server/lib/compaction-service.js.map +1 -0
  379. package/dist/server/lib/logger.js +36 -24
  380. package/dist/server/lib/logger.js.map +1 -0
  381. package/dist/server/lib/otel.js +101 -80
  382. package/dist/server/lib/otel.js.map +1 -0
  383. package/dist/server/lib/pdf-renderer.d.ts +1 -1
  384. package/dist/server/lib/pdf-renderer.js +954 -776
  385. package/dist/server/lib/pdf-renderer.js.map +1 -0
  386. package/dist/server/lib/prompt-sanitizer.js +188 -108
  387. package/dist/server/lib/prompt-sanitizer.js.map +1 -0
  388. package/dist/server/lib/provider-capabilities.js +136 -138
  389. package/dist/server/lib/provider-capabilities.js.map +1 -0
  390. package/dist/server/lib/provider-failover.js +190 -168
  391. package/dist/server/lib/provider-failover.js.map +1 -0
  392. package/dist/server/lib/rate-limiter.js +186 -117
  393. package/dist/server/lib/rate-limiter.js.map +1 -0
  394. package/dist/server/lib/react-pdf-layout.js +551 -382
  395. package/dist/server/lib/react-pdf-layout.js.map +1 -0
  396. package/dist/server/lib/server-agent-loop.d.ts +9 -0
  397. package/dist/server/lib/server-agent-loop.js +906 -624
  398. package/dist/server/lib/server-agent-loop.js.map +1 -0
  399. package/dist/server/lib/server-subagent.d.ts +2 -0
  400. package/dist/server/lib/server-subagent.js +260 -162
  401. package/dist/server/lib/server-subagent.js.map +1 -0
  402. package/dist/server/lib/session-checkpoint.js +105 -96
  403. package/dist/server/lib/session-checkpoint.js.map +1 -0
  404. package/dist/server/lib/ssrf-guard.js +193 -184
  405. package/dist/server/lib/ssrf-guard.js.map +1 -0
  406. package/dist/server/lib/supabase-client.js +94 -82
  407. package/dist/server/lib/supabase-client.js.map +1 -0
  408. package/dist/server/lib/template-resolver.js +154 -176
  409. package/dist/server/lib/template-resolver.js.map +1 -0
  410. package/dist/server/lib/utils.js +242 -133
  411. package/dist/server/lib/utils.js.map +1 -0
  412. package/dist/server/local-agent-gateway.d.ts +2 -2
  413. package/dist/server/local-agent-gateway.js +785 -627
  414. package/dist/server/local-agent-gateway.js.map +1 -0
  415. package/dist/server/providers/anthropic.js +254 -176
  416. package/dist/server/providers/anthropic.js.map +1 -0
  417. package/dist/server/providers/bedrock.js +221 -162
  418. package/dist/server/providers/bedrock.js.map +1 -0
  419. package/dist/server/providers/gemini.js +548 -418
  420. package/dist/server/providers/gemini.js.map +1 -0
  421. package/dist/server/providers/openai.js +571 -437
  422. package/dist/server/providers/openai.js.map +1 -0
  423. package/dist/server/providers/registry.js +23 -18
  424. package/dist/server/providers/registry.js.map +1 -0
  425. package/dist/server/providers/shared.js +123 -95
  426. package/dist/server/providers/shared.js.map +1 -0
  427. package/dist/server/providers/types.js +1 -11
  428. package/dist/server/providers/types.js.map +1 -0
  429. package/dist/server/proxy-handlers.js +209 -165
  430. package/dist/server/proxy-handlers.js.map +1 -0
  431. package/dist/server/tool-router.d.ts +13 -0
  432. package/dist/server/tool-router.js +960 -598
  433. package/dist/server/tool-router.js.map +1 -0
  434. package/dist/server/validation.js +248 -188
  435. package/dist/server/validation.js.map +1 -0
  436. package/dist/server/worker.js +202 -133
  437. package/dist/server/worker.js.map +1 -0
  438. package/dist/setup.d.ts +2 -2
  439. package/dist/setup.js +151 -147
  440. package/dist/setup.js.map +1 -0
  441. package/dist/shared/agent-core.d.ts +191 -24
  442. package/dist/shared/agent-core.js +971 -462
  443. package/dist/shared/agent-core.js.map +1 -0
  444. package/dist/shared/anthropic-types.js +1 -6
  445. package/dist/shared/anthropic-types.js.map +1 -0
  446. package/dist/shared/api-client.d.ts +17 -9
  447. package/dist/shared/api-client.js +419 -327
  448. package/dist/shared/api-client.js.map +1 -0
  449. package/dist/shared/compaction.d.ts +36 -0
  450. package/dist/shared/compaction.js +138 -0
  451. package/dist/shared/compaction.js.map +1 -0
  452. package/dist/shared/constants.js +67 -64
  453. package/dist/shared/constants.js.map +1 -0
  454. package/dist/shared/sse-parser.js +221 -219
  455. package/dist/shared/sse-parser.js.map +1 -0
  456. package/dist/shared/tool-dispatch.d.ts +4 -2
  457. package/dist/shared/tool-dispatch.js +226 -165
  458. package/dist/shared/tool-dispatch.js.map +1 -0
  459. package/dist/shared/types.js +1 -6
  460. package/dist/shared/types.js.map +1 -0
  461. package/dist/types/cli-highlight.d.js +2 -0
  462. package/dist/types/cli-highlight.d.js.map +1 -0
  463. package/dist/types/diff.d.js +2 -0
  464. package/dist/types/diff.d.js.map +1 -0
  465. package/dist/types/pdf-parse.d.js +2 -0
  466. package/dist/types/pdf-parse.d.js.map +1 -0
  467. package/dist/updater.d.ts +1 -1
  468. package/dist/updater.js +118 -92
  469. package/dist/updater.js.map +1 -0
  470. package/dist/webchat/widget.js +227 -380
  471. package/dist/webchat/widget.js.map +1 -0
  472. package/package.json +22 -10
  473. package/vendor/ink/build/ansi-tokenizer.d.ts +38 -0
  474. package/vendor/ink/build/ansi-tokenizer.js +316 -0
  475. package/vendor/ink/build/ansi-tokenizer.js.map +1 -0
  476. package/vendor/ink/build/apply-styles.js +175 -0
  477. package/vendor/ink/build/build-layout.js +77 -0
  478. package/vendor/ink/build/calculate-wrapped-text.js +53 -0
  479. package/vendor/ink/build/colorize.d.ts +3 -0
  480. package/vendor/ink/build/colorize.js +48 -0
  481. package/vendor/ink/build/colorize.js.map +1 -0
  482. package/vendor/ink/build/components/AccessibilityContext.d.ts +3 -0
  483. package/vendor/ink/build/components/AccessibilityContext.js +5 -0
  484. package/vendor/ink/build/components/AccessibilityContext.js.map +1 -0
  485. package/vendor/ink/build/components/App.d.ts +18 -0
  486. package/vendor/ink/build/components/App.js +351 -0
  487. package/vendor/ink/build/components/App.js.map +1 -0
  488. package/vendor/ink/build/components/AppContext.d.ts +15 -0
  489. package/vendor/ink/build/components/AppContext.js +11 -0
  490. package/vendor/ink/build/components/AppContext.js.map +1 -0
  491. package/vendor/ink/build/components/BackgroundContext.d.ts +4 -0
  492. package/vendor/ink/build/components/BackgroundContext.js +3 -0
  493. package/vendor/ink/build/components/BackgroundContext.js.map +1 -0
  494. package/vendor/ink/build/components/Box.d.ts +117 -0
  495. package/vendor/ink/build/components/Box.js +34 -0
  496. package/vendor/ink/build/components/Box.js.map +1 -0
  497. package/vendor/ink/build/components/Color.js +62 -0
  498. package/vendor/ink/build/components/Cursor.d.ts +83 -0
  499. package/vendor/ink/build/components/Cursor.js +53 -0
  500. package/vendor/ink/build/components/Cursor.js.map +1 -0
  501. package/vendor/ink/build/components/CursorContext.d.ts +11 -0
  502. package/vendor/ink/build/components/CursorContext.js +8 -0
  503. package/vendor/ink/build/components/CursorContext.js.map +1 -0
  504. package/vendor/ink/build/components/ErrorBoundary.d.ts +18 -0
  505. package/vendor/ink/build/components/ErrorBoundary.js +23 -0
  506. package/vendor/ink/build/components/ErrorBoundary.js.map +1 -0
  507. package/vendor/ink/build/components/ErrorOverview.d.ts +6 -0
  508. package/vendor/ink/build/components/ErrorOverview.js +84 -0
  509. package/vendor/ink/build/components/ErrorOverview.js.map +1 -0
  510. package/vendor/ink/build/components/FocusContext.d.ts +16 -0
  511. package/vendor/ink/build/components/FocusContext.js +17 -0
  512. package/vendor/ink/build/components/FocusContext.js.map +1 -0
  513. package/vendor/ink/build/components/Newline.d.ts +13 -0
  514. package/vendor/ink/build/components/Newline.js +8 -0
  515. package/vendor/ink/build/components/Newline.js.map +1 -0
  516. package/vendor/ink/build/components/Spacer.d.ts +7 -0
  517. package/vendor/ink/build/components/Spacer.js +11 -0
  518. package/vendor/ink/build/components/Spacer.js.map +1 -0
  519. package/vendor/ink/build/components/Static.d.ts +24 -0
  520. package/vendor/ink/build/components/Static.js +28 -0
  521. package/vendor/ink/build/components/Static.js.map +1 -0
  522. package/vendor/ink/build/components/StderrContext.d.ts +15 -0
  523. package/vendor/ink/build/components/StderrContext.js +13 -0
  524. package/vendor/ink/build/components/StderrContext.js.map +1 -0
  525. package/vendor/ink/build/components/StdinContext.d.ts +22 -0
  526. package/vendor/ink/build/components/StdinContext.js +19 -0
  527. package/vendor/ink/build/components/StdinContext.js.map +1 -0
  528. package/vendor/ink/build/components/StdoutContext.d.ts +15 -0
  529. package/vendor/ink/build/components/StdoutContext.js +13 -0
  530. package/vendor/ink/build/components/StdoutContext.js.map +1 -0
  531. package/vendor/ink/build/components/Text.d.ts +55 -0
  532. package/vendor/ink/build/components/Text.js +50 -0
  533. package/vendor/ink/build/components/Text.js.map +1 -0
  534. package/vendor/ink/build/components/Transform.d.ts +16 -0
  535. package/vendor/ink/build/components/Transform.js +15 -0
  536. package/vendor/ink/build/components/Transform.js.map +1 -0
  537. package/vendor/ink/build/cursor-helpers.d.ts +38 -0
  538. package/vendor/ink/build/cursor-helpers.js +56 -0
  539. package/vendor/ink/build/cursor-helpers.js.map +1 -0
  540. package/vendor/ink/build/devtools-window-polyfill.d.ts +1 -0
  541. package/vendor/ink/build/devtools-window-polyfill.js +65 -0
  542. package/vendor/ink/build/devtools-window-polyfill.js.map +1 -0
  543. package/vendor/ink/build/devtools.d.ts +1 -0
  544. package/vendor/ink/build/devtools.js +11 -0
  545. package/vendor/ink/build/devtools.js.map +1 -0
  546. package/vendor/ink/build/dom.d.ts +56 -0
  547. package/vendor/ink/build/dom.js +124 -0
  548. package/vendor/ink/build/dom.js.map +1 -0
  549. package/vendor/ink/build/experimental/apply-style.js +140 -0
  550. package/vendor/ink/build/experimental/dom.js +123 -0
  551. package/vendor/ink/build/experimental/output.js +91 -0
  552. package/vendor/ink/build/experimental/reconciler.js +141 -0
  553. package/vendor/ink/build/experimental/renderer.js +81 -0
  554. package/vendor/ink/build/get-max-width.d.ts +3 -0
  555. package/vendor/ink/build/get-max-width.js +10 -0
  556. package/vendor/ink/build/get-max-width.js.map +1 -0
  557. package/vendor/ink/build/hooks/use-app.d.ts +5 -0
  558. package/vendor/ink/build/hooks/use-app.js +8 -0
  559. package/vendor/ink/build/hooks/use-app.js.map +1 -0
  560. package/vendor/ink/build/hooks/use-cursor.d.ts +12 -0
  561. package/vendor/ink/build/hooks/use-cursor.js +29 -0
  562. package/vendor/ink/build/hooks/use-cursor.js.map +1 -0
  563. package/vendor/ink/build/hooks/use-focus-manager.d.ts +28 -0
  564. package/vendor/ink/build/hooks/use-focus-manager.js +17 -0
  565. package/vendor/ink/build/hooks/use-focus-manager.js.map +1 -0
  566. package/vendor/ink/build/hooks/use-focus.d.ts +29 -0
  567. package/vendor/ink/build/hooks/use-focus.js +42 -0
  568. package/vendor/ink/build/hooks/use-focus.js.map +1 -0
  569. package/vendor/ink/build/hooks/use-input.d.ts +131 -0
  570. package/vendor/ink/build/hooks/use-input.js +124 -0
  571. package/vendor/ink/build/hooks/use-input.js.map +1 -0
  572. package/vendor/ink/build/hooks/use-is-screen-reader-enabled.d.ts +5 -0
  573. package/vendor/ink/build/hooks/use-is-screen-reader-enabled.js +11 -0
  574. package/vendor/ink/build/hooks/use-is-screen-reader-enabled.js.map +1 -0
  575. package/vendor/ink/build/hooks/use-stderr.d.ts +5 -0
  576. package/vendor/ink/build/hooks/use-stderr.js +8 -0
  577. package/vendor/ink/build/hooks/use-stderr.js.map +1 -0
  578. package/vendor/ink/build/hooks/use-stdin.d.ts +5 -0
  579. package/vendor/ink/build/hooks/use-stdin.js +8 -0
  580. package/vendor/ink/build/hooks/use-stdin.js.map +1 -0
  581. package/vendor/ink/build/hooks/use-stdout.d.ts +5 -0
  582. package/vendor/ink/build/hooks/use-stdout.js +8 -0
  583. package/vendor/ink/build/hooks/use-stdout.js.map +1 -0
  584. package/vendor/ink/build/hooks/useInput.js +38 -0
  585. package/vendor/ink/build/index.d.ts +34 -0
  586. package/vendor/ink/build/index.js +20 -0
  587. package/vendor/ink/build/index.js.map +1 -0
  588. package/vendor/ink/build/ink.d.ts +90 -0
  589. package/vendor/ink/build/ink.js +654 -0
  590. package/vendor/ink/build/ink.js.map +1 -0
  591. package/vendor/ink/build/input-parser.d.ts +7 -0
  592. package/vendor/ink/build/input-parser.js +154 -0
  593. package/vendor/ink/build/input-parser.js.map +1 -0
  594. package/vendor/ink/build/instance.js +205 -0
  595. package/vendor/ink/build/instances.d.ts +3 -0
  596. package/vendor/ink/build/instances.js +8 -0
  597. package/vendor/ink/build/instances.js.map +1 -0
  598. package/vendor/ink/build/kitty-keyboard.d.ts +23 -0
  599. package/vendor/ink/build/kitty-keyboard.js +32 -0
  600. package/vendor/ink/build/kitty-keyboard.js.map +1 -0
  601. package/vendor/ink/build/layout.d.ts +7 -0
  602. package/vendor/ink/build/layout.js +33 -0
  603. package/vendor/ink/build/layout.js.map +1 -0
  604. package/vendor/ink/build/log-update.d.ts +19 -0
  605. package/vendor/ink/build/log-update.js +243 -0
  606. package/vendor/ink/build/log-update.js.map +1 -0
  607. package/vendor/ink/build/measure-element.d.ts +16 -0
  608. package/vendor/ink/build/measure-element.js +9 -0
  609. package/vendor/ink/build/measure-element.js.map +1 -0
  610. package/vendor/ink/build/measure-text.d.ts +6 -0
  611. package/vendor/ink/build/measure-text.js +21 -0
  612. package/vendor/ink/build/measure-text.js.map +1 -0
  613. package/vendor/ink/build/options.d.ts +52 -0
  614. package/vendor/ink/build/options.js +2 -0
  615. package/vendor/ink/build/options.js.map +1 -0
  616. package/vendor/ink/build/output.d.ts +35 -0
  617. package/vendor/ink/build/output.js +183 -0
  618. package/vendor/ink/build/output.js.map +1 -0
  619. package/vendor/ink/build/parse-keypress.d.ts +22 -0
  620. package/vendor/ink/build/parse-keypress.js +493 -0
  621. package/vendor/ink/build/parse-keypress.js.map +1 -0
  622. package/vendor/ink/build/reconciler.d.ts +4 -0
  623. package/vendor/ink/build/reconciler.js +274 -0
  624. package/vendor/ink/build/reconciler.js.map +1 -0
  625. package/vendor/ink/build/render-background.d.ts +4 -0
  626. package/vendor/ink/build/render-background.js +25 -0
  627. package/vendor/ink/build/render-background.js.map +1 -0
  628. package/vendor/ink/build/render-border.d.ts +4 -0
  629. package/vendor/ink/build/render-border.js +73 -0
  630. package/vendor/ink/build/render-border.js.map +1 -0
  631. package/vendor/ink/build/render-node-to-output.d.ts +14 -0
  632. package/vendor/ink/build/render-node-to-output.js +147 -0
  633. package/vendor/ink/build/render-node-to-output.js.map +1 -0
  634. package/vendor/ink/build/render-to-string.d.ts +38 -0
  635. package/vendor/ink/build/render-to-string.js +115 -0
  636. package/vendor/ink/build/render-to-string.js.map +1 -0
  637. package/vendor/ink/build/render.d.ts +121 -0
  638. package/vendor/ink/build/render.js +55 -0
  639. package/vendor/ink/build/render.js.map +1 -0
  640. package/vendor/ink/build/renderer.d.ts +8 -0
  641. package/vendor/ink/build/renderer.js +55 -0
  642. package/vendor/ink/build/renderer.js.map +1 -0
  643. package/vendor/ink/build/sanitize-ansi.d.ts +2 -0
  644. package/vendor/ink/build/sanitize-ansi.js +27 -0
  645. package/vendor/ink/build/sanitize-ansi.js.map +1 -0
  646. package/vendor/ink/build/screen-reader-update.d.ts +13 -0
  647. package/vendor/ink/build/screen-reader-update.js +38 -0
  648. package/vendor/ink/build/screen-reader-update.js.map +1 -0
  649. package/vendor/ink/build/squash-text-nodes.d.ts +3 -0
  650. package/vendor/ink/build/squash-text-nodes.js +36 -0
  651. package/vendor/ink/build/squash-text-nodes.js.map +1 -0
  652. package/vendor/ink/build/styles.d.ts +240 -0
  653. package/vendor/ink/build/styles.js +232 -0
  654. package/vendor/ink/build/styles.js.map +1 -0
  655. package/vendor/ink/build/utils.d.ts +2 -0
  656. package/vendor/ink/build/utils.js +4 -0
  657. package/vendor/ink/build/utils.js.map +1 -0
  658. package/vendor/ink/build/wrap-text.d.ts +3 -0
  659. package/vendor/ink/build/wrap-text.js +31 -0
  660. package/vendor/ink/build/wrap-text.js.map +1 -0
  661. package/vendor/ink/build/write-synchronized.d.ts +4 -0
  662. package/vendor/ink/build/write-synchronized.js +7 -0
  663. package/vendor/ink/build/write-synchronized.js.map +1 -0
  664. package/vendor/ink/license +10 -0
  665. package/vendor/ink/node_modules/@types/node/LICENSE +21 -0
  666. package/vendor/ink/node_modules/@types/node/README.md +15 -0
  667. package/vendor/ink/node_modules/@types/node/assert/strict.d.ts +105 -0
  668. package/vendor/ink/node_modules/@types/node/assert.d.ts +955 -0
  669. package/vendor/ink/node_modules/@types/node/async_hooks.d.ts +623 -0
  670. package/vendor/ink/node_modules/@types/node/buffer.buffer.d.ts +466 -0
  671. package/vendor/ink/node_modules/@types/node/buffer.d.ts +1810 -0
  672. package/vendor/ink/node_modules/@types/node/child_process.d.ts +1428 -0
  673. package/vendor/ink/node_modules/@types/node/cluster.d.ts +486 -0
  674. package/vendor/ink/node_modules/@types/node/compatibility/iterators.d.ts +21 -0
  675. package/vendor/ink/node_modules/@types/node/console.d.ts +151 -0
  676. package/vendor/ink/node_modules/@types/node/constants.d.ts +20 -0
  677. package/vendor/ink/node_modules/@types/node/crypto.d.ts +4065 -0
  678. package/vendor/ink/node_modules/@types/node/dgram.d.ts +564 -0
  679. package/vendor/ink/node_modules/@types/node/diagnostics_channel.d.ts +576 -0
  680. package/vendor/ink/node_modules/@types/node/dns/promises.d.ts +503 -0
  681. package/vendor/ink/node_modules/@types/node/dns.d.ts +922 -0
  682. package/vendor/ink/node_modules/@types/node/domain.d.ts +166 -0
  683. package/vendor/ink/node_modules/@types/node/events.d.ts +1054 -0
  684. package/vendor/ink/node_modules/@types/node/fs/promises.d.ts +1329 -0
  685. package/vendor/ink/node_modules/@types/node/fs.d.ts +4676 -0
  686. package/vendor/ink/node_modules/@types/node/globals.d.ts +150 -0
  687. package/vendor/ink/node_modules/@types/node/globals.typedarray.d.ts +101 -0
  688. package/vendor/ink/node_modules/@types/node/http.d.ts +2167 -0
  689. package/vendor/ink/node_modules/@types/node/http2.d.ts +2480 -0
  690. package/vendor/ink/node_modules/@types/node/https.d.ts +405 -0
  691. package/vendor/ink/node_modules/@types/node/index.d.ts +115 -0
  692. package/vendor/ink/node_modules/@types/node/inspector/promises.d.ts +41 -0
  693. package/vendor/ink/node_modules/@types/node/inspector.d.ts +224 -0
  694. package/vendor/ink/node_modules/@types/node/inspector.generated.d.ts +4226 -0
  695. package/vendor/ink/node_modules/@types/node/module.d.ts +819 -0
  696. package/vendor/ink/node_modules/@types/node/net.d.ts +933 -0
  697. package/vendor/ink/node_modules/@types/node/os.d.ts +507 -0
  698. package/vendor/ink/node_modules/@types/node/package.json +155 -0
  699. package/vendor/ink/node_modules/@types/node/path/posix.d.ts +8 -0
  700. package/vendor/ink/node_modules/@types/node/path/win32.d.ts +8 -0
  701. package/vendor/ink/node_modules/@types/node/path.d.ts +187 -0
  702. package/vendor/ink/node_modules/@types/node/perf_hooks.d.ts +643 -0
  703. package/vendor/ink/node_modules/@types/node/process.d.ts +2156 -0
  704. package/vendor/ink/node_modules/@types/node/punycode.d.ts +117 -0
  705. package/vendor/ink/node_modules/@types/node/querystring.d.ts +152 -0
  706. package/vendor/ink/node_modules/@types/node/quic.d.ts +910 -0
  707. package/vendor/ink/node_modules/@types/node/readline/promises.d.ts +161 -0
  708. package/vendor/ink/node_modules/@types/node/readline.d.ts +541 -0
  709. package/vendor/ink/node_modules/@types/node/repl.d.ts +415 -0
  710. package/vendor/ink/node_modules/@types/node/sea.d.ts +162 -0
  711. package/vendor/ink/node_modules/@types/node/sqlite.d.ts +955 -0
  712. package/vendor/ink/node_modules/@types/node/stream/consumers.d.ts +38 -0
  713. package/vendor/ink/node_modules/@types/node/stream/promises.d.ts +211 -0
  714. package/vendor/ink/node_modules/@types/node/stream/web.d.ts +296 -0
  715. package/vendor/ink/node_modules/@types/node/stream.d.ts +1760 -0
  716. package/vendor/ink/node_modules/@types/node/string_decoder.d.ts +67 -0
  717. package/vendor/ink/node_modules/@types/node/test/reporters.d.ts +96 -0
  718. package/vendor/ink/node_modules/@types/node/test.d.ts +2240 -0
  719. package/vendor/ink/node_modules/@types/node/timers/promises.d.ts +108 -0
  720. package/vendor/ink/node_modules/@types/node/timers.d.ts +159 -0
  721. package/vendor/ink/node_modules/@types/node/tls.d.ts +1198 -0
  722. package/vendor/ink/node_modules/@types/node/trace_events.d.ts +197 -0
  723. package/vendor/ink/node_modules/@types/node/ts5.6/buffer.buffer.d.ts +462 -0
  724. package/vendor/ink/node_modules/@types/node/ts5.6/compatibility/float16array.d.ts +71 -0
  725. package/vendor/ink/node_modules/@types/node/ts5.6/globals.typedarray.d.ts +36 -0
  726. package/vendor/ink/node_modules/@types/node/ts5.6/index.d.ts +117 -0
  727. package/vendor/ink/node_modules/@types/node/ts5.7/compatibility/float16array.d.ts +72 -0
  728. package/vendor/ink/node_modules/@types/node/ts5.7/index.d.ts +117 -0
  729. package/vendor/ink/node_modules/@types/node/tty.d.ts +250 -0
  730. package/vendor/ink/node_modules/@types/node/url.d.ts +519 -0
  731. package/vendor/ink/node_modules/@types/node/util/types.d.ts +558 -0
  732. package/vendor/ink/node_modules/@types/node/util.d.ts +1662 -0
  733. package/vendor/ink/node_modules/@types/node/v8.d.ts +983 -0
  734. package/vendor/ink/node_modules/@types/node/vm.d.ts +1208 -0
  735. package/vendor/ink/node_modules/@types/node/wasi.d.ts +202 -0
  736. package/vendor/ink/node_modules/@types/node/web-globals/abortcontroller.d.ts +59 -0
  737. package/vendor/ink/node_modules/@types/node/web-globals/blob.d.ts +23 -0
  738. package/vendor/ink/node_modules/@types/node/web-globals/console.d.ts +9 -0
  739. package/vendor/ink/node_modules/@types/node/web-globals/crypto.d.ts +39 -0
  740. package/vendor/ink/node_modules/@types/node/web-globals/domexception.d.ts +68 -0
  741. package/vendor/ink/node_modules/@types/node/web-globals/encoding.d.ts +11 -0
  742. package/vendor/ink/node_modules/@types/node/web-globals/events.d.ts +106 -0
  743. package/vendor/ink/node_modules/@types/node/web-globals/fetch.d.ts +69 -0
  744. package/vendor/ink/node_modules/@types/node/web-globals/importmeta.d.ts +13 -0
  745. package/vendor/ink/node_modules/@types/node/web-globals/messaging.d.ts +23 -0
  746. package/vendor/ink/node_modules/@types/node/web-globals/navigator.d.ts +25 -0
  747. package/vendor/ink/node_modules/@types/node/web-globals/performance.d.ts +45 -0
  748. package/vendor/ink/node_modules/@types/node/web-globals/storage.d.ts +24 -0
  749. package/vendor/ink/node_modules/@types/node/web-globals/streams.d.ts +115 -0
  750. package/vendor/ink/node_modules/@types/node/web-globals/timers.d.ts +44 -0
  751. package/vendor/ink/node_modules/@types/node/web-globals/url.d.ts +24 -0
  752. package/vendor/ink/node_modules/@types/node/worker_threads.d.ts +717 -0
  753. package/vendor/ink/node_modules/@types/node/zlib.d.ts +618 -0
  754. package/vendor/ink/node_modules/node-pty/LICENSE +69 -0
  755. package/vendor/ink/node_modules/node-pty/README.md +164 -0
  756. package/vendor/ink/node_modules/node-pty/binding.gyp +150 -0
  757. package/vendor/ink/node_modules/node-pty/lib/conpty_console_list_agent.js +25 -0
  758. package/vendor/ink/node_modules/node-pty/lib/eventEmitter2.js +47 -0
  759. package/vendor/ink/node_modules/node-pty/lib/index.js +52 -0
  760. package/vendor/ink/node_modules/node-pty/lib/interfaces.js +7 -0
  761. package/vendor/ink/node_modules/node-pty/lib/shared/conout.js +11 -0
  762. package/vendor/ink/node_modules/node-pty/lib/terminal.js +190 -0
  763. package/vendor/ink/node_modules/node-pty/lib/types.js +7 -0
  764. package/vendor/ink/node_modules/node-pty/lib/unixTerminal.js +349 -0
  765. package/vendor/ink/node_modules/node-pty/lib/utils.js +39 -0
  766. package/vendor/ink/node_modules/node-pty/lib/windowsConoutConnection.js +125 -0
  767. package/vendor/ink/node_modules/node-pty/lib/windowsPtyAgent.js +287 -0
  768. package/vendor/ink/node_modules/node-pty/lib/windowsTerminal.js +201 -0
  769. package/vendor/ink/node_modules/node-pty/lib/worker/conoutSocketWorker.js +22 -0
  770. package/vendor/ink/node_modules/node-pty/package.json +65 -0
  771. package/vendor/ink/node_modules/node-pty/prebuilds/darwin-arm64/pty.node +0 -0
  772. package/vendor/ink/node_modules/node-pty/prebuilds/darwin-arm64/spawn-helper +0 -0
  773. package/vendor/ink/node_modules/node-pty/prebuilds/darwin-x64/pty.node +0 -0
  774. package/vendor/ink/node_modules/node-pty/prebuilds/darwin-x64/spawn-helper +0 -0
  775. package/vendor/ink/node_modules/node-pty/prebuilds/linux-arm64/pty.node +0 -0
  776. package/vendor/ink/node_modules/node-pty/prebuilds/linux-x64/pty.node +0 -0
  777. package/vendor/ink/node_modules/node-pty/prebuilds/win32-arm64/conpty/OpenConsole.exe +0 -0
  778. package/vendor/ink/node_modules/node-pty/prebuilds/win32-arm64/conpty/conpty.dll +0 -0
  779. package/vendor/ink/node_modules/node-pty/prebuilds/win32-arm64/conpty.node +0 -0
  780. package/vendor/ink/node_modules/node-pty/prebuilds/win32-arm64/conpty.pdb +0 -0
  781. package/vendor/ink/node_modules/node-pty/prebuilds/win32-arm64/conpty_console_list.node +0 -0
  782. package/vendor/ink/node_modules/node-pty/prebuilds/win32-arm64/conpty_console_list.pdb +0 -0
  783. package/vendor/ink/node_modules/node-pty/prebuilds/win32-x64/conpty/OpenConsole.exe +0 -0
  784. package/vendor/ink/node_modules/node-pty/prebuilds/win32-x64/conpty/conpty.dll +0 -0
  785. package/vendor/ink/node_modules/node-pty/prebuilds/win32-x64/conpty.node +0 -0
  786. package/vendor/ink/node_modules/node-pty/prebuilds/win32-x64/conpty.pdb +0 -0
  787. package/vendor/ink/node_modules/node-pty/prebuilds/win32-x64/conpty_console_list.node +0 -0
  788. package/vendor/ink/node_modules/node-pty/prebuilds/win32-x64/conpty_console_list.pdb +0 -0
  789. package/vendor/ink/node_modules/node-pty/scripts/post-install.js +76 -0
  790. package/vendor/ink/node_modules/node-pty/scripts/prebuild.js +34 -0
  791. package/vendor/ink/node_modules/node-pty/src/unix/pty.cc +875 -0
  792. package/vendor/ink/node_modules/node-pty/src/unix/spawn-helper.cc +23 -0
  793. package/vendor/ink/node_modules/node-pty/src/win/conpty.cc +582 -0
  794. package/vendor/ink/node_modules/node-pty/src/win/conpty.h +41 -0
  795. package/vendor/ink/node_modules/node-pty/src/win/conpty_console_list.cc +44 -0
  796. package/vendor/ink/node_modules/node-pty/src/win/path_util.cc +95 -0
  797. package/vendor/ink/node_modules/node-pty/src/win/path_util.h +26 -0
  798. package/vendor/ink/node_modules/node-pty/third_party/conpty/1.23.251008001/win10-arm64/OpenConsole.exe +0 -0
  799. package/vendor/ink/node_modules/node-pty/third_party/conpty/1.23.251008001/win10-arm64/conpty.dll +0 -0
  800. package/vendor/ink/node_modules/node-pty/third_party/conpty/1.23.251008001/win10-x64/OpenConsole.exe +0 -0
  801. package/vendor/ink/node_modules/node-pty/third_party/conpty/1.23.251008001/win10-x64/conpty.dll +0 -0
  802. package/vendor/ink/node_modules/node-pty/typings/node-pty.d.ts +215 -0
  803. package/vendor/ink/node_modules/undici-types/LICENSE +21 -0
  804. package/vendor/ink/node_modules/undici-types/README.md +6 -0
  805. package/vendor/ink/node_modules/undici-types/agent.d.ts +32 -0
  806. package/vendor/ink/node_modules/undici-types/api.d.ts +43 -0
  807. package/vendor/ink/node_modules/undici-types/balanced-pool.d.ts +30 -0
  808. package/vendor/ink/node_modules/undici-types/cache-interceptor.d.ts +173 -0
  809. package/vendor/ink/node_modules/undici-types/cache.d.ts +36 -0
  810. package/vendor/ink/node_modules/undici-types/client-stats.d.ts +15 -0
  811. package/vendor/ink/node_modules/undici-types/client.d.ts +108 -0
  812. package/vendor/ink/node_modules/undici-types/connector.d.ts +34 -0
  813. package/vendor/ink/node_modules/undici-types/content-type.d.ts +21 -0
  814. package/vendor/ink/node_modules/undici-types/cookies.d.ts +30 -0
  815. package/vendor/ink/node_modules/undici-types/diagnostics-channel.d.ts +74 -0
  816. package/vendor/ink/node_modules/undici-types/dispatcher.d.ts +276 -0
  817. package/vendor/ink/node_modules/undici-types/env-http-proxy-agent.d.ts +22 -0
  818. package/vendor/ink/node_modules/undici-types/errors.d.ts +161 -0
  819. package/vendor/ink/node_modules/undici-types/eventsource.d.ts +66 -0
  820. package/vendor/ink/node_modules/undici-types/fetch.d.ts +211 -0
  821. package/vendor/ink/node_modules/undici-types/formdata.d.ts +108 -0
  822. package/vendor/ink/node_modules/undici-types/global-dispatcher.d.ts +9 -0
  823. package/vendor/ink/node_modules/undici-types/global-origin.d.ts +7 -0
  824. package/vendor/ink/node_modules/undici-types/h2c-client.d.ts +73 -0
  825. package/vendor/ink/node_modules/undici-types/handlers.d.ts +15 -0
  826. package/vendor/ink/node_modules/undici-types/header.d.ts +160 -0
  827. package/vendor/ink/node_modules/undici-types/index.d.ts +88 -0
  828. package/vendor/ink/node_modules/undici-types/interceptors.d.ts +73 -0
  829. package/vendor/ink/node_modules/undici-types/mock-agent.d.ts +68 -0
  830. package/vendor/ink/node_modules/undici-types/mock-call-history.d.ts +111 -0
  831. package/vendor/ink/node_modules/undici-types/mock-client.d.ts +27 -0
  832. package/vendor/ink/node_modules/undici-types/mock-errors.d.ts +12 -0
  833. package/vendor/ink/node_modules/undici-types/mock-interceptor.d.ts +94 -0
  834. package/vendor/ink/node_modules/undici-types/mock-pool.d.ts +27 -0
  835. package/vendor/ink/node_modules/undici-types/package.json +55 -0
  836. package/vendor/ink/node_modules/undici-types/patch.d.ts +29 -0
  837. package/vendor/ink/node_modules/undici-types/pool-stats.d.ts +19 -0
  838. package/vendor/ink/node_modules/undici-types/pool.d.ts +41 -0
  839. package/vendor/ink/node_modules/undici-types/proxy-agent.d.ts +29 -0
  840. package/vendor/ink/node_modules/undici-types/readable.d.ts +68 -0
  841. package/vendor/ink/node_modules/undici-types/retry-agent.d.ts +8 -0
  842. package/vendor/ink/node_modules/undici-types/retry-handler.d.ts +125 -0
  843. package/vendor/ink/node_modules/undici-types/round-robin-pool.d.ts +41 -0
  844. package/vendor/ink/node_modules/undici-types/snapshot-agent.d.ts +109 -0
  845. package/vendor/ink/node_modules/undici-types/util.d.ts +18 -0
  846. package/vendor/ink/node_modules/undici-types/utility.d.ts +7 -0
  847. package/vendor/ink/node_modules/undici-types/webidl.d.ts +341 -0
  848. package/vendor/ink/node_modules/undici-types/websocket.d.ts +186 -0
  849. package/vendor/ink/package.json +201 -0
  850. package/vendor/ink/readme.md +2636 -0
  851. package/bin/swag-agent.js +0 -9
  852. package/dist/server/lib/pg-rate-limiter.d.ts +0 -21
  853. package/dist/server/lib/pg-rate-limiter.js +0 -86
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai.js","names":["randomUUID","OpenAI","sanitizeError","isOpenAIReasoningModel","getCapabilities","registerProvider","jsonResponse","writeSSEHeaders","emitError","resolveProviderCredentials","DEFAULT_OUTPUT_TOKENS","MODEL_MAX_OUTPUT_TOKENS","anthropicToResponsesInput","messages","knownCallIds","Set","msg","role","Array","isArray","content","block","type","id","name","add","input","push","contentParts","tool_use_id","has","output","filter","c","map","text","join","call_id","source","data","image_url","media_type","length","textContent","slice","arguments","JSON","stringify","sanitizeSchemaForOpenAI","schema","result","key","value","Object","entries","props","propName","propSchema","items","required","properties","validProps","keys","r","anthropicToResponsesTools","tools","t","description","parameters","input_schema","strict","OpenAIAdapter","handleStream","res","config","corsHeaders","model","system","max_tokens","temperature","storeId","tool_choice","creds","openai","error","client","apiKey","isReasoning","openaiInput","openaiTools","undefined","instructions","s","params","stream","store","max_output_tokens","parallel_tool_calls","truncation","reasoning","effort","summary","function","totalInputTokens","totalOutputTokens","totalReasoningTokens","totalCacheReadTokens","heartbeat","responses","create","setInterval","writableEnded","write","message","stop_reason","usage","input_tokens","output_tokens","blockIndex","hasOpenTextBlock","hasOpenThinkingBlock","hasToolUse","hasEmittedContent","pendingFunctionCalls","Map","closeOpenBlocks","index","event","delta","content_block","thinking","item","set","callId","pending","get","item_id","delete","args","parsedInput","parse","toolUseId","partial_json","response","output_tokens_details","reasoning_tokens","input_tokens_details","cached_tokens","errMsg","console","warn","incomplete_details","stopReason","stop_sequence","thinking_tokens","cache_read_input_tokens","err","provider","inputTokens","outputTokens","thinkingTokens","cacheReadTokens","clearInterval","end","getThinkingConfig","enabled","beta","test","getMaxOutputTokens","agentMax","modelMax","Math","min","getContextManagement","_model","betas","edits","getCompactionConfig","triggerTokens","totalBudget","isNative"],"sources":["../../../src/server/providers/openai.ts"],"sourcesContent":["/**\n * OpenAI Provider Adapter — Responses API (2026) with format conversion to Anthropic SSE.\n *\n * Contains:\n * - anthropicToResponsesInput() — messages → Responses API format\n * - sanitizeSchemaForOpenAI() — schema cleanup\n * - anthropicToResponsesTools() — tool format conversion\n * - Streaming with 12 event type handlers\n * - pendingFunctionCalls tracking (per-request, not shared)\n *\n * Phase 7.1: Also encapsulates thinking config, context management,\n * output token limits, and compaction config for OpenAI models.\n */\n\nimport { randomUUID } from \"node:crypto\";\nimport OpenAI from \"openai\";\nimport { sanitizeError } from \"../../shared/agent-core.js\";\nimport { isOpenAIReasoningModel } from \"../../shared/constants.js\";\nimport type {\n ProviderAdapter,\n ProviderStreamConfig,\n ProviderCapabilities,\n ThinkingConfigResult,\n ContextManagementConfig,\n CompactionConfig,\n} from \"./types.js\";\nimport { getCapabilities } from \"../lib/provider-capabilities.js\";\nimport { registerProvider } from \"./registry.js\";\nimport { jsonResponse, writeSSEHeaders, emitError, resolveProviderCredentials } from \"./shared.js\";\nimport type http from \"node:http\";\n\n// ============================================================================\n// CONSTANTS — OpenAI-specific model config\n// ============================================================================\n\nconst DEFAULT_OUTPUT_TOKENS = 16384;\n\nconst MODEL_MAX_OUTPUT_TOKENS: Record<string, number> = {\n \"gpt-5\": 128000,\n \"gpt-5-mini\": 128000,\n \"gpt-5-nano\": 128000,\n \"o3\": 100000,\n \"o4-mini\": 100000,\n \"gpt-4o\": 16384,\n};\n\n// ============================================================================\n// MESSAGE CONVERSION\n// ============================================================================\n\n/**\n * Convert Anthropic messages to OpenAI Responses API input format.\n *\n * Key differences from Chat Completions:\n * - System prompt goes to `instructions` param (not in input array)\n * - tool_use blocks become top-level `function_call` items\n * - tool_result blocks become top-level `function_call_output` items\n * - Images use `input_image` type with data URL in `image_url`\n * - call_id is used directly (no ID mapping needed)\n */\nfunction anthropicToResponsesInput(messages: any[]): Array<Record<string, unknown>> {\n // Pass 1: collect all tool_use call_ids so we can match function_call_output items\n const knownCallIds = new Set<string>();\n for (const msg of messages) {\n if (msg.role === \"assistant\" && Array.isArray(msg.content)) {\n for (const block of msg.content) {\n if (block.type === \"tool_use\" && block.id && block.name) {\n knownCallIds.add(block.id);\n }\n }\n }\n }\n\n // Pass 2: build input array\n const input: Array<Record<string, unknown>> = [];\n\n for (const msg of messages) {\n if (msg.role === \"user\") {\n if (typeof msg.content === \"string\") {\n input.push({ role: \"user\", content: msg.content });\n } else if (Array.isArray(msg.content)) {\n const contentParts: Array<Record<string, unknown>> = [];\n\n for (const block of msg.content) {\n if (block.type === \"tool_result\" && block.tool_use_id) {\n // Only emit if there's a matching function_call (prevents orphaned outputs after compaction)\n if (knownCallIds.has(block.tool_use_id)) {\n let output = \"\";\n if (typeof block.content === \"string\") {\n output = block.content;\n } else if (Array.isArray(block.content)) {\n output = block.content\n .filter((c: any) => c.type === \"text\")\n .map((c: any) => c.text)\n .join(\"\\n\");\n }\n input.push({\n type: \"function_call_output\",\n call_id: block.tool_use_id,\n output: output || \"(no output)\",\n });\n }\n } else if (block.type === \"text\" && block.text) {\n contentParts.push({ type: \"input_text\", text: block.text });\n } else if (block.type === \"image\" && block.source?.data) {\n contentParts.push({\n type: \"input_image\",\n image_url: `data:${block.source.media_type};base64,${block.source.data}`,\n });\n }\n }\n\n // Emit content parts as user message\n if (contentParts.length === 1 && contentParts[0].type === \"input_text\") {\n input.push({ role: \"user\", content: contentParts[0].text as string });\n } else if (contentParts.length > 0) {\n input.push({ role: \"user\", content: contentParts });\n }\n }\n } else if (msg.role === \"assistant\") {\n if (typeof msg.content === \"string\") {\n input.push({ role: \"assistant\", content: msg.content });\n } else if (Array.isArray(msg.content)) {\n let textContent = \"\";\n\n for (const block of msg.content) {\n if (block.type === \"text\" && block.text) {\n textContent += block.text;\n } else if (block.type === \"tool_use\" && block.name) {\n // Emit accumulated text as assistant message first\n if (textContent) {\n input.push({ role: \"assistant\", content: textContent });\n textContent = \"\";\n }\n // Emit function_call as top-level input item\n input.push({\n type: \"function_call\",\n call_id: block.id || `call_${randomUUID().slice(0, 12)}`,\n name: block.name,\n arguments: JSON.stringify(block.input || {}),\n });\n }\n // Skip thinking/compaction blocks — not relevant for OpenAI\n }\n\n if (textContent) {\n input.push({ role: \"assistant\", content: textContent });\n }\n }\n }\n }\n\n return input;\n}\n\n// ============================================================================\n// SCHEMA SANITIZATION\n// ============================================================================\n\n/** Sanitize JSON Schema for OpenAI — ensure arrays have items, objects have properties */\nfunction sanitizeSchemaForOpenAI(schema: any): any {\n if (!schema || typeof schema !== \"object\") return schema;\n if (Array.isArray(schema)) return schema.map(sanitizeSchemaForOpenAI);\n\n const result: any = {};\n for (const [key, value] of Object.entries(schema)) {\n if (key === \"properties\" && typeof value === \"object\" && value !== null && !Array.isArray(value)) {\n const props: any = {};\n for (const [propName, propSchema] of Object.entries(value as Record<string, unknown>)) {\n props[propName] = sanitizeSchemaForOpenAI(propSchema);\n }\n result[key] = props;\n } else {\n result[key] = sanitizeSchemaForOpenAI(value);\n }\n }\n\n // OpenAI requires arrays to have items\n if (result.type === \"array\" && !result.items) {\n result.items = { type: \"string\" };\n }\n\n // Filter required to only include defined properties\n if (result.required && Array.isArray(result.required) && result.properties) {\n const validProps = new Set(Object.keys(result.properties));\n result.required = result.required.filter((r: string) => validProps.has(r));\n if (result.required.length === 0) delete result.required;\n }\n\n return result;\n}\n\n/** Convert Anthropic tools to OpenAI Responses API FunctionTool format */\nfunction anthropicToResponsesTools(tools: any[]): Array<Record<string, unknown>> {\n return tools.map((t: any) => ({\n type: \"function\",\n name: t.name,\n description: typeof t.description === \"string\" ? t.description.slice(0, 4096) : \"\",\n parameters: sanitizeSchemaForOpenAI(t.input_schema || {}),\n strict: false,\n }));\n}\n\n// ============================================================================\n// ADAPTER\n// ============================================================================\n\nexport class OpenAIAdapter implements ProviderAdapter {\n name = \"openai\";\n\n async handleStream(\n res: http.ServerResponse,\n config: ProviderStreamConfig,\n corsHeaders: Record<string, string>,\n ): Promise<void> {\n const { model, messages, system, tools, max_tokens, temperature, storeId, tool_choice } = config;\n\n const creds = await resolveProviderCredentials(\"openai\", storeId);\n if (!creds.openai) {\n jsonResponse(res, 422, { error: \"OpenAI credentials not configured. Add OPENAI_API_KEY to user_tool_secrets.\" }, corsHeaders);\n return;\n }\n\n const client = new OpenAI({ apiKey: creds.openai.apiKey });\n const isReasoning = isOpenAIReasoningModel(model);\n\n // Convert Anthropic format → Responses API format\n const openaiInput = anthropicToResponsesInput(messages);\n const openaiTools = tools?.length ? anthropicToResponsesTools(tools) : undefined;\n\n // Extract system prompt → instructions parameter\n let instructions = \"\";\n if (typeof system === \"string\") {\n instructions = system;\n } else if (Array.isArray(system)) {\n instructions = system.map((s: any) => s.text || \"\").join(\"\\n\");\n }\n\n // Build Responses API request\n const params: Record<string, unknown> = {\n model,\n input: openaiInput,\n stream: true,\n store: false,\n max_output_tokens: max_tokens,\n parallel_tool_calls: true,\n truncation: \"auto\",\n };\n\n if (instructions) params.instructions = instructions;\n if (openaiTools?.length) params.tools = openaiTools;\n\n if (isReasoning) {\n params.reasoning = { effort: \"high\", summary: \"detailed\" };\n } else {\n if (temperature !== undefined) params.temperature = temperature;\n }\n\n // Map tool_choice to OpenAI Responses API format\n if (tool_choice) {\n if (tool_choice === \"auto\") {\n // \"auto\" is default for OpenAI — no-op\n } else if (tool_choice === \"any\") {\n params.tool_choice = \"required\";\n } else if (tool_choice === \"none\") {\n params.tool_choice = \"none\";\n delete params.tools;\n } else if (typeof tool_choice === \"object\" && tool_choice.type === \"tool\") {\n params.tool_choice = { type: \"function\", function: { name: tool_choice.name } };\n }\n }\n\n // Defer SSE headers until stream is successfully created\n // so we can return proper HTTP errors if the initial API call fails.\n let totalInputTokens = 0;\n let totalOutputTokens = 0;\n let totalReasoningTokens = 0;\n let totalCacheReadTokens = 0;\n let heartbeat: ReturnType<typeof setInterval> | undefined;\n\n try {\n const stream = await (client.responses.create(params as any) as unknown as Promise<AsyncIterable<any>>);\n\n // Stream created successfully — now safe to commit to SSE\n writeSSEHeaders(res, corsHeaders);\n\n // Heartbeat keeps the connection alive and helps detect dead clients\n heartbeat = setInterval(() => {\n if (!res.writableEnded) res.write(\":ping\\n\\n\");\n }, 15_000);\n\n // Emit Anthropic-format message_start\n res.write(`data: ${JSON.stringify({\n type: \"message_start\",\n message: {\n id: `msg_openai_${randomUUID().slice(0, 8)}`,\n type: \"message\",\n role: \"assistant\",\n content: [],\n model,\n stop_reason: null,\n usage: { input_tokens: 0, output_tokens: 0 },\n },\n })}\\n\\n`);\n\n let blockIndex = 0;\n let hasOpenTextBlock = false;\n let hasOpenThinkingBlock = false;\n let hasToolUse = false;\n let hasEmittedContent = false;\n // Per-request function call tracking (not shared between concurrent requests)\n const pendingFunctionCalls = new Map<string, { name: string; callId: string }>();\n\n // Helper to close any open content blocks\n const closeOpenBlocks = () => {\n if (hasOpenThinkingBlock) {\n res.write(`data: ${JSON.stringify({ type: \"content_block_stop\", index: blockIndex })}\\n\\n`);\n blockIndex++;\n hasOpenThinkingBlock = false;\n }\n if (hasOpenTextBlock) {\n res.write(`data: ${JSON.stringify({ type: \"content_block_stop\", index: blockIndex })}\\n\\n`);\n blockIndex++;\n hasOpenTextBlock = false;\n }\n };\n\n for await (const event of stream as AsyncIterable<any>) {\n switch (event.type) {\n // ---- Reasoning summary → Anthropic thinking block ----\n case \"response.reasoning_summary_text.delta\": {\n const text = event.delta;\n if (!text) break;\n\n if (hasOpenTextBlock) {\n res.write(`data: ${JSON.stringify({ type: \"content_block_stop\", index: blockIndex })}\\n\\n`);\n blockIndex++;\n hasOpenTextBlock = false;\n }\n\n if (!hasOpenThinkingBlock) {\n res.write(`data: ${JSON.stringify({\n type: \"content_block_start\",\n index: blockIndex,\n content_block: { type: \"thinking\", thinking: \"\" },\n })}\\n\\n`);\n hasOpenThinkingBlock = true;\n hasEmittedContent = true;\n }\n\n res.write(`data: ${JSON.stringify({\n type: \"content_block_delta\",\n index: blockIndex,\n delta: { type: \"thinking_delta\", thinking: text },\n })}\\n\\n`);\n break;\n }\n\n case \"response.reasoning_summary_text.done\": {\n break;\n }\n\n // ---- Text content → Anthropic text block ----\n case \"response.output_text.delta\": {\n const text = event.delta;\n if (!text) break;\n\n if (hasOpenThinkingBlock) {\n res.write(`data: ${JSON.stringify({ type: \"content_block_stop\", index: blockIndex })}\\n\\n`);\n blockIndex++;\n hasOpenThinkingBlock = false;\n }\n\n if (!hasOpenTextBlock) {\n res.write(`data: ${JSON.stringify({\n type: \"content_block_start\",\n index: blockIndex,\n content_block: { type: \"text\", text: \"\" },\n })}\\n\\n`);\n hasOpenTextBlock = true;\n hasEmittedContent = true;\n }\n\n res.write(`data: ${JSON.stringify({\n type: \"content_block_delta\",\n index: blockIndex,\n delta: { type: \"text_delta\", text },\n })}\\n\\n`);\n break;\n }\n\n case \"response.output_text.done\": {\n break;\n }\n\n // ---- Function calls → Anthropic tool_use blocks ----\n case \"response.output_item.added\": {\n const item = event.item;\n if (item?.type === \"function_call\" && item.id && item.name) {\n pendingFunctionCalls.set(item.id, { name: item.name, callId: item.call_id || item.id });\n }\n break;\n }\n\n case \"response.function_call_arguments.done\": {\n closeOpenBlocks();\n\n hasToolUse = true;\n hasEmittedContent = true;\n\n const pending = pendingFunctionCalls.get(event.item_id);\n const name = pending?.name || event.name || \"unknown_tool\";\n const callId = pending?.callId || event.call_id || event.item_id;\n if (pending) pendingFunctionCalls.delete(event.item_id);\n\n const args = event.arguments;\n\n let parsedInput = {};\n try { parsedInput = JSON.parse(args || \"{}\"); } catch { /* use empty */ }\n\n const toolUseId = callId || `toolu_openai_${randomUUID().slice(0, 12)}`;\n\n res.write(`data: ${JSON.stringify({\n type: \"content_block_start\",\n index: blockIndex,\n content_block: {\n type: \"tool_use\",\n id: toolUseId,\n name,\n input: {},\n },\n })}\\n\\n`);\n\n res.write(`data: ${JSON.stringify({\n type: \"content_block_delta\",\n index: blockIndex,\n delta: {\n type: \"input_json_delta\",\n partial_json: JSON.stringify(parsedInput),\n },\n })}\\n\\n`);\n\n res.write(`data: ${JSON.stringify({ type: \"content_block_stop\", index: blockIndex })}\\n\\n`);\n blockIndex++;\n break;\n }\n\n // ---- Completion → usage + stop ----\n case \"response.completed\": {\n const response = event.response;\n if (response?.usage) {\n totalInputTokens = response.usage.input_tokens || 0;\n totalOutputTokens = response.usage.output_tokens || 0;\n if (response.usage.output_tokens_details?.reasoning_tokens) {\n totalReasoningTokens = response.usage.output_tokens_details.reasoning_tokens;\n }\n if (response.usage.input_tokens_details?.cached_tokens) {\n totalCacheReadTokens = response.usage.input_tokens_details.cached_tokens;\n }\n }\n break;\n }\n\n // ---- Error during streaming ----\n case \"response.failed\": {\n const error = event.response?.error;\n const errMsg = error?.message || \"Unknown OpenAI error\";\n console.error(\"[openai-proxy] Response failed:\", errMsg);\n closeOpenBlocks();\n if (!hasEmittedContent) {\n res.write(`data: ${JSON.stringify({\n type: \"content_block_start\",\n index: blockIndex,\n content_block: { type: \"text\", text: \"\" },\n })}\\n\\n`);\n res.write(`data: ${JSON.stringify({\n type: \"content_block_delta\",\n index: blockIndex,\n delta: { type: \"text_delta\", text: `[OpenAI error: ${errMsg}]` },\n })}\\n\\n`);\n res.write(`data: ${JSON.stringify({ type: \"content_block_stop\", index: blockIndex })}\\n\\n`);\n hasEmittedContent = true;\n }\n break;\n }\n\n case \"response.incomplete\": {\n console.warn(\"[openai-proxy] Response incomplete:\", event.response?.incomplete_details);\n break;\n }\n\n default:\n break;\n }\n }\n\n // Close any remaining open blocks\n closeOpenBlocks();\n\n // Handle empty response\n if (!hasEmittedContent) {\n res.write(`data: ${JSON.stringify({\n type: \"content_block_start\",\n index: 0,\n content_block: { type: \"text\", text: \"\" },\n })}\\n\\n`);\n res.write(`data: ${JSON.stringify({\n type: \"content_block_delta\",\n index: 0,\n delta: { type: \"text_delta\", text: \"[OpenAI returned an empty response. Please try again.]\" },\n })}\\n\\n`);\n res.write(`data: ${JSON.stringify({ type: \"content_block_stop\", index: 0 })}\\n\\n`);\n }\n\n // Determine stop reason\n const stopReason = hasToolUse ? \"tool_use\" : \"end_turn\";\n\n // Emit message_delta with usage\n res.write(`data: ${JSON.stringify({\n type: \"message_delta\",\n delta: { stop_reason: stopReason, stop_sequence: null },\n usage: {\n input_tokens: totalInputTokens,\n output_tokens: totalOutputTokens,\n ...(totalReasoningTokens > 0 ? { thinking_tokens: totalReasoningTokens } : {}),\n ...(totalCacheReadTokens > 0 ? { cache_read_input_tokens: totalCacheReadTokens } : {}),\n },\n })}\\n\\n`);\n\n res.write(`data: ${JSON.stringify({ type: \"message_stop\" })}\\n\\n`);\n res.write(\"data: [DONE]\\n\\n\");\n } catch (err: any) {\n emitError(res, err, corsHeaders, sanitizeError, {\n provider: \"openai\",\n inputTokens: totalInputTokens,\n outputTokens: totalOutputTokens,\n thinkingTokens: totalReasoningTokens,\n cacheReadTokens: totalCacheReadTokens,\n });\n } finally {\n if (heartbeat) clearInterval(heartbeat);\n }\n res.end();\n }\n\n // ---- Provider-specific config methods ----\n\n getThinkingConfig(model: string, enabled: boolean): ThinkingConfigResult {\n if (!enabled) {\n return { thinking: { type: \"disabled\" }, beta: \"\" };\n }\n // OpenAI reasoning models (o-series) have built-in reasoning, GPT models don't support thinking\n const isReasoning = /^o\\d/.test(model);\n return { thinking: { type: isReasoning ? \"enabled\" : \"disabled\" }, beta: \"\" };\n }\n\n getMaxOutputTokens(model: string, agentMax?: number): number {\n const modelMax = MODEL_MAX_OUTPUT_TOKENS[model] ?? DEFAULT_OUTPUT_TOKENS;\n if (agentMax) return Math.min(agentMax, modelMax);\n return Math.min(DEFAULT_OUTPUT_TOKENS, modelMax);\n }\n\n getContextManagement(_model: string): ContextManagementConfig {\n // OpenAI doesn't use Anthropic betas or context management\n return { betas: [], config: { edits: [] } };\n }\n\n getCompactionConfig(_model: string): CompactionConfig {\n return { triggerTokens: 120_000, totalBudget: 2_000_000, isNative: false };\n }\n\n getCapabilities(): ProviderCapabilities {\n return getCapabilities(\"openai\");\n }\n}\n\n// Auto-register on import\nregisterProvider(\"openai\", new OpenAIAdapter());\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,UAAU,QAAQ,aAAa;AACxC,OAAOC,MAAM,MAAM,QAAQ;AAC3B,SAASC,aAAa,QAAQ,4BAA4B;AAC1D,SAASC,sBAAsB,QAAQ,2BAA2B;AASlE,SAASC,eAAe,QAAQ,iCAAiC;AACjE,SAASC,gBAAgB,QAAQ,eAAe;AAChD,SAASC,YAAY,EAAEC,eAAe,EAAEC,SAAS,EAAEC,0BAA0B,QAAQ,aAAa;AAGlG;AACA;AACA;;AAEA,MAAMC,qBAAqB,GAAG,KAAK;AAEnC,MAAMC,uBAA+C,GAAG;EACtD,OAAO,EAAE,MAAM;EACf,YAAY,EAAE,MAAM;EACpB,YAAY,EAAE,MAAM;EACpB,IAAI,EAAE,MAAM;EACZ,SAAS,EAAE,MAAM;EACjB,QAAQ,EAAE;AACZ,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,yBAAyBA,CAACC,QAAe,EAAkC;EAClF;EACA,MAAMC,YAAY,GAAG,IAAIC,GAAG,CAAS,CAAC;EACtC,KAAK,MAAMC,GAAG,IAAIH,QAAQ,EAAE;IAC1B,IAAIG,GAAG,CAACC,IAAI,KAAK,WAAW,IAAIC,KAAK,CAACC,OAAO,CAACH,GAAG,CAACI,OAAO,CAAC,EAAE;MAC1D,KAAK,MAAMC,KAAK,IAAIL,GAAG,CAACI,OAAO,EAAE;QAC/B,IAAIC,KAAK,CAACC,IAAI,KAAK,UAAU,IAAID,KAAK,CAACE,EAAE,IAAIF,KAAK,CAACG,IAAI,EAAE;UACvDV,YAAY,CAACW,GAAG,CAACJ,KAAK,CAACE,EAAE,CAAC;QAC5B;MACF;IACF;EACF;;EAEA;EACA,MAAMG,KAAqC,GAAG,EAAE;EAEhD,KAAK,MAAMV,GAAG,IAAIH,QAAQ,EAAE;IAC1B,IAAIG,GAAG,CAACC,IAAI,KAAK,MAAM,EAAE;MACvB,IAAI,OAAOD,GAAG,CAACI,OAAO,KAAK,QAAQ,EAAE;QACnCM,KAAK,CAACC,IAAI,CAAC;UAAEV,IAAI,EAAE,MAAM;UAAEG,OAAO,EAAEJ,GAAG,CAACI;QAAQ,CAAC,CAAC;MACpD,CAAC,MAAM,IAAIF,KAAK,CAACC,OAAO,CAACH,GAAG,CAACI,OAAO,CAAC,EAAE;QACrC,MAAMQ,YAA4C,GAAG,EAAE;QAEvD,KAAK,MAAMP,KAAK,IAAIL,GAAG,CAACI,OAAO,EAAE;UAC/B,IAAIC,KAAK,CAACC,IAAI,KAAK,aAAa,IAAID,KAAK,CAACQ,WAAW,EAAE;YACrD;YACA,IAAIf,YAAY,CAACgB,GAAG,CAACT,KAAK,CAACQ,WAAW,CAAC,EAAE;cACvC,IAAIE,MAAM,GAAG,EAAE;cACf,IAAI,OAAOV,KAAK,CAACD,OAAO,KAAK,QAAQ,EAAE;gBACrCW,MAAM,GAAGV,KAAK,CAACD,OAAO;cACxB,CAAC,MAAM,IAAIF,KAAK,CAACC,OAAO,CAACE,KAAK,CAACD,OAAO,CAAC,EAAE;gBACvCW,MAAM,GAAGV,KAAK,CAACD,OAAO,CACnBY,MAAM,CAAEC,CAAM,IAAKA,CAAC,CAACX,IAAI,KAAK,MAAM,CAAC,CACrCY,GAAG,CAAED,CAAM,IAAKA,CAAC,CAACE,IAAI,CAAC,CACvBC,IAAI,CAAC,IAAI,CAAC;cACf;cACAV,KAAK,CAACC,IAAI,CAAC;gBACTL,IAAI,EAAE,sBAAsB;gBAC5Be,OAAO,EAAEhB,KAAK,CAACQ,WAAW;gBAC1BE,MAAM,EAAEA,MAAM,IAAI;cACpB,CAAC,CAAC;YACJ;UACF,CAAC,MAAM,IAAIV,KAAK,CAACC,IAAI,KAAK,MAAM,IAAID,KAAK,CAACc,IAAI,EAAE;YAC9CP,YAAY,CAACD,IAAI,CAAC;cAAEL,IAAI,EAAE,YAAY;cAAEa,IAAI,EAAEd,KAAK,CAACc;YAAK,CAAC,CAAC;UAC7D,CAAC,MAAM,IAAId,KAAK,CAACC,IAAI,KAAK,OAAO,IAAID,KAAK,CAACiB,MAAM,EAAEC,IAAI,EAAE;YACvDX,YAAY,CAACD,IAAI,CAAC;cAChBL,IAAI,EAAE,aAAa;cACnBkB,SAAS,EAAE,QAAQnB,KAAK,CAACiB,MAAM,CAACG,UAAU,WAAWpB,KAAK,CAACiB,MAAM,CAACC,IAAI;YACxE,CAAC,CAAC;UACJ;QACF;;QAEA;QACA,IAAIX,YAAY,CAACc,MAAM,KAAK,CAAC,IAAId,YAAY,CAAC,CAAC,CAAC,CAACN,IAAI,KAAK,YAAY,EAAE;UACtEI,KAAK,CAACC,IAAI,CAAC;YAAEV,IAAI,EAAE,MAAM;YAAEG,OAAO,EAAEQ,YAAY,CAAC,CAAC,CAAC,CAACO;UAAe,CAAC,CAAC;QACvE,CAAC,MAAM,IAAIP,YAAY,CAACc,MAAM,GAAG,CAAC,EAAE;UAClChB,KAAK,CAACC,IAAI,CAAC;YAAEV,IAAI,EAAE,MAAM;YAAEG,OAAO,EAAEQ;UAAa,CAAC,CAAC;QACrD;MACF;IACF,CAAC,MAAM,IAAIZ,GAAG,CAACC,IAAI,KAAK,WAAW,EAAE;MACnC,IAAI,OAAOD,GAAG,CAACI,OAAO,KAAK,QAAQ,EAAE;QACnCM,KAAK,CAACC,IAAI,CAAC;UAAEV,IAAI,EAAE,WAAW;UAAEG,OAAO,EAAEJ,GAAG,CAACI;QAAQ,CAAC,CAAC;MACzD,CAAC,MAAM,IAAIF,KAAK,CAACC,OAAO,CAACH,GAAG,CAACI,OAAO,CAAC,EAAE;QACrC,IAAIuB,WAAW,GAAG,EAAE;QAEpB,KAAK,MAAMtB,KAAK,IAAIL,GAAG,CAACI,OAAO,EAAE;UAC/B,IAAIC,KAAK,CAACC,IAAI,KAAK,MAAM,IAAID,KAAK,CAACc,IAAI,EAAE;YACvCQ,WAAW,IAAItB,KAAK,CAACc,IAAI;UAC3B,CAAC,MAAM,IAAId,KAAK,CAACC,IAAI,KAAK,UAAU,IAAID,KAAK,CAACG,IAAI,EAAE;YAClD;YACA,IAAImB,WAAW,EAAE;cACfjB,KAAK,CAACC,IAAI,CAAC;gBAAEV,IAAI,EAAE,WAAW;gBAAEG,OAAO,EAAEuB;cAAY,CAAC,CAAC;cACvDA,WAAW,GAAG,EAAE;YAClB;YACA;YACAjB,KAAK,CAACC,IAAI,CAAC;cACTL,IAAI,EAAE,eAAe;cACrBe,OAAO,EAAEhB,KAAK,CAACE,EAAE,IAAI,QAAQvB,UAAU,CAAC,CAAC,CAAC4C,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;cACxDpB,IAAI,EAAEH,KAAK,CAACG,IAAI;cAChBqB,SAAS,EAAEC,IAAI,CAACC,SAAS,CAAC1B,KAAK,CAACK,KAAK,IAAI,CAAC,CAAC;YAC7C,CAAC,CAAC;UACJ;UACA;QACF;QAEA,IAAIiB,WAAW,EAAE;UACfjB,KAAK,CAACC,IAAI,CAAC;YAAEV,IAAI,EAAE,WAAW;YAAEG,OAAO,EAAEuB;UAAY,CAAC,CAAC;QACzD;MACF;IACF;EACF;EAEA,OAAOjB,KAAK;AACd;;AAEA;AACA;AACA;;AAEA;AACA,SAASsB,uBAAuBA,CAACC,MAAW,EAAO;EACjD,IAAI,CAACA,MAAM,IAAI,OAAOA,MAAM,KAAK,QAAQ,EAAE,OAAOA,MAAM;EACxD,IAAI/B,KAAK,CAACC,OAAO,CAAC8B,MAAM,CAAC,EAAE,OAAOA,MAAM,CAACf,GAAG,CAACc,uBAAuB,CAAC;EAErE,MAAME,MAAW,GAAG,CAAC,CAAC;EACtB,KAAK,MAAM,CAACC,GAAG,EAAEC,KAAK,CAAC,IAAIC,MAAM,CAACC,OAAO,CAACL,MAAM,CAAC,EAAE;IACjD,IAAIE,GAAG,KAAK,YAAY,IAAI,OAAOC,KAAK,KAAK,QAAQ,IAAIA,KAAK,KAAK,IAAI,IAAI,CAAClC,KAAK,CAACC,OAAO,CAACiC,KAAK,CAAC,EAAE;MAChG,MAAMG,KAAU,GAAG,CAAC,CAAC;MACrB,KAAK,MAAM,CAACC,QAAQ,EAAEC,UAAU,CAAC,IAAIJ,MAAM,CAACC,OAAO,CAACF,KAAgC,CAAC,EAAE;QACrFG,KAAK,CAACC,QAAQ,CAAC,GAAGR,uBAAuB,CAACS,UAAU,CAAC;MACvD;MACAP,MAAM,CAACC,GAAG,CAAC,GAAGI,KAAK;IACrB,CAAC,MAAM;MACLL,MAAM,CAACC,GAAG,CAAC,GAAGH,uBAAuB,CAACI,KAAK,CAAC;IAC9C;EACF;;EAEA;EACA,IAAIF,MAAM,CAAC5B,IAAI,KAAK,OAAO,IAAI,CAAC4B,MAAM,CAACQ,KAAK,EAAE;IAC5CR,MAAM,CAACQ,KAAK,GAAG;MAAEpC,IAAI,EAAE;IAAS,CAAC;EACnC;;EAEA;EACA,IAAI4B,MAAM,CAACS,QAAQ,IAAIzC,KAAK,CAACC,OAAO,CAAC+B,MAAM,CAACS,QAAQ,CAAC,IAAIT,MAAM,CAACU,UAAU,EAAE;IAC1E,MAAMC,UAAU,GAAG,IAAI9C,GAAG,CAACsC,MAAM,CAACS,IAAI,CAACZ,MAAM,CAACU,UAAU,CAAC,CAAC;IAC1DV,MAAM,CAACS,QAAQ,GAAGT,MAAM,CAACS,QAAQ,CAAC3B,MAAM,CAAE+B,CAAS,IAAKF,UAAU,CAAC/B,GAAG,CAACiC,CAAC,CAAC,CAAC;IAC1E,IAAIb,MAAM,CAACS,QAAQ,CAACjB,MAAM,KAAK,CAAC,EAAE,OAAOQ,MAAM,CAACS,QAAQ;EAC1D;EAEA,OAAOT,MAAM;AACf;;AAEA;AACA,SAASc,yBAAyBA,CAACC,KAAY,EAAkC;EAC/E,OAAOA,KAAK,CAAC/B,GAAG,CAAEgC,CAAM,KAAM;IAC5B5C,IAAI,EAAE,UAAU;IAChBE,IAAI,EAAE0C,CAAC,CAAC1C,IAAI;IACZ2C,WAAW,EAAE,OAAOD,CAAC,CAACC,WAAW,KAAK,QAAQ,GAAGD,CAAC,CAACC,WAAW,CAACvB,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE;IAClFwB,UAAU,EAAEpB,uBAAuB,CAACkB,CAAC,CAACG,YAAY,IAAI,CAAC,CAAC,CAAC;IACzDC,MAAM,EAAE;EACV,CAAC,CAAC,CAAC;AACL;;AAEA;AACA;AACA;;AAEA,OAAO,MAAMC,aAAa,CAA4B;EACpD/C,IAAI,GAAG,QAAQ;EAEf,MAAMgD,YAAYA,CAChBC,GAAwB,EACxBC,MAA4B,EAC5BC,WAAmC,EACpB;IACf,MAAM;MAAEC,KAAK;MAAE/D,QAAQ;MAAEgE,MAAM;MAAEZ,KAAK;MAAEa,UAAU;MAAEC,WAAW;MAAEC,OAAO;MAAEC;IAAY,CAAC,GAAGP,MAAM;IAEhG,MAAMQ,KAAK,GAAG,MAAMzE,0BAA0B,CAAC,QAAQ,EAAEuE,OAAO,CAAC;IACjE,IAAI,CAACE,KAAK,CAACC,MAAM,EAAE;MACjB7E,YAAY,CAACmE,GAAG,EAAE,GAAG,EAAE;QAAEW,KAAK,EAAE;MAA8E,CAAC,EAAET,WAAW,CAAC;MAC7H;IACF;IAEA,MAAMU,MAAM,GAAG,IAAIpF,MAAM,CAAC;MAAEqF,MAAM,EAAEJ,KAAK,CAACC,MAAM,CAACG;IAAO,CAAC,CAAC;IAC1D,MAAMC,WAAW,GAAGpF,sBAAsB,CAACyE,KAAK,CAAC;;IAEjD;IACA,MAAMY,WAAW,GAAG5E,yBAAyB,CAACC,QAAQ,CAAC;IACvD,MAAM4E,WAAW,GAAGxB,KAAK,EAAEvB,MAAM,GAAGsB,yBAAyB,CAACC,KAAK,CAAC,GAAGyB,SAAS;;IAEhF;IACA,IAAIC,YAAY,GAAG,EAAE;IACrB,IAAI,OAAOd,MAAM,KAAK,QAAQ,EAAE;MAC9Bc,YAAY,GAAGd,MAAM;IACvB,CAAC,MAAM,IAAI3D,KAAK,CAACC,OAAO,CAAC0D,MAAM,CAAC,EAAE;MAChCc,YAAY,GAAGd,MAAM,CAAC3C,GAAG,CAAE0D,CAAM,IAAKA,CAAC,CAACzD,IAAI,IAAI,EAAE,CAAC,CAACC,IAAI,CAAC,IAAI,CAAC;IAChE;;IAEA;IACA,MAAMyD,MAA+B,GAAG;MACtCjB,KAAK;MACLlD,KAAK,EAAE8D,WAAW;MAClBM,MAAM,EAAE,IAAI;MACZC,KAAK,EAAE,KAAK;MACZC,iBAAiB,EAAElB,UAAU;MAC7BmB,mBAAmB,EAAE,IAAI;MACzBC,UAAU,EAAE;IACd,CAAC;IAED,IAAIP,YAAY,EAAEE,MAAM,CAACF,YAAY,GAAGA,YAAY;IACpD,IAAIF,WAAW,EAAE/C,MAAM,EAAEmD,MAAM,CAAC5B,KAAK,GAAGwB,WAAW;IAEnD,IAAIF,WAAW,EAAE;MACfM,MAAM,CAACM,SAAS,GAAG;QAAEC,MAAM,EAAE,MAAM;QAAEC,OAAO,EAAE;MAAW,CAAC;IAC5D,CAAC,MAAM;MACL,IAAItB,WAAW,KAAKW,SAAS,EAAEG,MAAM,CAACd,WAAW,GAAGA,WAAW;IACjE;;IAEA;IACA,IAAIE,WAAW,EAAE;MACf,IAAIA,WAAW,KAAK,MAAM,EAAE;QAC1B;MAAA,CACD,MAAM,IAAIA,WAAW,KAAK,KAAK,EAAE;QAChCY,MAAM,CAACZ,WAAW,GAAG,UAAU;MACjC,CAAC,MAAM,IAAIA,WAAW,KAAK,MAAM,EAAE;QACjCY,MAAM,CAACZ,WAAW,GAAG,MAAM;QAC3B,OAAOY,MAAM,CAAC5B,KAAK;MACrB,CAAC,MAAM,IAAI,OAAOgB,WAAW,KAAK,QAAQ,IAAIA,WAAW,CAAC3D,IAAI,KAAK,MAAM,EAAE;QACzEuE,MAAM,CAACZ,WAAW,GAAG;UAAE3D,IAAI,EAAE,UAAU;UAAEgF,QAAQ,EAAE;YAAE9E,IAAI,EAAEyD,WAAW,CAACzD;UAAK;QAAE,CAAC;MACjF;IACF;;IAEA;IACA;IACA,IAAI+E,gBAAgB,GAAG,CAAC;IACxB,IAAIC,iBAAiB,GAAG,CAAC;IACzB,IAAIC,oBAAoB,GAAG,CAAC;IAC5B,IAAIC,oBAAoB,GAAG,CAAC;IAC5B,IAAIC,SAAqD;IAEzD,IAAI;MACF,MAAMb,MAAM,GAAG,MAAOT,MAAM,CAACuB,SAAS,CAACC,MAAM,CAAChB,MAAa,CAA4C;;MAEvG;MACAtF,eAAe,CAACkE,GAAG,EAAEE,WAAW,CAAC;;MAEjC;MACAgC,SAAS,GAAGG,WAAW,CAAC,MAAM;QAC5B,IAAI,CAACrC,GAAG,CAACsC,aAAa,EAAEtC,GAAG,CAACuC,KAAK,CAAC,WAAW,CAAC;MAChD,CAAC,EAAE,MAAM,CAAC;;MAEV;MACAvC,GAAG,CAACuC,KAAK,CAAC,SAASlE,IAAI,CAACC,SAAS,CAAC;QAChCzB,IAAI,EAAE,eAAe;QACrB2F,OAAO,EAAE;UACP1F,EAAE,EAAE,cAAcvB,UAAU,CAAC,CAAC,CAAC4C,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;UAC5CtB,IAAI,EAAE,SAAS;UACfL,IAAI,EAAE,WAAW;UACjBG,OAAO,EAAE,EAAE;UACXwD,KAAK;UACLsC,WAAW,EAAE,IAAI;UACjBC,KAAK,EAAE;YAAEC,YAAY,EAAE,CAAC;YAAEC,aAAa,EAAE;UAAE;QAC7C;MACF,CAAC,CAAC,MAAM,CAAC;MAET,IAAIC,UAAU,GAAG,CAAC;MAClB,IAAIC,gBAAgB,GAAG,KAAK;MAC5B,IAAIC,oBAAoB,GAAG,KAAK;MAChC,IAAIC,UAAU,GAAG,KAAK;MACtB,IAAIC,iBAAiB,GAAG,KAAK;MAC7B;MACA,MAAMC,oBAAoB,GAAG,IAAIC,GAAG,CAA2C,CAAC;;MAEhF;MACA,MAAMC,eAAe,GAAGA,CAAA,KAAM;QAC5B,IAAIL,oBAAoB,EAAE;UACxB/C,GAAG,CAACuC,KAAK,CAAC,SAASlE,IAAI,CAACC,SAAS,CAAC;YAAEzB,IAAI,EAAE,oBAAoB;YAAEwG,KAAK,EAAER;UAAW,CAAC,CAAC,MAAM,CAAC;UAC3FA,UAAU,EAAE;UACZE,oBAAoB,GAAG,KAAK;QAC9B;QACA,IAAID,gBAAgB,EAAE;UACpB9C,GAAG,CAACuC,KAAK,CAAC,SAASlE,IAAI,CAACC,SAAS,CAAC;YAAEzB,IAAI,EAAE,oBAAoB;YAAEwG,KAAK,EAAER;UAAW,CAAC,CAAC,MAAM,CAAC;UAC3FA,UAAU,EAAE;UACZC,gBAAgB,GAAG,KAAK;QAC1B;MACF,CAAC;MAED,WAAW,MAAMQ,KAAK,IAAIjC,MAAM,EAAwB;QACtD,QAAQiC,KAAK,CAACzG,IAAI;UAChB;UACA,KAAK,uCAAuC;YAAE;cAC5C,MAAMa,IAAI,GAAG4F,KAAK,CAACC,KAAK;cACxB,IAAI,CAAC7F,IAAI,EAAE;cAEX,IAAIoF,gBAAgB,EAAE;gBACpB9C,GAAG,CAACuC,KAAK,CAAC,SAASlE,IAAI,CAACC,SAAS,CAAC;kBAAEzB,IAAI,EAAE,oBAAoB;kBAAEwG,KAAK,EAAER;gBAAW,CAAC,CAAC,MAAM,CAAC;gBAC3FA,UAAU,EAAE;gBACZC,gBAAgB,GAAG,KAAK;cAC1B;cAEA,IAAI,CAACC,oBAAoB,EAAE;gBACzB/C,GAAG,CAACuC,KAAK,CAAC,SAASlE,IAAI,CAACC,SAAS,CAAC;kBAChCzB,IAAI,EAAE,qBAAqB;kBAC3BwG,KAAK,EAAER,UAAU;kBACjBW,aAAa,EAAE;oBAAE3G,IAAI,EAAE,UAAU;oBAAE4G,QAAQ,EAAE;kBAAG;gBAClD,CAAC,CAAC,MAAM,CAAC;gBACTV,oBAAoB,GAAG,IAAI;gBAC3BE,iBAAiB,GAAG,IAAI;cAC1B;cAEAjD,GAAG,CAACuC,KAAK,CAAC,SAASlE,IAAI,CAACC,SAAS,CAAC;gBAChCzB,IAAI,EAAE,qBAAqB;gBAC3BwG,KAAK,EAAER,UAAU;gBACjBU,KAAK,EAAE;kBAAE1G,IAAI,EAAE,gBAAgB;kBAAE4G,QAAQ,EAAE/F;gBAAK;cAClD,CAAC,CAAC,MAAM,CAAC;cACT;YACF;UAEA,KAAK,sCAAsC;YAAE;cAC3C;YACF;;UAEA;UACA,KAAK,4BAA4B;YAAE;cACjC,MAAMA,IAAI,GAAG4F,KAAK,CAACC,KAAK;cACxB,IAAI,CAAC7F,IAAI,EAAE;cAEX,IAAIqF,oBAAoB,EAAE;gBACxB/C,GAAG,CAACuC,KAAK,CAAC,SAASlE,IAAI,CAACC,SAAS,CAAC;kBAAEzB,IAAI,EAAE,oBAAoB;kBAAEwG,KAAK,EAAER;gBAAW,CAAC,CAAC,MAAM,CAAC;gBAC3FA,UAAU,EAAE;gBACZE,oBAAoB,GAAG,KAAK;cAC9B;cAEA,IAAI,CAACD,gBAAgB,EAAE;gBACrB9C,GAAG,CAACuC,KAAK,CAAC,SAASlE,IAAI,CAACC,SAAS,CAAC;kBAChCzB,IAAI,EAAE,qBAAqB;kBAC3BwG,KAAK,EAAER,UAAU;kBACjBW,aAAa,EAAE;oBAAE3G,IAAI,EAAE,MAAM;oBAAEa,IAAI,EAAE;kBAAG;gBAC1C,CAAC,CAAC,MAAM,CAAC;gBACToF,gBAAgB,GAAG,IAAI;gBACvBG,iBAAiB,GAAG,IAAI;cAC1B;cAEAjD,GAAG,CAACuC,KAAK,CAAC,SAASlE,IAAI,CAACC,SAAS,CAAC;gBAChCzB,IAAI,EAAE,qBAAqB;gBAC3BwG,KAAK,EAAER,UAAU;gBACjBU,KAAK,EAAE;kBAAE1G,IAAI,EAAE,YAAY;kBAAEa;gBAAK;cACpC,CAAC,CAAC,MAAM,CAAC;cACT;YACF;UAEA,KAAK,2BAA2B;YAAE;cAChC;YACF;;UAEA;UACA,KAAK,4BAA4B;YAAE;cACjC,MAAMgG,IAAI,GAAGJ,KAAK,CAACI,IAAI;cACvB,IAAIA,IAAI,EAAE7G,IAAI,KAAK,eAAe,IAAI6G,IAAI,CAAC5G,EAAE,IAAI4G,IAAI,CAAC3G,IAAI,EAAE;gBAC1DmG,oBAAoB,CAACS,GAAG,CAACD,IAAI,CAAC5G,EAAE,EAAE;kBAAEC,IAAI,EAAE2G,IAAI,CAAC3G,IAAI;kBAAE6G,MAAM,EAAEF,IAAI,CAAC9F,OAAO,IAAI8F,IAAI,CAAC5G;gBAAG,CAAC,CAAC;cACzF;cACA;YACF;UAEA,KAAK,uCAAuC;YAAE;cAC5CsG,eAAe,CAAC,CAAC;cAEjBJ,UAAU,GAAG,IAAI;cACjBC,iBAAiB,GAAG,IAAI;cAExB,MAAMY,OAAO,GAAGX,oBAAoB,CAACY,GAAG,CAACR,KAAK,CAACS,OAAO,CAAC;cACvD,MAAMhH,IAAI,GAAG8G,OAAO,EAAE9G,IAAI,IAAIuG,KAAK,CAACvG,IAAI,IAAI,cAAc;cAC1D,MAAM6G,MAAM,GAAGC,OAAO,EAAED,MAAM,IAAIN,KAAK,CAAC1F,OAAO,IAAI0F,KAAK,CAACS,OAAO;cAChE,IAAIF,OAAO,EAAEX,oBAAoB,CAACc,MAAM,CAACV,KAAK,CAACS,OAAO,CAAC;cAEvD,MAAME,IAAI,GAAGX,KAAK,CAAClF,SAAS;cAE5B,IAAI8F,WAAW,GAAG,CAAC,CAAC;cACpB,IAAI;gBAAEA,WAAW,GAAG7F,IAAI,CAAC8F,KAAK,CAACF,IAAI,IAAI,IAAI,CAAC;cAAE,CAAC,CAAC,MAAM,CAAE;cAExD,MAAMG,SAAS,GAAGR,MAAM,IAAI,gBAAgBrI,UAAU,CAAC,CAAC,CAAC4C,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;cAEvE6B,GAAG,CAACuC,KAAK,CAAC,SAASlE,IAAI,CAACC,SAAS,CAAC;gBAChCzB,IAAI,EAAE,qBAAqB;gBAC3BwG,KAAK,EAAER,UAAU;gBACjBW,aAAa,EAAE;kBACb3G,IAAI,EAAE,UAAU;kBAChBC,EAAE,EAAEsH,SAAS;kBACbrH,IAAI;kBACJE,KAAK,EAAE,CAAC;gBACV;cACF,CAAC,CAAC,MAAM,CAAC;cAET+C,GAAG,CAACuC,KAAK,CAAC,SAASlE,IAAI,CAACC,SAAS,CAAC;gBAChCzB,IAAI,EAAE,qBAAqB;gBAC3BwG,KAAK,EAAER,UAAU;gBACjBU,KAAK,EAAE;kBACL1G,IAAI,EAAE,kBAAkB;kBACxBwH,YAAY,EAAEhG,IAAI,CAACC,SAAS,CAAC4F,WAAW;gBAC1C;cACF,CAAC,CAAC,MAAM,CAAC;cAETlE,GAAG,CAACuC,KAAK,CAAC,SAASlE,IAAI,CAACC,SAAS,CAAC;gBAAEzB,IAAI,EAAE,oBAAoB;gBAAEwG,KAAK,EAAER;cAAW,CAAC,CAAC,MAAM,CAAC;cAC3FA,UAAU,EAAE;cACZ;YACF;;UAEA;UACA,KAAK,oBAAoB;YAAE;cACzB,MAAMyB,QAAQ,GAAGhB,KAAK,CAACgB,QAAQ;cAC/B,IAAIA,QAAQ,EAAE5B,KAAK,EAAE;gBACnBZ,gBAAgB,GAAGwC,QAAQ,CAAC5B,KAAK,CAACC,YAAY,IAAI,CAAC;gBACnDZ,iBAAiB,GAAGuC,QAAQ,CAAC5B,KAAK,CAACE,aAAa,IAAI,CAAC;gBACrD,IAAI0B,QAAQ,CAAC5B,KAAK,CAAC6B,qBAAqB,EAAEC,gBAAgB,EAAE;kBAC1DxC,oBAAoB,GAAGsC,QAAQ,CAAC5B,KAAK,CAAC6B,qBAAqB,CAACC,gBAAgB;gBAC9E;gBACA,IAAIF,QAAQ,CAAC5B,KAAK,CAAC+B,oBAAoB,EAAEC,aAAa,EAAE;kBACtDzC,oBAAoB,GAAGqC,QAAQ,CAAC5B,KAAK,CAAC+B,oBAAoB,CAACC,aAAa;gBAC1E;cACF;cACA;YACF;;UAEA;UACA,KAAK,iBAAiB;YAAE;cACtB,MAAM/D,KAAK,GAAG2C,KAAK,CAACgB,QAAQ,EAAE3D,KAAK;cACnC,MAAMgE,MAAM,GAAGhE,KAAK,EAAE6B,OAAO,IAAI,sBAAsB;cACvDoC,OAAO,CAACjE,KAAK,CAAC,iCAAiC,EAAEgE,MAAM,CAAC;cACxDvB,eAAe,CAAC,CAAC;cACjB,IAAI,CAACH,iBAAiB,EAAE;gBACtBjD,GAAG,CAACuC,KAAK,CAAC,SAASlE,IAAI,CAACC,SAAS,CAAC;kBAChCzB,IAAI,EAAE,qBAAqB;kBAC3BwG,KAAK,EAAER,UAAU;kBACjBW,aAAa,EAAE;oBAAE3G,IAAI,EAAE,MAAM;oBAAEa,IAAI,EAAE;kBAAG;gBAC1C,CAAC,CAAC,MAAM,CAAC;gBACTsC,GAAG,CAACuC,KAAK,CAAC,SAASlE,IAAI,CAACC,SAAS,CAAC;kBAChCzB,IAAI,EAAE,qBAAqB;kBAC3BwG,KAAK,EAAER,UAAU;kBACjBU,KAAK,EAAE;oBAAE1G,IAAI,EAAE,YAAY;oBAAEa,IAAI,EAAE,kBAAkBiH,MAAM;kBAAI;gBACjE,CAAC,CAAC,MAAM,CAAC;gBACT3E,GAAG,CAACuC,KAAK,CAAC,SAASlE,IAAI,CAACC,SAAS,CAAC;kBAAEzB,IAAI,EAAE,oBAAoB;kBAAEwG,KAAK,EAAER;gBAAW,CAAC,CAAC,MAAM,CAAC;gBAC3FI,iBAAiB,GAAG,IAAI;cAC1B;cACA;YACF;UAEA,KAAK,qBAAqB;YAAE;cAC1B2B,OAAO,CAACC,IAAI,CAAC,qCAAqC,EAAEvB,KAAK,CAACgB,QAAQ,EAAEQ,kBAAkB,CAAC;cACvF;YACF;UAEA;YACE;QACJ;MACF;;MAEA;MACA1B,eAAe,CAAC,CAAC;;MAEjB;MACA,IAAI,CAACH,iBAAiB,EAAE;QACtBjD,GAAG,CAACuC,KAAK,CAAC,SAASlE,IAAI,CAACC,SAAS,CAAC;UAChCzB,IAAI,EAAE,qBAAqB;UAC3BwG,KAAK,EAAE,CAAC;UACRG,aAAa,EAAE;YAAE3G,IAAI,EAAE,MAAM;YAAEa,IAAI,EAAE;UAAG;QAC1C,CAAC,CAAC,MAAM,CAAC;QACTsC,GAAG,CAACuC,KAAK,CAAC,SAASlE,IAAI,CAACC,SAAS,CAAC;UAChCzB,IAAI,EAAE,qBAAqB;UAC3BwG,KAAK,EAAE,CAAC;UACRE,KAAK,EAAE;YAAE1G,IAAI,EAAE,YAAY;YAAEa,IAAI,EAAE;UAAyD;QAC9F,CAAC,CAAC,MAAM,CAAC;QACTsC,GAAG,CAACuC,KAAK,CAAC,SAASlE,IAAI,CAACC,SAAS,CAAC;UAAEzB,IAAI,EAAE,oBAAoB;UAAEwG,KAAK,EAAE;QAAE,CAAC,CAAC,MAAM,CAAC;MACpF;;MAEA;MACA,MAAM0B,UAAU,GAAG/B,UAAU,GAAG,UAAU,GAAG,UAAU;;MAEvD;MACAhD,GAAG,CAACuC,KAAK,CAAC,SAASlE,IAAI,CAACC,SAAS,CAAC;QAChCzB,IAAI,EAAE,eAAe;QACrB0G,KAAK,EAAE;UAAEd,WAAW,EAAEsC,UAAU;UAAEC,aAAa,EAAE;QAAK,CAAC;QACvDtC,KAAK,EAAE;UACLC,YAAY,EAAEb,gBAAgB;UAC9Bc,aAAa,EAAEb,iBAAiB;UAChC,IAAIC,oBAAoB,GAAG,CAAC,GAAG;YAAEiD,eAAe,EAAEjD;UAAqB,CAAC,GAAG,CAAC,CAAC,CAAC;UAC9E,IAAIC,oBAAoB,GAAG,CAAC,GAAG;YAAEiD,uBAAuB,EAAEjD;UAAqB,CAAC,GAAG,CAAC,CAAC;QACvF;MACF,CAAC,CAAC,MAAM,CAAC;MAETjC,GAAG,CAACuC,KAAK,CAAC,SAASlE,IAAI,CAACC,SAAS,CAAC;QAAEzB,IAAI,EAAE;MAAe,CAAC,CAAC,MAAM,CAAC;MAClEmD,GAAG,CAACuC,KAAK,CAAC,kBAAkB,CAAC;IAC/B,CAAC,CAAC,OAAO4C,GAAQ,EAAE;MACjBpJ,SAAS,CAACiE,GAAG,EAAEmF,GAAG,EAAEjF,WAAW,EAAEzE,aAAa,EAAE;QAC9C2J,QAAQ,EAAE,QAAQ;QAClBC,WAAW,EAAEvD,gBAAgB;QAC7BwD,YAAY,EAAEvD,iBAAiB;QAC/BwD,cAAc,EAAEvD,oBAAoB;QACpCwD,eAAe,EAAEvD;MACnB,CAAC,CAAC;IACJ,CAAC,SAAS;MACR,IAAIC,SAAS,EAAEuD,aAAa,CAACvD,SAAS,CAAC;IACzC;IACAlC,GAAG,CAAC0F,GAAG,CAAC,CAAC;EACX;;EAEA;;EAEAC,iBAAiBA,CAACxF,KAAa,EAAEyF,OAAgB,EAAwB;IACvE,IAAI,CAACA,OAAO,EAAE;MACZ,OAAO;QAAEnC,QAAQ,EAAE;UAAE5G,IAAI,EAAE;QAAW,CAAC;QAAEgJ,IAAI,EAAE;MAAG,CAAC;IACrD;IACA;IACA,MAAM/E,WAAW,GAAG,MAAM,CAACgF,IAAI,CAAC3F,KAAK,CAAC;IACtC,OAAO;MAAEsD,QAAQ,EAAE;QAAE5G,IAAI,EAAEiE,WAAW,GAAG,SAAS,GAAG;MAAW,CAAC;MAAE+E,IAAI,EAAE;IAAG,CAAC;EAC/E;EAEAE,kBAAkBA,CAAC5F,KAAa,EAAE6F,QAAiB,EAAU;IAC3D,MAAMC,QAAQ,GAAG/J,uBAAuB,CAACiE,KAAK,CAAC,IAAIlE,qBAAqB;IACxE,IAAI+J,QAAQ,EAAE,OAAOE,IAAI,CAACC,GAAG,CAACH,QAAQ,EAAEC,QAAQ,CAAC;IACjD,OAAOC,IAAI,CAACC,GAAG,CAAClK,qBAAqB,EAAEgK,QAAQ,CAAC;EAClD;EAEAG,oBAAoBA,CAACC,MAAc,EAA2B;IAC5D;IACA,OAAO;MAAEC,KAAK,EAAE,EAAE;MAAErG,MAAM,EAAE;QAAEsG,KAAK,EAAE;MAAG;IAAE,CAAC;EAC7C;EAEAC,mBAAmBA,CAACH,MAAc,EAAoB;IACpD,OAAO;MAAEI,aAAa,EAAE,OAAO;MAAEC,WAAW,EAAE,SAAS;MAAEC,QAAQ,EAAE;IAAM,CAAC;EAC5E;EAEAhL,eAAeA,CAAA,EAAyB;IACtC,OAAOA,eAAe,CAAC,QAAQ,CAAC;EAClC;AACF;;AAEA;AACAC,gBAAgB,CAAC,QAAQ,EAAE,IAAIkE,aAAa,CAAC,CAAC,CAAC","ignoreList":[]}
@@ -5,18 +5,22 @@
5
5
  * Adapters self-register on import. External code calls getProviderAdapter()
6
6
  * instead of maintaining its own switch/if-else chains.
7
7
  */
8
+
8
9
  import { getProvider } from "../../shared/constants.js";
9
10
  // ============================================================================
10
11
  // REGISTRY
11
12
  // ============================================================================
13
+
12
14
  const providers = new Map();
15
+
13
16
  /**
14
17
  * Register a provider adapter. Called by each adapter module on import.
15
18
  * Overwrites if a provider with the same name is already registered.
16
19
  */
17
20
  export function registerProvider(name, adapter) {
18
- providers.set(name, adapter);
21
+ providers.set(name, adapter);
19
22
  }
23
+
20
24
  /**
21
25
  * Get the adapter for a provider name or model ID.
22
26
  *
@@ -28,31 +32,32 @@ export function registerProvider(name, adapter) {
28
32
  * Throws if no adapters are registered at all (indicates missing initialization).
29
33
  */
30
34
  export function getProviderAdapter(modelOrProvider) {
31
- // Direct provider name match
32
- const direct = providers.get(modelOrProvider);
33
- if (direct)
34
- return direct;
35
- // Resolve model ID → provider name
36
- const providerName = getProvider(modelOrProvider);
37
- const resolved = providers.get(providerName);
38
- if (resolved)
39
- return resolved;
40
- // Fallback to anthropic
41
- const fallback = providers.get("anthropic");
42
- if (fallback)
43
- return fallback;
44
- throw new Error(`No provider adapter registered for "${modelOrProvider}" (resolved: "${providerName}"). ` +
45
- `Registered providers: [${Array.from(providers.keys()).join(", ")}]`);
35
+ // Direct provider name match
36
+ const direct = providers.get(modelOrProvider);
37
+ if (direct) return direct;
38
+
39
+ // Resolve model ID → provider name
40
+ const providerName = getProvider(modelOrProvider);
41
+ const resolved = providers.get(providerName);
42
+ if (resolved) return resolved;
43
+
44
+ // Fallback to anthropic
45
+ const fallback = providers.get("anthropic");
46
+ if (fallback) return fallback;
47
+ throw new Error(`No provider adapter registered for "${modelOrProvider}" (resolved: "${providerName}"). ` + `Registered providers: [${Array.from(providers.keys()).join(", ")}]`);
46
48
  }
49
+
47
50
  /**
48
51
  * Check if a provider is registered.
49
52
  */
50
53
  export function hasProvider(name) {
51
- return providers.has(name);
54
+ return providers.has(name);
52
55
  }
56
+
53
57
  /**
54
58
  * Get all registered provider names.
55
59
  */
56
60
  export function getRegisteredProviders() {
57
- return Array.from(providers.keys());
61
+ return Array.from(providers.keys());
58
62
  }
63
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","names":["getProvider","providers","Map","registerProvider","name","adapter","set","getProviderAdapter","modelOrProvider","direct","get","providerName","resolved","fallback","Error","Array","from","keys","join","hasProvider","has","getRegisteredProviders"],"sources":["../../../src/server/providers/registry.ts"],"sourcesContent":["/**\n * Provider Adapter Registry — central lookup for provider adapters.\n *\n * Phase 7.1: Replaces ad-hoc provider switching with a single registry.\n * Adapters self-register on import. External code calls getProviderAdapter()\n * instead of maintaining its own switch/if-else chains.\n */\n\nimport { getProvider } from \"../../shared/constants.js\";\nimport type { ProviderAdapter } from \"./types.js\";\n\n// ============================================================================\n// REGISTRY\n// ============================================================================\n\nconst providers = new Map<string, ProviderAdapter>();\n\n/**\n * Register a provider adapter. Called by each adapter module on import.\n * Overwrites if a provider with the same name is already registered.\n */\nexport function registerProvider(name: string, adapter: ProviderAdapter): void {\n providers.set(name, adapter);\n}\n\n/**\n * Get the adapter for a provider name or model ID.\n *\n * Accepts either:\n * - A provider name directly (\"anthropic\", \"gemini\", \"openai\", \"bedrock\")\n * - A full model ID (uses getProvider() to resolve the provider name)\n *\n * Falls back to \"anthropic\" if no adapter is found for the resolved provider.\n * Throws if no adapters are registered at all (indicates missing initialization).\n */\nexport function getProviderAdapter(modelOrProvider: string): ProviderAdapter {\n // Direct provider name match\n const direct = providers.get(modelOrProvider);\n if (direct) return direct;\n\n // Resolve model ID → provider name\n const providerName = getProvider(modelOrProvider);\n const resolved = providers.get(providerName);\n if (resolved) return resolved;\n\n // Fallback to anthropic\n const fallback = providers.get(\"anthropic\");\n if (fallback) return fallback;\n\n throw new Error(\n `No provider adapter registered for \"${modelOrProvider}\" (resolved: \"${providerName}\"). ` +\n `Registered providers: [${Array.from(providers.keys()).join(\", \")}]`\n );\n}\n\n/**\n * Check if a provider is registered.\n */\nexport function hasProvider(name: string): boolean {\n return providers.has(name);\n}\n\n/**\n * Get all registered provider names.\n */\nexport function getRegisteredProviders(): string[] {\n return Array.from(providers.keys());\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,WAAW,QAAQ,2BAA2B;AAGvD;AACA;AACA;;AAEA,MAAMC,SAAS,GAAG,IAAIC,GAAG,CAA0B,CAAC;;AAEpD;AACA;AACA;AACA;AACA,OAAO,SAASC,gBAAgBA,CAACC,IAAY,EAAEC,OAAwB,EAAQ;EAC7EJ,SAAS,CAACK,GAAG,CAACF,IAAI,EAAEC,OAAO,CAAC;AAC9B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASE,kBAAkBA,CAACC,eAAuB,EAAmB;EAC3E;EACA,MAAMC,MAAM,GAAGR,SAAS,CAACS,GAAG,CAACF,eAAe,CAAC;EAC7C,IAAIC,MAAM,EAAE,OAAOA,MAAM;;EAEzB;EACA,MAAME,YAAY,GAAGX,WAAW,CAACQ,eAAe,CAAC;EACjD,MAAMI,QAAQ,GAAGX,SAAS,CAACS,GAAG,CAACC,YAAY,CAAC;EAC5C,IAAIC,QAAQ,EAAE,OAAOA,QAAQ;;EAE7B;EACA,MAAMC,QAAQ,GAAGZ,SAAS,CAACS,GAAG,CAAC,WAAW,CAAC;EAC3C,IAAIG,QAAQ,EAAE,OAAOA,QAAQ;EAE7B,MAAM,IAAIC,KAAK,CACb,uCAAuCN,eAAe,iBAAiBG,YAAY,MAAM,GACzF,0BAA0BI,KAAK,CAACC,IAAI,CAACf,SAAS,CAACgB,IAAI,CAAC,CAAC,CAAC,CAACC,IAAI,CAAC,IAAI,CAAC,GACnE,CAAC;AACH;;AAEA;AACA;AACA;AACA,OAAO,SAASC,WAAWA,CAACf,IAAY,EAAW;EACjD,OAAOH,SAAS,CAACmB,GAAG,CAAChB,IAAI,CAAC;AAC5B;;AAEA;AACA;AACA;AACA,OAAO,SAASiB,sBAAsBA,CAAA,EAAa;EACjD,OAAON,KAAK,CAACC,IAAI,CAACf,SAAS,CAACgB,IAAI,CAAC,CAAC,CAAC;AACrC","ignoreList":[]}
@@ -3,122 +3,150 @@
3
3
  *
4
4
  * Extracted from proxy-handlers.ts. Used by all provider adapters.
5
5
  */
6
+
6
7
  import { createClient } from "@supabase/supabase-js";
8
+
7
9
  // ============================================================================
8
10
  // JSON + SSE HELPERS
9
11
  // ============================================================================
12
+
10
13
  export function jsonResponse(res, status, data, corsHeaders) {
11
- res.writeHead(status, { "Content-Type": "application/json", ...corsHeaders });
12
- res.end(JSON.stringify(data));
14
+ res.writeHead(status, {
15
+ "Content-Type": "application/json",
16
+ ...corsHeaders
17
+ });
18
+ res.end(JSON.stringify(data));
13
19
  }
14
20
  export function writeSSEHeaders(res, corsHeaders) {
15
- res.writeHead(200, {
16
- "Content-Type": "text/event-stream",
17
- "Cache-Control": "no-cache",
18
- Connection: "keep-alive",
19
- "X-Accel-Buffering": "no",
20
- ...corsHeaders,
21
- });
22
- res.flushHeaders();
21
+ res.writeHead(200, {
22
+ "Content-Type": "text/event-stream",
23
+ "Cache-Control": "no-cache",
24
+ Connection: "keep-alive",
25
+ "X-Accel-Buffering": "no",
26
+ ...corsHeaders
27
+ });
28
+ res.flushHeaders();
23
29
  }
30
+
24
31
  /**
25
32
  * Emit an error — as SSE if headers already sent, otherwise as JSON response.
26
33
  * Always emits message_delta + message_stop so clients don't hang.
27
34
  */
28
35
  export function emitError(res, err, corsHeaders, sanitize, opts) {
29
- const errMsg = err?.message || String(err);
30
- const provider = opts?.provider || "proxy";
31
- console.error(`[${provider}-proxy] Error:`, errMsg);
32
- if (res.headersSent) {
33
- res.write(`data: ${JSON.stringify({ type: "error", error: sanitize(err) })}\n\n`);
34
- const usage = {
35
- input_tokens: opts?.inputTokens || 0,
36
- output_tokens: opts?.outputTokens || 0,
37
- };
38
- if (opts?.thinkingTokens && opts.thinkingTokens > 0)
39
- usage.thinking_tokens = opts.thinkingTokens;
40
- if (opts?.cacheReadTokens && opts.cacheReadTokens > 0)
41
- usage.cache_read_input_tokens = opts.cacheReadTokens;
42
- res.write(`data: ${JSON.stringify({
43
- type: "message_delta",
44
- delta: { stop_reason: "error", stop_sequence: null },
45
- usage,
46
- })}\n\n`);
47
- res.write(`data: ${JSON.stringify({ type: "message_stop" })}\n\n`);
48
- res.write("data: [DONE]\n\n");
49
- }
50
- else {
51
- jsonResponse(res, 502, { error: `${provider} error: ${sanitize(err)}` }, corsHeaders);
52
- }
36
+ const errMsg = err?.message || String(err);
37
+ const provider = opts?.provider || "proxy";
38
+ console.error(`[${provider}-proxy] Error:`, errMsg);
39
+ if (res.headersSent) {
40
+ res.write(`data: ${JSON.stringify({
41
+ type: "error",
42
+ error: sanitize(err)
43
+ })}\n\n`);
44
+ const usage = {
45
+ input_tokens: opts?.inputTokens || 0,
46
+ output_tokens: opts?.outputTokens || 0
47
+ };
48
+ if (opts?.thinkingTokens && opts.thinkingTokens > 0) usage.thinking_tokens = opts.thinkingTokens;
49
+ if (opts?.cacheReadTokens && opts.cacheReadTokens > 0) usage.cache_read_input_tokens = opts.cacheReadTokens;
50
+ res.write(`data: ${JSON.stringify({
51
+ type: "message_delta",
52
+ delta: {
53
+ stop_reason: "error",
54
+ stop_sequence: null
55
+ },
56
+ usage
57
+ })}\n\n`);
58
+ res.write(`data: ${JSON.stringify({
59
+ type: "message_stop"
60
+ })}\n\n`);
61
+ res.write("data: [DONE]\n\n");
62
+ } else {
63
+ jsonResponse(res, 502, {
64
+ error: `${provider} error: ${sanitize(err)}`
65
+ }, corsHeaders);
66
+ }
53
67
  }
68
+
54
69
  // ============================================================================
55
70
  // CREDENTIAL RESOLUTION
56
71
  // ============================================================================
72
+
57
73
  /** Credential cache — keyed by provider+store_id, 5-minute TTL, LRU capped at 50 */
58
74
  const providerCredCacheMap = new Map();
59
75
  export async function resolveProviderCredentials(provider, storeId) {
60
- const cacheKey = `${provider}:${storeId || "__default__"}`;
61
- const cached = providerCredCacheMap.get(cacheKey);
62
- if (cached && Date.now() - cached.fetchedAt < 300_000) {
63
- return cached;
76
+ const cacheKey = `${provider}:${storeId || "__default__"}`;
77
+ const cached = providerCredCacheMap.get(cacheKey);
78
+ if (cached && Date.now() - cached.fetchedAt < 300_000) {
79
+ return cached;
80
+ }
81
+ const SUPABASE_URL = process.env.SUPABASE_URL;
82
+ const SUPABASE_SERVICE_ROLE_KEY = process.env.SUPABASE_SERVICE_ROLE_KEY;
83
+ const sb = createClient(SUPABASE_URL, SUPABASE_SERVICE_ROLE_KEY);
84
+ const result = {
85
+ fetchedAt: Date.now()
86
+ };
87
+ if (provider === "google") {
88
+ try {
89
+ const {
90
+ data,
91
+ error
92
+ } = await sb.rpc("decrypt_secret", {
93
+ p_name: "GOOGLE_AI_API_KEY",
94
+ p_store_id: storeId || null
95
+ });
96
+ if (error) console.error(`[cred-resolve] Google key lookup failed for store=${storeId}:`, error.message);
97
+ if (data) result.google = {
98
+ apiKey: data
99
+ };else console.error(`[cred-resolve] No Google key found for store=${storeId}`);
100
+ } catch (err) {
101
+ console.error(`[cred-resolve] Google key RPC error for store=${storeId}:`, err?.message);
64
102
  }
65
- const SUPABASE_URL = process.env.SUPABASE_URL;
66
- const SUPABASE_SERVICE_ROLE_KEY = process.env.SUPABASE_SERVICE_ROLE_KEY;
67
- const sb = createClient(SUPABASE_URL, SUPABASE_SERVICE_ROLE_KEY);
68
- const result = { fetchedAt: Date.now() };
69
- if (provider === "google") {
70
- try {
71
- const { data, error } = await sb.rpc("decrypt_secret", { p_name: "GOOGLE_AI_API_KEY", p_store_id: storeId || null });
72
- if (error)
73
- console.error(`[cred-resolve] Google key lookup failed for store=${storeId}:`, error.message);
74
- if (data)
75
- result.google = { apiKey: data };
76
- else
77
- console.error(`[cred-resolve] No Google key found for store=${storeId}`);
78
- }
79
- catch (err) {
80
- console.error(`[cred-resolve] Google key RPC error for store=${storeId}:`, err?.message);
81
- }
82
- }
83
- if (provider === "bedrock") {
84
- try {
85
- const [akRes, skRes, rgRes] = await Promise.all([
86
- sb.rpc("decrypt_secret", { p_name: "AWS_ACCESS_KEY_ID", p_store_id: storeId || null }),
87
- sb.rpc("decrypt_secret", { p_name: "AWS_SECRET_ACCESS_KEY", p_store_id: storeId || null }),
88
- sb.rpc("decrypt_secret", { p_name: "AWS_REGION", p_store_id: storeId || null }),
89
- ]);
90
- if (akRes.data && skRes.data) {
91
- result.bedrock = {
92
- accessKeyId: akRes.data,
93
- secretAccessKey: skRes.data,
94
- region: rgRes.data || "us-east-1",
95
- };
96
- }
97
- }
98
- catch (err) {
99
- console.error(`[cred-resolve] Bedrock key RPC error for store=${storeId}:`, err?.message);
100
- }
101
- }
102
- if (provider === "openai") {
103
- try {
104
- const { data, error } = await sb.rpc("decrypt_secret", { p_name: "OPENAI_API_KEY", p_store_id: storeId || null });
105
- if (error)
106
- console.error(`[cred-resolve] OpenAI key lookup failed for store=${storeId}:`, error.message);
107
- if (data)
108
- result.openai = { apiKey: data };
109
- else
110
- console.error(`[cred-resolve] No OpenAI key found for store=${storeId}`);
111
- }
112
- catch (err) {
113
- console.error(`[cred-resolve] OpenAI key RPC error for store=${storeId}:`, err?.message);
114
- }
103
+ }
104
+ if (provider === "bedrock") {
105
+ try {
106
+ const [akRes, skRes, rgRes] = await Promise.all([sb.rpc("decrypt_secret", {
107
+ p_name: "AWS_ACCESS_KEY_ID",
108
+ p_store_id: storeId || null
109
+ }), sb.rpc("decrypt_secret", {
110
+ p_name: "AWS_SECRET_ACCESS_KEY",
111
+ p_store_id: storeId || null
112
+ }), sb.rpc("decrypt_secret", {
113
+ p_name: "AWS_REGION",
114
+ p_store_id: storeId || null
115
+ })]);
116
+ if (akRes.data && skRes.data) {
117
+ result.bedrock = {
118
+ accessKeyId: akRes.data,
119
+ secretAccessKey: skRes.data,
120
+ region: rgRes.data || "us-east-1"
121
+ };
122
+ }
123
+ } catch (err) {
124
+ console.error(`[cred-resolve] Bedrock key RPC error for store=${storeId}:`, err?.message);
115
125
  }
116
- providerCredCacheMap.set(cacheKey, result);
117
- // LRU: cap cache at 50 stores
118
- if (providerCredCacheMap.size > 50) {
119
- const firstKey = providerCredCacheMap.keys().next().value;
120
- if (firstKey)
121
- providerCredCacheMap.delete(firstKey);
126
+ }
127
+ if (provider === "openai") {
128
+ try {
129
+ const {
130
+ data,
131
+ error
132
+ } = await sb.rpc("decrypt_secret", {
133
+ p_name: "OPENAI_API_KEY",
134
+ p_store_id: storeId || null
135
+ });
136
+ if (error) console.error(`[cred-resolve] OpenAI key lookup failed for store=${storeId}:`, error.message);
137
+ if (data) result.openai = {
138
+ apiKey: data
139
+ };else console.error(`[cred-resolve] No OpenAI key found for store=${storeId}`);
140
+ } catch (err) {
141
+ console.error(`[cred-resolve] OpenAI key RPC error for store=${storeId}:`, err?.message);
122
142
  }
123
- return result;
143
+ }
144
+ providerCredCacheMap.set(cacheKey, result);
145
+ // LRU: cap cache at 50 stores
146
+ if (providerCredCacheMap.size > 50) {
147
+ const firstKey = providerCredCacheMap.keys().next().value;
148
+ if (firstKey) providerCredCacheMap.delete(firstKey);
149
+ }
150
+ return result;
124
151
  }
152
+ //# sourceMappingURL=shared.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.js","names":["createClient","jsonResponse","res","status","data","corsHeaders","writeHead","end","JSON","stringify","writeSSEHeaders","Connection","flushHeaders","emitError","err","sanitize","opts","errMsg","message","String","provider","console","error","headersSent","write","type","usage","input_tokens","inputTokens","output_tokens","outputTokens","thinkingTokens","thinking_tokens","cacheReadTokens","cache_read_input_tokens","delta","stop_reason","stop_sequence","providerCredCacheMap","Map","resolveProviderCredentials","storeId","cacheKey","cached","get","Date","now","fetchedAt","SUPABASE_URL","process","env","SUPABASE_SERVICE_ROLE_KEY","sb","result","rpc","p_name","p_store_id","google","apiKey","akRes","skRes","rgRes","Promise","all","bedrock","accessKeyId","secretAccessKey","region","openai","set","size","firstKey","keys","next","value","delete"],"sources":["../../../src/server/providers/shared.ts"],"sourcesContent":["/**\n * Provider Shared Utilities — credential resolution, SSE helpers, error emission.\n *\n * Extracted from proxy-handlers.ts. Used by all provider adapters.\n */\n\nimport http from \"node:http\";\nimport { createClient } from \"@supabase/supabase-js\";\n\n// ============================================================================\n// JSON + SSE HELPERS\n// ============================================================================\n\nexport function jsonResponse(\n res: http.ServerResponse,\n status: number,\n data: unknown,\n corsHeaders: Record<string, string>,\n): void {\n res.writeHead(status, { \"Content-Type\": \"application/json\", ...corsHeaders });\n res.end(JSON.stringify(data));\n}\n\nexport function writeSSEHeaders(\n res: http.ServerResponse,\n corsHeaders: Record<string, string>,\n): void {\n res.writeHead(200, {\n \"Content-Type\": \"text/event-stream\",\n \"Cache-Control\": \"no-cache\",\n Connection: \"keep-alive\",\n \"X-Accel-Buffering\": \"no\",\n ...corsHeaders,\n });\n res.flushHeaders();\n}\n\n/**\n * Emit an error — as SSE if headers already sent, otherwise as JSON response.\n * Always emits message_delta + message_stop so clients don't hang.\n */\nexport function emitError(\n res: http.ServerResponse,\n err: unknown,\n corsHeaders: Record<string, string>,\n sanitize: (e: unknown) => string,\n opts?: {\n provider?: string;\n inputTokens?: number;\n outputTokens?: number;\n thinkingTokens?: number;\n cacheReadTokens?: number;\n },\n): void {\n const errMsg = (err as any)?.message || String(err);\n const provider = opts?.provider || \"proxy\";\n console.error(`[${provider}-proxy] Error:`, errMsg);\n\n if (res.headersSent) {\n res.write(`data: ${JSON.stringify({ type: \"error\", error: sanitize(err) })}\\n\\n`);\n const usage: Record<string, number> = {\n input_tokens: opts?.inputTokens || 0,\n output_tokens: opts?.outputTokens || 0,\n };\n if (opts?.thinkingTokens && opts.thinkingTokens > 0) usage.thinking_tokens = opts.thinkingTokens;\n if (opts?.cacheReadTokens && opts.cacheReadTokens > 0) usage.cache_read_input_tokens = opts.cacheReadTokens;\n\n res.write(`data: ${JSON.stringify({\n type: \"message_delta\",\n delta: { stop_reason: \"error\", stop_sequence: null },\n usage,\n })}\\n\\n`);\n res.write(`data: ${JSON.stringify({ type: \"message_stop\" })}\\n\\n`);\n res.write(\"data: [DONE]\\n\\n\");\n } else {\n jsonResponse(res, 502, { error: `${provider} error: ${sanitize(err)}` }, corsHeaders);\n }\n}\n\n// ============================================================================\n// CREDENTIAL RESOLUTION\n// ============================================================================\n\n/** Credential cache — keyed by provider+store_id, 5-minute TTL, LRU capped at 50 */\nconst providerCredCacheMap = new Map<string, {\n google?: { apiKey: string };\n bedrock?: { accessKeyId: string; secretAccessKey: string; region: string };\n openai?: { apiKey: string };\n fetchedAt: number;\n}>();\n\nexport async function resolveProviderCredentials(\n provider: \"google\" | \"bedrock\" | \"openai\",\n storeId: string | undefined,\n): Promise<{\n google?: { apiKey: string };\n bedrock?: { accessKeyId: string; secretAccessKey: string; region: string };\n openai?: { apiKey: string };\n}> {\n const cacheKey = `${provider}:${storeId || \"__default__\"}`;\n const cached = providerCredCacheMap.get(cacheKey);\n if (cached && Date.now() - cached.fetchedAt < 300_000) {\n return cached;\n }\n\n const SUPABASE_URL = process.env.SUPABASE_URL!;\n const SUPABASE_SERVICE_ROLE_KEY = process.env.SUPABASE_SERVICE_ROLE_KEY!;\n const sb = createClient(SUPABASE_URL, SUPABASE_SERVICE_ROLE_KEY);\n const result: typeof cached = { fetchedAt: Date.now() };\n\n if (provider === \"google\") {\n try {\n const { data, error } = await sb.rpc(\"decrypt_secret\", { p_name: \"GOOGLE_AI_API_KEY\", p_store_id: storeId || null });\n if (error) console.error(`[cred-resolve] Google key lookup failed for store=${storeId}:`, error.message);\n if (data) result.google = { apiKey: data as string };\n else console.error(`[cred-resolve] No Google key found for store=${storeId}`);\n } catch (err: any) {\n console.error(`[cred-resolve] Google key RPC error for store=${storeId}:`, err?.message);\n }\n }\n\n if (provider === \"bedrock\") {\n try {\n const [akRes, skRes, rgRes] = await Promise.all([\n sb.rpc(\"decrypt_secret\", { p_name: \"AWS_ACCESS_KEY_ID\", p_store_id: storeId || null }),\n sb.rpc(\"decrypt_secret\", { p_name: \"AWS_SECRET_ACCESS_KEY\", p_store_id: storeId || null }),\n sb.rpc(\"decrypt_secret\", { p_name: \"AWS_REGION\", p_store_id: storeId || null }),\n ]);\n if (akRes.data && skRes.data) {\n result.bedrock = {\n accessKeyId: akRes.data as string,\n secretAccessKey: skRes.data as string,\n region: (rgRes.data as string) || \"us-east-1\",\n };\n }\n } catch (err: any) {\n console.error(`[cred-resolve] Bedrock key RPC error for store=${storeId}:`, err?.message);\n }\n }\n\n if (provider === \"openai\") {\n try {\n const { data, error } = await sb.rpc(\"decrypt_secret\", { p_name: \"OPENAI_API_KEY\", p_store_id: storeId || null });\n if (error) console.error(`[cred-resolve] OpenAI key lookup failed for store=${storeId}:`, error.message);\n if (data) result.openai = { apiKey: data as string };\n else console.error(`[cred-resolve] No OpenAI key found for store=${storeId}`);\n } catch (err: any) {\n console.error(`[cred-resolve] OpenAI key RPC error for store=${storeId}:`, err?.message);\n }\n }\n\n providerCredCacheMap.set(cacheKey, result);\n // LRU: cap cache at 50 stores\n if (providerCredCacheMap.size > 50) {\n const firstKey = providerCredCacheMap.keys().next().value;\n if (firstKey) providerCredCacheMap.delete(firstKey);\n }\n return result;\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,12 +1,2 @@
1
- /**
2
- * Provider Adapter Pattern — shared types for multi-provider proxy handlers.
3
- *
4
- * Phase 7.1: Unified ProviderAdapter interface so each provider encapsulates
5
- * its own message formatting, streaming normalization, tool schema adaptation,
6
- * thinking config, context management, and output token limits.
7
- *
8
- * Config types (ThinkingConfig, ContextManagementConfig, CompactionConfig) are
9
- * defined in shared/agent-core.ts and re-exported here so adapters can import
10
- * from a single location without creating shared→server circular dependencies.
11
- */
12
1
  export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","names":[],"sources":["../../../src/server/providers/types.ts"],"sourcesContent":["/**\n * Provider Adapter Pattern — shared types for multi-provider proxy handlers.\n *\n * Phase 7.1: Unified ProviderAdapter interface so each provider encapsulates\n * its own message formatting, streaming normalization, tool schema adaptation,\n * thinking config, context management, and output token limits.\n *\n * Config types (ThinkingConfig, ContextManagementConfig, CompactionConfig) are\n * defined in shared/agent-core.ts and re-exported here so adapters can import\n * from a single location without creating shared→server circular dependencies.\n */\n\nimport type http from \"node:http\";\nimport type { ProviderCapabilities } from \"../lib/provider-capabilities.js\";\n\n// Re-export config types from shared layer (single source of truth)\nexport type {\n ThinkingConfig,\n ContextManagementConfig,\n CompactionConfig,\n ToolChoice,\n} from \"../../shared/agent-core.js\";\n\n// Re-export ProviderCapabilities for convenience\nexport type { ProviderCapabilities } from \"../lib/provider-capabilities.js\";\n\n// ============================================================================\n// NORMALIZED STREAM EVENT (for future normalized streaming pipeline)\n// ============================================================================\n\nexport interface NormalizedStreamEvent {\n type:\n | \"text\"\n | \"tool_use_start\"\n | \"tool_use_delta\"\n | \"tool_use_end\"\n | \"thinking\"\n | \"usage\"\n | \"done\"\n | \"error\";\n /** Text delta content */\n text?: string;\n /** Tool use fields */\n toolId?: string;\n toolName?: string;\n toolInput?: string;\n /** Usage data */\n usage?: {\n inputTokens: number;\n outputTokens: number;\n cacheReadTokens: number;\n cacheCreationTokens: number;\n };\n /** Error message */\n error?: string;\n}\n\n// ============================================================================\n// PROVIDER STREAM CONFIG (request body → adapter)\n// ============================================================================\n\nexport interface ProviderStreamConfig {\n model: string;\n messages: any[];\n system: any;\n tools?: any[];\n max_tokens: number;\n temperature?: number;\n stream?: boolean;\n betas?: string[];\n context_management?: any;\n thinking?: any;\n tool_choice?: import(\"../../shared/agent-core.js\").ToolChoice;\n storeId?: string;\n /** Source documents for Anthropic Citations API — enables cite content blocks in responses */\n documents?: any[];\n}\n\n// ============================================================================\n// THINKING CONFIG RESULT (returned by adapter getThinkingConfig)\n// ============================================================================\n\nexport interface ThinkingConfigResult {\n thinking: import(\"../../shared/agent-core.js\").ThinkingConfig;\n beta: string;\n}\n\n// ============================================================================\n// PROVIDER ADAPTER INTERFACE\n// ============================================================================\n\nexport interface ProviderAdapter {\n /** Provider identifier: \"anthropic\" | \"bedrock\" | \"gemini\" | \"openai\" */\n name: string;\n\n /**\n * Handle streaming (or non-streaming) proxy request.\n * Writes SSE events to res, converting from native provider format\n * to Anthropic-compatible SSE where applicable.\n */\n handleStream(\n res: http.ServerResponse,\n config: ProviderStreamConfig,\n corsHeaders: Record<string, string>,\n ): Promise<void>;\n\n /**\n * Returns thinking configuration for the given model.\n * Each provider handles thinking differently:\n * - Anthropic: adaptive/enabled with beta strings\n * - Gemini: always-on for 2.5+/3.x\n * - OpenAI: reasoning models have built-in reasoning\n * - Bedrock: same as Anthropic\n */\n getThinkingConfig(model: string, enabled: boolean): ThinkingConfigResult;\n\n /**\n * Returns max output tokens for the given model.\n * If agentMax is provided, it's capped at the model's maximum.\n */\n getMaxOutputTokens(model: string, agentMax?: number): number;\n\n /**\n * Returns context management configuration (betas + edits) for the given model.\n * Non-Anthropic providers return empty config.\n */\n getContextManagement(model: string): import(\"../../shared/agent-core.js\").ContextManagementConfig;\n\n /**\n * Returns compaction configuration for the provider.\n * Controls when/how context compaction is triggered.\n */\n getCompactionConfig(model: string): import(\"../../shared/agent-core.js\").CompactionConfig;\n\n /**\n * Returns the static capability matrix for this provider.\n * Used for pre-flight checks and capability-aware routing/failover.\n */\n getCapabilities(): ProviderCapabilities;\n}\n"],"mappings":"","ignoreList":[]}