whale-code 6.5.5 → 6.5.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (847) hide show
  1. package/README.md +39 -31
  2. package/bin/{swagmanager-mcp.js → whale-code.js} +17 -2
  3. package/dist/cli/app.js +148 -72
  4. package/dist/cli/app.js.map +1 -0
  5. package/dist/cli/chat/AgentSelector.js +105 -10
  6. package/dist/cli/chat/AgentSelector.js.map +1 -0
  7. package/dist/cli/chat/ChatApp.d.ts +31 -0
  8. package/dist/cli/chat/ChatApp.js +539 -286
  9. package/dist/cli/chat/ChatApp.js.map +1 -0
  10. package/dist/cli/chat/ChatInput.js +1088 -770
  11. package/dist/cli/chat/ChatInput.js.map +1 -0
  12. package/dist/cli/chat/MarkdownText.js +39 -14
  13. package/dist/cli/chat/MarkdownText.js.map +1 -0
  14. package/dist/cli/chat/MemoryManager.js +181 -46
  15. package/dist/cli/chat/MemoryManager.js.map +1 -0
  16. package/dist/cli/chat/MessageList.d.ts +2 -3
  17. package/dist/cli/chat/MessageList.js +186 -45
  18. package/dist/cli/chat/MessageList.js.map +1 -0
  19. package/dist/cli/chat/ModelSelector.js +282 -63
  20. package/dist/cli/chat/ModelSelector.js.map +1 -0
  21. package/dist/cli/chat/NodeManager.js +165 -75
  22. package/dist/cli/chat/NodeManager.js.map +1 -0
  23. package/dist/cli/chat/NodeSelector.js +171 -30
  24. package/dist/cli/chat/NodeSelector.js.map +1 -0
  25. package/dist/cli/chat/PlanApproval.js +281 -57
  26. package/dist/cli/chat/PlanApproval.js.map +1 -0
  27. package/dist/cli/chat/RewindViewer.js +559 -144
  28. package/dist/cli/chat/RewindViewer.js.map +1 -0
  29. package/dist/cli/chat/SessionManager.js +137 -30
  30. package/dist/cli/chat/SessionManager.js.map +1 -0
  31. package/dist/cli/chat/SlashMenu.js +293 -164
  32. package/dist/cli/chat/SlashMenu.js.map +1 -0
  33. package/dist/cli/chat/StatusBar.js +172 -9
  34. package/dist/cli/chat/StatusBar.js.map +1 -0
  35. package/dist/cli/chat/StoreSelector.js +147 -18
  36. package/dist/cli/chat/StoreSelector.js.map +1 -0
  37. package/dist/cli/chat/StreamingText.d.ts +1 -5
  38. package/dist/cli/chat/StreamingText.js +22 -7
  39. package/dist/cli/chat/StreamingText.js.map +1 -0
  40. package/dist/cli/chat/SubagentPanel.d.ts +1 -2
  41. package/dist/cli/chat/SubagentPanel.js +612 -72
  42. package/dist/cli/chat/SubagentPanel.js.map +1 -0
  43. package/dist/cli/chat/TeamPanel.d.ts +1 -0
  44. package/dist/cli/chat/TeamPanel.js +230 -30
  45. package/dist/cli/chat/TeamPanel.js.map +1 -0
  46. package/dist/cli/chat/ThemeSelector.js +84 -24
  47. package/dist/cli/chat/ThemeSelector.js.map +1 -0
  48. package/dist/cli/chat/ToolIndicator.js +1476 -371
  49. package/dist/cli/chat/ToolIndicator.js.map +1 -0
  50. package/dist/cli/chat/hooks/useAgentLoop.d.ts +1 -0
  51. package/dist/cli/chat/hooks/useAgentLoop.js +481 -367
  52. package/dist/cli/chat/hooks/useAgentLoop.js.map +1 -0
  53. package/dist/cli/chat/hooks/useSlashCommands.d.ts +3 -14
  54. package/dist/cli/chat/hooks/useSlashCommands.js +744 -572
  55. package/dist/cli/chat/hooks/useSlashCommands.js.map +1 -0
  56. package/dist/cli/commands/config-cmd.js +56 -57
  57. package/dist/cli/commands/config-cmd.js.map +1 -0
  58. package/dist/cli/commands/db.js +184 -169
  59. package/dist/cli/commands/db.js.map +1 -0
  60. package/dist/cli/commands/doctor.js +212 -122
  61. package/dist/cli/commands/doctor.js.map +1 -0
  62. package/dist/cli/commands/init.js +211 -244
  63. package/dist/cli/commands/init.js.map +1 -0
  64. package/dist/cli/commands/mcp.js +127 -122
  65. package/dist/cli/commands/mcp.js.map +1 -0
  66. package/dist/cli/login/LoginApp.js +355 -141
  67. package/dist/cli/login/LoginApp.js.map +1 -0
  68. package/dist/cli/print-mode.js +196 -177
  69. package/dist/cli/print-mode.js.map +1 -0
  70. package/dist/cli/serve-mode.js +615 -530
  71. package/dist/cli/serve-mode.js.map +1 -0
  72. package/dist/cli/services/agent-config.d.ts +5 -1
  73. package/dist/cli/services/agent-config.js +66 -36
  74. package/dist/cli/services/agent-config.js.map +1 -0
  75. package/dist/cli/services/agent-definitions.d.ts +4 -1
  76. package/dist/cli/services/agent-definitions.js +97 -56
  77. package/dist/cli/services/agent-definitions.js.map +1 -0
  78. package/dist/cli/services/agent-events.js +225 -162
  79. package/dist/cli/services/agent-events.js.map +1 -0
  80. package/dist/cli/services/agent-loop.js +976 -688
  81. package/dist/cli/services/agent-loop.js.map +1 -0
  82. package/dist/cli/services/agent-worker-base.d.ts +35 -5
  83. package/dist/cli/services/agent-worker-base.js +337 -153
  84. package/dist/cli/services/agent-worker-base.js.map +1 -0
  85. package/dist/cli/services/api-retry.js +69 -64
  86. package/dist/cli/services/api-retry.js.map +1 -0
  87. package/dist/cli/services/auth-service.d.ts +3 -3
  88. package/dist/cli/services/auth-service.js +209 -132
  89. package/dist/cli/services/auth-service.js.map +1 -0
  90. package/dist/cli/services/background-processes.js +343 -267
  91. package/dist/cli/services/background-processes.js.map +1 -0
  92. package/dist/cli/services/browser-auth.d.ts +2 -2
  93. package/dist/cli/services/browser-auth.js +159 -118
  94. package/dist/cli/services/browser-auth.js.map +1 -0
  95. package/dist/cli/services/claude-md-loader.js +40 -36
  96. package/dist/cli/services/claude-md-loader.js.map +1 -0
  97. package/dist/cli/services/config-store.d.ts +9 -4
  98. package/dist/cli/services/config-store.js +164 -117
  99. package/dist/cli/services/config-store.js.map +1 -0
  100. package/dist/cli/services/debug-log.d.ts +1 -1
  101. package/dist/cli/services/debug-log.js +34 -35
  102. package/dist/cli/services/debug-log.js.map +1 -0
  103. package/dist/cli/services/env-detect.d.ts +7 -0
  104. package/dist/cli/services/env-detect.js +9 -0
  105. package/dist/cli/services/env-detect.js.map +1 -0
  106. package/dist/cli/services/error-logger.js +187 -169
  107. package/dist/cli/services/error-logger.js.map +1 -0
  108. package/dist/cli/services/file-history.d.ts +1 -1
  109. package/dist/cli/services/file-history.js +50 -54
  110. package/dist/cli/services/file-history.js.map +1 -0
  111. package/dist/cli/services/format-server-response.js +332 -372
  112. package/dist/cli/services/format-server-response.js.map +1 -0
  113. package/dist/cli/services/git-context.js +61 -45
  114. package/dist/cli/services/git-context.js.map +1 -0
  115. package/dist/cli/services/hooks.d.ts +2 -2
  116. package/dist/cli/services/hooks.js +195 -180
  117. package/dist/cli/services/hooks.js.map +1 -0
  118. package/dist/cli/services/ink-incremental.d.ts +19 -0
  119. package/dist/cli/services/ink-incremental.js +59 -0
  120. package/dist/cli/services/ink-incremental.js.map +1 -0
  121. package/dist/cli/services/ink-resize-fix.js +54 -44
  122. package/dist/cli/services/ink-resize-fix.js.map +1 -0
  123. package/dist/cli/services/ink-sync-output.d.ts +12 -0
  124. package/dist/cli/services/ink-sync-output.js +16 -0
  125. package/dist/cli/services/ink-sync-output.js.map +1 -0
  126. package/dist/cli/services/interactive-tools.js +268 -212
  127. package/dist/cli/services/interactive-tools.js.map +1 -0
  128. package/dist/cli/services/keybinding-manager.d.ts +11 -1
  129. package/dist/cli/services/keybinding-manager.js +126 -63
  130. package/dist/cli/services/keybinding-manager.js.map +1 -0
  131. package/dist/cli/services/local-tools.d.ts +1 -1
  132. package/dist/cli/services/local-tools.js +939 -656
  133. package/dist/cli/services/local-tools.js.map +1 -0
  134. package/dist/cli/services/lsp-manager.js +757 -594
  135. package/dist/cli/services/lsp-manager.js.map +1 -0
  136. package/dist/cli/services/mcp-client.d.ts +1 -1
  137. package/dist/cli/services/mcp-client.js +173 -134
  138. package/dist/cli/services/mcp-client.js.map +1 -0
  139. package/dist/cli/services/memory-manager.js +53 -40
  140. package/dist/cli/services/memory-manager.js.map +1 -0
  141. package/dist/cli/services/model-manager.js +55 -40
  142. package/dist/cli/services/model-manager.js.map +1 -0
  143. package/dist/cli/services/model-router.js +115 -85
  144. package/dist/cli/services/model-router.js.map +1 -0
  145. package/dist/cli/services/paths.d.ts +30 -0
  146. package/dist/cli/services/paths.js +81 -0
  147. package/dist/cli/services/paths.js.map +1 -0
  148. package/dist/cli/services/permission-modes.js +32 -25
  149. package/dist/cli/services/permission-modes.js.map +1 -0
  150. package/dist/cli/services/rewind.js +182 -168
  151. package/dist/cli/services/rewind.js.map +1 -0
  152. package/dist/cli/services/ripgrep.js +115 -115
  153. package/dist/cli/services/ripgrep.js.map +1 -0
  154. package/dist/cli/services/sandbox.d.ts +1 -1
  155. package/dist/cli/services/sandbox.js +58 -37
  156. package/dist/cli/services/sandbox.js.map +1 -0
  157. package/dist/cli/services/server-tools.js +738 -565
  158. package/dist/cli/services/server-tools.js.map +1 -0
  159. package/dist/cli/services/session-persistence.js +69 -74
  160. package/dist/cli/services/session-persistence.js.map +1 -0
  161. package/dist/cli/services/subagent-worker.js +42 -27
  162. package/dist/cli/services/subagent-worker.js.map +1 -0
  163. package/dist/cli/services/subagent.d.ts +2 -0
  164. package/dist/cli/services/subagent.js +605 -433
  165. package/dist/cli/services/subagent.js.map +1 -0
  166. package/dist/cli/services/system-prompt.js +86 -78
  167. package/dist/cli/services/system-prompt.js.map +1 -0
  168. package/dist/cli/services/task-decomposer.d.ts +1 -1
  169. package/dist/cli/services/task-decomposer.js +172 -139
  170. package/dist/cli/services/task-decomposer.js.map +1 -0
  171. package/dist/cli/services/team-lead.d.ts +2 -2
  172. package/dist/cli/services/team-lead.js +727 -529
  173. package/dist/cli/services/team-lead.js.map +1 -0
  174. package/dist/cli/services/team-state.js +319 -319
  175. package/dist/cli/services/team-state.js.map +1 -0
  176. package/dist/cli/services/teammate.d.ts +8 -2
  177. package/dist/cli/services/teammate.js +857 -569
  178. package/dist/cli/services/teammate.js.map +1 -0
  179. package/dist/cli/services/telemetry.d.ts +6 -1
  180. package/dist/cli/services/telemetry.js +180 -157
  181. package/dist/cli/services/telemetry.js.map +1 -0
  182. package/dist/cli/services/tools/agent-tools.d.ts +3 -3
  183. package/dist/cli/services/tools/agent-tools.js +480 -322
  184. package/dist/cli/services/tools/agent-tools.js.map +1 -0
  185. package/dist/cli/services/tools/file-ops.js +563 -450
  186. package/dist/cli/services/tools/file-ops.js.map +1 -0
  187. package/dist/cli/services/tools/search-tools.js +231 -162
  188. package/dist/cli/services/tools/search-tools.js.map +1 -0
  189. package/dist/cli/services/tools/shell-exec.js +197 -151
  190. package/dist/cli/services/tools/shell-exec.js.map +1 -0
  191. package/dist/cli/services/tools/task-manager.js +206 -173
  192. package/dist/cli/services/tools/task-manager.js.map +1 -0
  193. package/dist/cli/services/tools/web-tools.js +388 -341
  194. package/dist/cli/services/tools/web-tools.js.map +1 -0
  195. package/dist/cli/setup/SetupApp.d.ts +2 -2
  196. package/dist/cli/setup/SetupApp.js +608 -160
  197. package/dist/cli/setup/SetupApp.js.map +1 -0
  198. package/dist/cli/shared/ErrorBoundary.d.ts +22 -0
  199. package/dist/cli/shared/ErrorBoundary.js +73 -0
  200. package/dist/cli/shared/ErrorBoundary.js.map +1 -0
  201. package/dist/cli/shared/MatrixIntro.js +66 -69
  202. package/dist/cli/shared/MatrixIntro.js.map +1 -0
  203. package/dist/cli/shared/SpinnerSlot.d.ts +14 -0
  204. package/dist/cli/shared/SpinnerSlot.js +63 -0
  205. package/dist/cli/shared/SpinnerSlot.js.map +1 -0
  206. package/dist/cli/shared/Theme.d.ts +1 -1
  207. package/dist/cli/shared/Theme.js +136 -92
  208. package/dist/cli/shared/Theme.js.map +1 -0
  209. package/dist/cli/shared/WhaleBanner.js +99 -11
  210. package/dist/cli/shared/WhaleBanner.js.map +1 -0
  211. package/dist/cli/shared/markdown.d.ts +3 -1
  212. package/dist/cli/shared/markdown.js +736 -674
  213. package/dist/cli/shared/markdown.js.map +1 -0
  214. package/dist/cli/shared/marked-terminal.d.js +2 -0
  215. package/dist/cli/shared/marked-terminal.d.js.map +1 -0
  216. package/dist/cli/shared/theme-manager.js +99 -90
  217. package/dist/cli/shared/theme-manager.js.map +1 -0
  218. package/dist/cli/shared/theme-presets.js +256 -254
  219. package/dist/cli/shared/theme-presets.js.map +1 -0
  220. package/dist/cli/status/StatusApp.js +235 -86
  221. package/dist/cli/status/StatusApp.js.map +1 -0
  222. package/dist/cli/stores/StoreApp.js +275 -65
  223. package/dist/cli/stores/StoreApp.js.map +1 -0
  224. package/dist/index.d.ts +2 -2
  225. package/dist/index.js +509 -396
  226. package/dist/index.js.map +1 -0
  227. package/dist/local-agent/connection.d.ts +2 -2
  228. package/dist/local-agent/connection.js +352 -293
  229. package/dist/local-agent/connection.js.map +1 -0
  230. package/dist/local-agent/discovery.js +259 -122
  231. package/dist/local-agent/discovery.js.map +1 -0
  232. package/dist/local-agent/executor.js +216 -193
  233. package/dist/local-agent/executor.js.map +1 -0
  234. package/dist/local-agent/index.d.ts +2 -2
  235. package/dist/local-agent/index.js +156 -156
  236. package/dist/local-agent/index.js.map +1 -0
  237. package/dist/node/adapters/base.js +18 -8
  238. package/dist/node/adapters/base.js.map +1 -0
  239. package/dist/node/adapters/discord.js +286 -275
  240. package/dist/node/adapters/discord.js.map +1 -0
  241. package/dist/node/adapters/email.js +189 -202
  242. package/dist/node/adapters/email.js.map +1 -0
  243. package/dist/node/adapters/imessage.js +145 -142
  244. package/dist/node/adapters/imessage.js.map +1 -0
  245. package/dist/node/adapters/slack.js +237 -236
  246. package/dist/node/adapters/slack.js.map +1 -0
  247. package/dist/node/adapters/sms.js +149 -151
  248. package/dist/node/adapters/sms.js.map +1 -0
  249. package/dist/node/adapters/telegram.js +88 -92
  250. package/dist/node/adapters/telegram.js.map +1 -0
  251. package/dist/node/adapters/webchat.js +160 -136
  252. package/dist/node/adapters/webchat.js.map +1 -0
  253. package/dist/node/adapters/whatsapp.js +212 -215
  254. package/dist/node/adapters/whatsapp.js.map +1 -0
  255. package/dist/node/cli.js +884 -653
  256. package/dist/node/cli.js.map +1 -0
  257. package/dist/node/config.js +20 -18
  258. package/dist/node/config.js.map +1 -0
  259. package/dist/node/gateway-client.js +191 -181
  260. package/dist/node/gateway-client.js.map +1 -0
  261. package/dist/node/portal/clipboard.js +161 -130
  262. package/dist/node/portal/clipboard.js.map +1 -0
  263. package/dist/node/portal/discovery.js +51 -45
  264. package/dist/node/portal/discovery.js.map +1 -0
  265. package/dist/node/portal/forward.js +64 -58
  266. package/dist/node/portal/forward.js.map +1 -0
  267. package/dist/node/portal/index.js +246 -221
  268. package/dist/node/portal/index.js.map +1 -0
  269. package/dist/node/portal/multiplexer.js +192 -182
  270. package/dist/node/portal/multiplexer.js.map +1 -0
  271. package/dist/node/portal/permissions.js +102 -70
  272. package/dist/node/portal/permissions.js.map +1 -0
  273. package/dist/node/portal/protocol.js +153 -116
  274. package/dist/node/portal/protocol.js.map +1 -0
  275. package/dist/node/portal/screen.js +80 -69
  276. package/dist/node/portal/screen.js.map +1 -0
  277. package/dist/node/portal/session.js +124 -117
  278. package/dist/node/portal/session.js.map +1 -0
  279. package/dist/node/portal/shell.js +140 -113
  280. package/dist/node/portal/shell.js.map +1 -0
  281. package/dist/node/portal/stream.js +77 -75
  282. package/dist/node/portal/stream.js.map +1 -0
  283. package/dist/node/portal/transfer.js +190 -167
  284. package/dist/node/portal/transfer.js.map +1 -0
  285. package/dist/node/portal/ui.js +124 -99
  286. package/dist/node/portal/ui.js.map +1 -0
  287. package/dist/node/remote-desktop/compile-helper.js +50 -45
  288. package/dist/node/remote-desktop/compile-helper.js.map +1 -0
  289. package/dist/node/remote-desktop/index.js +215 -187
  290. package/dist/node/remote-desktop/index.js.map +1 -0
  291. package/dist/node/remote-desktop/protocol.js +45 -29
  292. package/dist/node/remote-desktop/protocol.js.map +1 -0
  293. package/dist/node/runtime.js +493 -410
  294. package/dist/node/runtime.js.map +1 -0
  295. package/dist/server/handlers/__test-utils__/test-db.js +39 -89
  296. package/dist/server/handlers/__test-utils__/test-db.js.map +1 -0
  297. package/dist/server/handlers/analytics.js +467 -261
  298. package/dist/server/handlers/analytics.js.map +1 -0
  299. package/dist/server/handlers/api-docs.js +1030 -895
  300. package/dist/server/handlers/api-docs.js.map +1 -0
  301. package/dist/server/handlers/api-keys.js +291 -242
  302. package/dist/server/handlers/api-keys.js.map +1 -0
  303. package/dist/server/handlers/billing.js +330 -239
  304. package/dist/server/handlers/billing.js.map +1 -0
  305. package/dist/server/handlers/browser.js +468 -395
  306. package/dist/server/handlers/browser.js.map +1 -0
  307. package/dist/server/handlers/catalog.js +1377 -978
  308. package/dist/server/handlers/catalog.js.map +1 -0
  309. package/dist/server/handlers/clickhouse.js +157 -109
  310. package/dist/server/handlers/clickhouse.js.map +1 -0
  311. package/dist/server/handlers/comms.js +1439 -984
  312. package/dist/server/handlers/comms.js.map +1 -0
  313. package/dist/server/handlers/creations.js +461 -394
  314. package/dist/server/handlers/creations.js.map +1 -0
  315. package/dist/server/handlers/crm.js +1082 -791
  316. package/dist/server/handlers/crm.js.map +1 -0
  317. package/dist/server/handlers/discovery.js +251 -232
  318. package/dist/server/handlers/discovery.js.map +1 -0
  319. package/dist/server/handlers/embeddings.js +241 -164
  320. package/dist/server/handlers/embeddings.js.map +1 -0
  321. package/dist/server/handlers/enrichment.js +887 -718
  322. package/dist/server/handlers/enrichment.js.map +1 -0
  323. package/dist/server/handlers/image-gen.js +467 -376
  324. package/dist/server/handlers/image-gen.js.map +1 -0
  325. package/dist/server/handlers/inventory.js +797 -424
  326. package/dist/server/handlers/inventory.js.map +1 -0
  327. package/dist/server/handlers/kali.js +272 -230
  328. package/dist/server/handlers/kali.js.map +1 -0
  329. package/dist/server/handlers/llm-providers.js +803 -580
  330. package/dist/server/handlers/llm-providers.js.map +1 -0
  331. package/dist/server/handlers/local-agent.js +133 -105
  332. package/dist/server/handlers/local-agent.js.map +1 -0
  333. package/dist/server/handlers/media.js +1179 -857
  334. package/dist/server/handlers/media.js.map +1 -0
  335. package/dist/server/handlers/meta-ads.js +2669 -2093
  336. package/dist/server/handlers/meta-ads.js.map +1 -0
  337. package/dist/server/handlers/nodes.js +1321 -913
  338. package/dist/server/handlers/nodes.js.map +1 -0
  339. package/dist/server/handlers/operations.js +183 -157
  340. package/dist/server/handlers/operations.js.map +1 -0
  341. package/dist/server/handlers/platform.js +346 -210
  342. package/dist/server/handlers/platform.js.map +1 -0
  343. package/dist/server/handlers/remove-bg.js +118 -86
  344. package/dist/server/handlers/remove-bg.js.map +1 -0
  345. package/dist/server/handlers/storefront.js +586 -446
  346. package/dist/server/handlers/storefront.js.map +1 -0
  347. package/dist/server/handlers/supply-chain.js +546 -326
  348. package/dist/server/handlers/supply-chain.js.map +1 -0
  349. package/dist/server/handlers/transcription.js +106 -97
  350. package/dist/server/handlers/transcription.js.map +1 -0
  351. package/dist/server/handlers/video-gen.js +593 -424
  352. package/dist/server/handlers/video-gen.js.map +1 -0
  353. package/dist/server/handlers/voice.js +1458 -1039
  354. package/dist/server/handlers/voice.js.map +1 -0
  355. package/dist/server/handlers/workflow-steps.js +2837 -2116
  356. package/dist/server/handlers/workflow-steps.js.map +1 -0
  357. package/dist/server/handlers/workflows.js +1630 -933
  358. package/dist/server/handlers/workflows.js.map +1 -0
  359. package/dist/server/index.js +3167 -2422
  360. package/dist/server/index.js.map +1 -0
  361. package/dist/server/lib/batch-client.js +471 -409
  362. package/dist/server/lib/batch-client.js.map +1 -0
  363. package/dist/server/lib/clickhouse-buffer.js +118 -104
  364. package/dist/server/lib/clickhouse-buffer.js.map +1 -0
  365. package/dist/server/lib/clickhouse-client.js +107 -107
  366. package/dist/server/lib/clickhouse-client.js.map +1 -0
  367. package/dist/server/lib/coa-renderer.js +1786 -356
  368. package/dist/server/lib/coa-renderer.js.map +1 -0
  369. package/dist/server/lib/code-worker-pool.js +227 -177
  370. package/dist/server/lib/code-worker-pool.js.map +1 -0
  371. package/dist/server/lib/code-worker.js +174 -164
  372. package/dist/server/lib/code-worker.js.map +1 -0
  373. package/dist/server/lib/compaction-service.d.ts +2 -12
  374. package/dist/server/lib/compaction-service.js +74 -184
  375. package/dist/server/lib/compaction-service.js.map +1 -0
  376. package/dist/server/lib/logger.js +36 -24
  377. package/dist/server/lib/logger.js.map +1 -0
  378. package/dist/server/lib/otel.js +101 -80
  379. package/dist/server/lib/otel.js.map +1 -0
  380. package/dist/server/lib/pdf-renderer.js +952 -788
  381. package/dist/server/lib/pdf-renderer.js.map +1 -0
  382. package/dist/server/lib/prompt-sanitizer.js +188 -108
  383. package/dist/server/lib/prompt-sanitizer.js.map +1 -0
  384. package/dist/server/lib/provider-capabilities.js +136 -138
  385. package/dist/server/lib/provider-capabilities.js.map +1 -0
  386. package/dist/server/lib/provider-failover.js +190 -168
  387. package/dist/server/lib/provider-failover.js.map +1 -0
  388. package/dist/server/lib/rate-limiter.js +186 -117
  389. package/dist/server/lib/rate-limiter.js.map +1 -0
  390. package/dist/server/lib/react-pdf-layout.js +551 -382
  391. package/dist/server/lib/react-pdf-layout.js.map +1 -0
  392. package/dist/server/lib/server-agent-loop.d.ts +4 -1
  393. package/dist/server/lib/server-agent-loop.js +906 -634
  394. package/dist/server/lib/server-agent-loop.js.map +1 -0
  395. package/dist/server/lib/server-subagent.js +260 -164
  396. package/dist/server/lib/server-subagent.js.map +1 -0
  397. package/dist/server/lib/session-checkpoint.js +105 -96
  398. package/dist/server/lib/session-checkpoint.js.map +1 -0
  399. package/dist/server/lib/ssrf-guard.js +193 -184
  400. package/dist/server/lib/ssrf-guard.js.map +1 -0
  401. package/dist/server/lib/supabase-client.js +94 -82
  402. package/dist/server/lib/supabase-client.js.map +1 -0
  403. package/dist/server/lib/template-resolver.js +154 -176
  404. package/dist/server/lib/template-resolver.js.map +1 -0
  405. package/dist/server/lib/utils.js +242 -133
  406. package/dist/server/lib/utils.js.map +1 -0
  407. package/dist/server/local-agent-gateway.d.ts +2 -2
  408. package/dist/server/local-agent-gateway.js +785 -627
  409. package/dist/server/local-agent-gateway.js.map +1 -0
  410. package/dist/server/providers/anthropic.js +250 -172
  411. package/dist/server/providers/anthropic.js.map +1 -0
  412. package/dist/server/providers/bedrock.js +217 -158
  413. package/dist/server/providers/bedrock.js.map +1 -0
  414. package/dist/server/providers/gemini.js +548 -418
  415. package/dist/server/providers/gemini.js.map +1 -0
  416. package/dist/server/providers/openai.js +571 -437
  417. package/dist/server/providers/openai.js.map +1 -0
  418. package/dist/server/providers/registry.js +23 -18
  419. package/dist/server/providers/registry.js.map +1 -0
  420. package/dist/server/providers/shared.js +123 -95
  421. package/dist/server/providers/shared.js.map +1 -0
  422. package/dist/server/providers/types.js +1 -11
  423. package/dist/server/providers/types.js.map +1 -0
  424. package/dist/server/proxy-handlers.js +209 -165
  425. package/dist/server/proxy-handlers.js.map +1 -0
  426. package/dist/server/tool-router.js +959 -599
  427. package/dist/server/tool-router.js.map +1 -0
  428. package/dist/server/validation.js +248 -188
  429. package/dist/server/validation.js.map +1 -0
  430. package/dist/server/worker.js +202 -133
  431. package/dist/server/worker.js.map +1 -0
  432. package/dist/setup.d.ts +2 -2
  433. package/dist/setup.js +151 -147
  434. package/dist/setup.js.map +1 -0
  435. package/dist/shared/agent-core.d.ts +115 -26
  436. package/dist/shared/agent-core.js +956 -522
  437. package/dist/shared/agent-core.js.map +1 -0
  438. package/dist/shared/anthropic-types.js +1 -6
  439. package/dist/shared/anthropic-types.js.map +1 -0
  440. package/dist/shared/api-client.d.ts +16 -9
  441. package/dist/shared/api-client.js +419 -327
  442. package/dist/shared/api-client.js.map +1 -0
  443. package/dist/shared/compaction.d.ts +36 -0
  444. package/dist/shared/compaction.js +138 -0
  445. package/dist/shared/compaction.js.map +1 -0
  446. package/dist/shared/constants.js +67 -64
  447. package/dist/shared/constants.js.map +1 -0
  448. package/dist/shared/sse-parser.js +221 -219
  449. package/dist/shared/sse-parser.js.map +1 -0
  450. package/dist/shared/tool-dispatch.d.ts +4 -0
  451. package/dist/shared/tool-dispatch.js +226 -165
  452. package/dist/shared/tool-dispatch.js.map +1 -0
  453. package/dist/shared/types.js +1 -6
  454. package/dist/shared/types.js.map +1 -0
  455. package/dist/types/cli-highlight.d.js +2 -0
  456. package/dist/types/cli-highlight.d.js.map +1 -0
  457. package/dist/types/diff.d.js +2 -0
  458. package/dist/types/diff.d.js.map +1 -0
  459. package/dist/types/pdf-parse.d.js +2 -0
  460. package/dist/types/pdf-parse.d.js.map +1 -0
  461. package/dist/updater.d.ts +1 -1
  462. package/dist/updater.js +118 -92
  463. package/dist/updater.js.map +1 -0
  464. package/dist/webchat/widget.js +227 -380
  465. package/dist/webchat/widget.js.map +1 -0
  466. package/package.json +22 -10
  467. package/vendor/ink/build/ansi-tokenizer.d.ts +38 -0
  468. package/vendor/ink/build/ansi-tokenizer.js +316 -0
  469. package/vendor/ink/build/ansi-tokenizer.js.map +1 -0
  470. package/vendor/ink/build/apply-styles.js +175 -0
  471. package/vendor/ink/build/build-layout.js +77 -0
  472. package/vendor/ink/build/calculate-wrapped-text.js +53 -0
  473. package/vendor/ink/build/colorize.d.ts +3 -0
  474. package/vendor/ink/build/colorize.js +48 -0
  475. package/vendor/ink/build/colorize.js.map +1 -0
  476. package/vendor/ink/build/components/AccessibilityContext.d.ts +3 -0
  477. package/vendor/ink/build/components/AccessibilityContext.js +5 -0
  478. package/vendor/ink/build/components/AccessibilityContext.js.map +1 -0
  479. package/vendor/ink/build/components/App.d.ts +18 -0
  480. package/vendor/ink/build/components/App.js +351 -0
  481. package/vendor/ink/build/components/App.js.map +1 -0
  482. package/vendor/ink/build/components/AppContext.d.ts +15 -0
  483. package/vendor/ink/build/components/AppContext.js +11 -0
  484. package/vendor/ink/build/components/AppContext.js.map +1 -0
  485. package/vendor/ink/build/components/BackgroundContext.d.ts +4 -0
  486. package/vendor/ink/build/components/BackgroundContext.js +3 -0
  487. package/vendor/ink/build/components/BackgroundContext.js.map +1 -0
  488. package/vendor/ink/build/components/Box.d.ts +117 -0
  489. package/vendor/ink/build/components/Box.js +34 -0
  490. package/vendor/ink/build/components/Box.js.map +1 -0
  491. package/vendor/ink/build/components/Color.js +62 -0
  492. package/vendor/ink/build/components/Cursor.d.ts +83 -0
  493. package/vendor/ink/build/components/Cursor.js +53 -0
  494. package/vendor/ink/build/components/Cursor.js.map +1 -0
  495. package/vendor/ink/build/components/CursorContext.d.ts +11 -0
  496. package/vendor/ink/build/components/CursorContext.js +8 -0
  497. package/vendor/ink/build/components/CursorContext.js.map +1 -0
  498. package/vendor/ink/build/components/ErrorBoundary.d.ts +18 -0
  499. package/vendor/ink/build/components/ErrorBoundary.js +23 -0
  500. package/vendor/ink/build/components/ErrorBoundary.js.map +1 -0
  501. package/vendor/ink/build/components/ErrorOverview.d.ts +6 -0
  502. package/vendor/ink/build/components/ErrorOverview.js +84 -0
  503. package/vendor/ink/build/components/ErrorOverview.js.map +1 -0
  504. package/vendor/ink/build/components/FocusContext.d.ts +16 -0
  505. package/vendor/ink/build/components/FocusContext.js +17 -0
  506. package/vendor/ink/build/components/FocusContext.js.map +1 -0
  507. package/vendor/ink/build/components/Newline.d.ts +13 -0
  508. package/vendor/ink/build/components/Newline.js +8 -0
  509. package/vendor/ink/build/components/Newline.js.map +1 -0
  510. package/vendor/ink/build/components/Spacer.d.ts +7 -0
  511. package/vendor/ink/build/components/Spacer.js +11 -0
  512. package/vendor/ink/build/components/Spacer.js.map +1 -0
  513. package/vendor/ink/build/components/Static.d.ts +24 -0
  514. package/vendor/ink/build/components/Static.js +28 -0
  515. package/vendor/ink/build/components/Static.js.map +1 -0
  516. package/vendor/ink/build/components/StderrContext.d.ts +15 -0
  517. package/vendor/ink/build/components/StderrContext.js +13 -0
  518. package/vendor/ink/build/components/StderrContext.js.map +1 -0
  519. package/vendor/ink/build/components/StdinContext.d.ts +22 -0
  520. package/vendor/ink/build/components/StdinContext.js +19 -0
  521. package/vendor/ink/build/components/StdinContext.js.map +1 -0
  522. package/vendor/ink/build/components/StdoutContext.d.ts +15 -0
  523. package/vendor/ink/build/components/StdoutContext.js +13 -0
  524. package/vendor/ink/build/components/StdoutContext.js.map +1 -0
  525. package/vendor/ink/build/components/Text.d.ts +55 -0
  526. package/vendor/ink/build/components/Text.js +50 -0
  527. package/vendor/ink/build/components/Text.js.map +1 -0
  528. package/vendor/ink/build/components/Transform.d.ts +16 -0
  529. package/vendor/ink/build/components/Transform.js +15 -0
  530. package/vendor/ink/build/components/Transform.js.map +1 -0
  531. package/vendor/ink/build/cursor-helpers.d.ts +38 -0
  532. package/vendor/ink/build/cursor-helpers.js +56 -0
  533. package/vendor/ink/build/cursor-helpers.js.map +1 -0
  534. package/vendor/ink/build/devtools-window-polyfill.d.ts +1 -0
  535. package/vendor/ink/build/devtools-window-polyfill.js +65 -0
  536. package/vendor/ink/build/devtools-window-polyfill.js.map +1 -0
  537. package/vendor/ink/build/devtools.d.ts +1 -0
  538. package/vendor/ink/build/devtools.js +11 -0
  539. package/vendor/ink/build/devtools.js.map +1 -0
  540. package/vendor/ink/build/dom.d.ts +56 -0
  541. package/vendor/ink/build/dom.js +124 -0
  542. package/vendor/ink/build/dom.js.map +1 -0
  543. package/vendor/ink/build/experimental/apply-style.js +140 -0
  544. package/vendor/ink/build/experimental/dom.js +123 -0
  545. package/vendor/ink/build/experimental/output.js +91 -0
  546. package/vendor/ink/build/experimental/reconciler.js +141 -0
  547. package/vendor/ink/build/experimental/renderer.js +81 -0
  548. package/vendor/ink/build/get-max-width.d.ts +3 -0
  549. package/vendor/ink/build/get-max-width.js +10 -0
  550. package/vendor/ink/build/get-max-width.js.map +1 -0
  551. package/vendor/ink/build/hooks/use-app.d.ts +5 -0
  552. package/vendor/ink/build/hooks/use-app.js +8 -0
  553. package/vendor/ink/build/hooks/use-app.js.map +1 -0
  554. package/vendor/ink/build/hooks/use-cursor.d.ts +12 -0
  555. package/vendor/ink/build/hooks/use-cursor.js +29 -0
  556. package/vendor/ink/build/hooks/use-cursor.js.map +1 -0
  557. package/vendor/ink/build/hooks/use-focus-manager.d.ts +28 -0
  558. package/vendor/ink/build/hooks/use-focus-manager.js +17 -0
  559. package/vendor/ink/build/hooks/use-focus-manager.js.map +1 -0
  560. package/vendor/ink/build/hooks/use-focus.d.ts +29 -0
  561. package/vendor/ink/build/hooks/use-focus.js +42 -0
  562. package/vendor/ink/build/hooks/use-focus.js.map +1 -0
  563. package/vendor/ink/build/hooks/use-input.d.ts +131 -0
  564. package/vendor/ink/build/hooks/use-input.js +124 -0
  565. package/vendor/ink/build/hooks/use-input.js.map +1 -0
  566. package/vendor/ink/build/hooks/use-is-screen-reader-enabled.d.ts +5 -0
  567. package/vendor/ink/build/hooks/use-is-screen-reader-enabled.js +11 -0
  568. package/vendor/ink/build/hooks/use-is-screen-reader-enabled.js.map +1 -0
  569. package/vendor/ink/build/hooks/use-stderr.d.ts +5 -0
  570. package/vendor/ink/build/hooks/use-stderr.js +8 -0
  571. package/vendor/ink/build/hooks/use-stderr.js.map +1 -0
  572. package/vendor/ink/build/hooks/use-stdin.d.ts +5 -0
  573. package/vendor/ink/build/hooks/use-stdin.js +8 -0
  574. package/vendor/ink/build/hooks/use-stdin.js.map +1 -0
  575. package/vendor/ink/build/hooks/use-stdout.d.ts +5 -0
  576. package/vendor/ink/build/hooks/use-stdout.js +8 -0
  577. package/vendor/ink/build/hooks/use-stdout.js.map +1 -0
  578. package/vendor/ink/build/hooks/useInput.js +38 -0
  579. package/vendor/ink/build/index.d.ts +34 -0
  580. package/vendor/ink/build/index.js +20 -0
  581. package/vendor/ink/build/index.js.map +1 -0
  582. package/vendor/ink/build/ink.d.ts +90 -0
  583. package/vendor/ink/build/ink.js +654 -0
  584. package/vendor/ink/build/ink.js.map +1 -0
  585. package/vendor/ink/build/input-parser.d.ts +7 -0
  586. package/vendor/ink/build/input-parser.js +154 -0
  587. package/vendor/ink/build/input-parser.js.map +1 -0
  588. package/vendor/ink/build/instance.js +205 -0
  589. package/vendor/ink/build/instances.d.ts +3 -0
  590. package/vendor/ink/build/instances.js +8 -0
  591. package/vendor/ink/build/instances.js.map +1 -0
  592. package/vendor/ink/build/kitty-keyboard.d.ts +23 -0
  593. package/vendor/ink/build/kitty-keyboard.js +32 -0
  594. package/vendor/ink/build/kitty-keyboard.js.map +1 -0
  595. package/vendor/ink/build/layout.d.ts +7 -0
  596. package/vendor/ink/build/layout.js +33 -0
  597. package/vendor/ink/build/layout.js.map +1 -0
  598. package/vendor/ink/build/log-update.d.ts +19 -0
  599. package/vendor/ink/build/log-update.js +243 -0
  600. package/vendor/ink/build/log-update.js.map +1 -0
  601. package/vendor/ink/build/measure-element.d.ts +16 -0
  602. package/vendor/ink/build/measure-element.js +9 -0
  603. package/vendor/ink/build/measure-element.js.map +1 -0
  604. package/vendor/ink/build/measure-text.d.ts +6 -0
  605. package/vendor/ink/build/measure-text.js +21 -0
  606. package/vendor/ink/build/measure-text.js.map +1 -0
  607. package/vendor/ink/build/options.d.ts +52 -0
  608. package/vendor/ink/build/options.js +2 -0
  609. package/vendor/ink/build/options.js.map +1 -0
  610. package/vendor/ink/build/output.d.ts +35 -0
  611. package/vendor/ink/build/output.js +183 -0
  612. package/vendor/ink/build/output.js.map +1 -0
  613. package/vendor/ink/build/parse-keypress.d.ts +22 -0
  614. package/vendor/ink/build/parse-keypress.js +493 -0
  615. package/vendor/ink/build/parse-keypress.js.map +1 -0
  616. package/vendor/ink/build/reconciler.d.ts +4 -0
  617. package/vendor/ink/build/reconciler.js +274 -0
  618. package/vendor/ink/build/reconciler.js.map +1 -0
  619. package/vendor/ink/build/render-background.d.ts +4 -0
  620. package/vendor/ink/build/render-background.js +25 -0
  621. package/vendor/ink/build/render-background.js.map +1 -0
  622. package/vendor/ink/build/render-border.d.ts +4 -0
  623. package/vendor/ink/build/render-border.js +73 -0
  624. package/vendor/ink/build/render-border.js.map +1 -0
  625. package/vendor/ink/build/render-node-to-output.d.ts +14 -0
  626. package/vendor/ink/build/render-node-to-output.js +147 -0
  627. package/vendor/ink/build/render-node-to-output.js.map +1 -0
  628. package/vendor/ink/build/render-to-string.d.ts +38 -0
  629. package/vendor/ink/build/render-to-string.js +115 -0
  630. package/vendor/ink/build/render-to-string.js.map +1 -0
  631. package/vendor/ink/build/render.d.ts +121 -0
  632. package/vendor/ink/build/render.js +55 -0
  633. package/vendor/ink/build/render.js.map +1 -0
  634. package/vendor/ink/build/renderer.d.ts +8 -0
  635. package/vendor/ink/build/renderer.js +55 -0
  636. package/vendor/ink/build/renderer.js.map +1 -0
  637. package/vendor/ink/build/sanitize-ansi.d.ts +2 -0
  638. package/vendor/ink/build/sanitize-ansi.js +27 -0
  639. package/vendor/ink/build/sanitize-ansi.js.map +1 -0
  640. package/vendor/ink/build/screen-reader-update.d.ts +13 -0
  641. package/vendor/ink/build/screen-reader-update.js +38 -0
  642. package/vendor/ink/build/screen-reader-update.js.map +1 -0
  643. package/vendor/ink/build/squash-text-nodes.d.ts +3 -0
  644. package/vendor/ink/build/squash-text-nodes.js +36 -0
  645. package/vendor/ink/build/squash-text-nodes.js.map +1 -0
  646. package/vendor/ink/build/styles.d.ts +240 -0
  647. package/vendor/ink/build/styles.js +232 -0
  648. package/vendor/ink/build/styles.js.map +1 -0
  649. package/vendor/ink/build/utils.d.ts +2 -0
  650. package/vendor/ink/build/utils.js +4 -0
  651. package/vendor/ink/build/utils.js.map +1 -0
  652. package/vendor/ink/build/wrap-text.d.ts +3 -0
  653. package/vendor/ink/build/wrap-text.js +31 -0
  654. package/vendor/ink/build/wrap-text.js.map +1 -0
  655. package/vendor/ink/build/write-synchronized.d.ts +4 -0
  656. package/vendor/ink/build/write-synchronized.js +7 -0
  657. package/vendor/ink/build/write-synchronized.js.map +1 -0
  658. package/vendor/ink/license +10 -0
  659. package/vendor/ink/node_modules/@types/node/LICENSE +21 -0
  660. package/vendor/ink/node_modules/@types/node/README.md +15 -0
  661. package/vendor/ink/node_modules/@types/node/assert/strict.d.ts +105 -0
  662. package/vendor/ink/node_modules/@types/node/assert.d.ts +955 -0
  663. package/vendor/ink/node_modules/@types/node/async_hooks.d.ts +623 -0
  664. package/vendor/ink/node_modules/@types/node/buffer.buffer.d.ts +466 -0
  665. package/vendor/ink/node_modules/@types/node/buffer.d.ts +1810 -0
  666. package/vendor/ink/node_modules/@types/node/child_process.d.ts +1428 -0
  667. package/vendor/ink/node_modules/@types/node/cluster.d.ts +486 -0
  668. package/vendor/ink/node_modules/@types/node/compatibility/iterators.d.ts +21 -0
  669. package/vendor/ink/node_modules/@types/node/console.d.ts +151 -0
  670. package/vendor/ink/node_modules/@types/node/constants.d.ts +20 -0
  671. package/vendor/ink/node_modules/@types/node/crypto.d.ts +4065 -0
  672. package/vendor/ink/node_modules/@types/node/dgram.d.ts +564 -0
  673. package/vendor/ink/node_modules/@types/node/diagnostics_channel.d.ts +576 -0
  674. package/vendor/ink/node_modules/@types/node/dns/promises.d.ts +503 -0
  675. package/vendor/ink/node_modules/@types/node/dns.d.ts +922 -0
  676. package/vendor/ink/node_modules/@types/node/domain.d.ts +166 -0
  677. package/vendor/ink/node_modules/@types/node/events.d.ts +1054 -0
  678. package/vendor/ink/node_modules/@types/node/fs/promises.d.ts +1329 -0
  679. package/vendor/ink/node_modules/@types/node/fs.d.ts +4676 -0
  680. package/vendor/ink/node_modules/@types/node/globals.d.ts +150 -0
  681. package/vendor/ink/node_modules/@types/node/globals.typedarray.d.ts +101 -0
  682. package/vendor/ink/node_modules/@types/node/http.d.ts +2167 -0
  683. package/vendor/ink/node_modules/@types/node/http2.d.ts +2480 -0
  684. package/vendor/ink/node_modules/@types/node/https.d.ts +405 -0
  685. package/vendor/ink/node_modules/@types/node/index.d.ts +115 -0
  686. package/vendor/ink/node_modules/@types/node/inspector/promises.d.ts +41 -0
  687. package/vendor/ink/node_modules/@types/node/inspector.d.ts +224 -0
  688. package/vendor/ink/node_modules/@types/node/inspector.generated.d.ts +4226 -0
  689. package/vendor/ink/node_modules/@types/node/module.d.ts +819 -0
  690. package/vendor/ink/node_modules/@types/node/net.d.ts +933 -0
  691. package/vendor/ink/node_modules/@types/node/os.d.ts +507 -0
  692. package/vendor/ink/node_modules/@types/node/package.json +155 -0
  693. package/vendor/ink/node_modules/@types/node/path/posix.d.ts +8 -0
  694. package/vendor/ink/node_modules/@types/node/path/win32.d.ts +8 -0
  695. package/vendor/ink/node_modules/@types/node/path.d.ts +187 -0
  696. package/vendor/ink/node_modules/@types/node/perf_hooks.d.ts +643 -0
  697. package/vendor/ink/node_modules/@types/node/process.d.ts +2156 -0
  698. package/vendor/ink/node_modules/@types/node/punycode.d.ts +117 -0
  699. package/vendor/ink/node_modules/@types/node/querystring.d.ts +152 -0
  700. package/vendor/ink/node_modules/@types/node/quic.d.ts +910 -0
  701. package/vendor/ink/node_modules/@types/node/readline/promises.d.ts +161 -0
  702. package/vendor/ink/node_modules/@types/node/readline.d.ts +541 -0
  703. package/vendor/ink/node_modules/@types/node/repl.d.ts +415 -0
  704. package/vendor/ink/node_modules/@types/node/sea.d.ts +162 -0
  705. package/vendor/ink/node_modules/@types/node/sqlite.d.ts +955 -0
  706. package/vendor/ink/node_modules/@types/node/stream/consumers.d.ts +38 -0
  707. package/vendor/ink/node_modules/@types/node/stream/promises.d.ts +211 -0
  708. package/vendor/ink/node_modules/@types/node/stream/web.d.ts +296 -0
  709. package/vendor/ink/node_modules/@types/node/stream.d.ts +1760 -0
  710. package/vendor/ink/node_modules/@types/node/string_decoder.d.ts +67 -0
  711. package/vendor/ink/node_modules/@types/node/test/reporters.d.ts +96 -0
  712. package/vendor/ink/node_modules/@types/node/test.d.ts +2240 -0
  713. package/vendor/ink/node_modules/@types/node/timers/promises.d.ts +108 -0
  714. package/vendor/ink/node_modules/@types/node/timers.d.ts +159 -0
  715. package/vendor/ink/node_modules/@types/node/tls.d.ts +1198 -0
  716. package/vendor/ink/node_modules/@types/node/trace_events.d.ts +197 -0
  717. package/vendor/ink/node_modules/@types/node/ts5.6/buffer.buffer.d.ts +462 -0
  718. package/vendor/ink/node_modules/@types/node/ts5.6/compatibility/float16array.d.ts +71 -0
  719. package/vendor/ink/node_modules/@types/node/ts5.6/globals.typedarray.d.ts +36 -0
  720. package/vendor/ink/node_modules/@types/node/ts5.6/index.d.ts +117 -0
  721. package/vendor/ink/node_modules/@types/node/ts5.7/compatibility/float16array.d.ts +72 -0
  722. package/vendor/ink/node_modules/@types/node/ts5.7/index.d.ts +117 -0
  723. package/vendor/ink/node_modules/@types/node/tty.d.ts +250 -0
  724. package/vendor/ink/node_modules/@types/node/url.d.ts +519 -0
  725. package/vendor/ink/node_modules/@types/node/util/types.d.ts +558 -0
  726. package/vendor/ink/node_modules/@types/node/util.d.ts +1662 -0
  727. package/vendor/ink/node_modules/@types/node/v8.d.ts +983 -0
  728. package/vendor/ink/node_modules/@types/node/vm.d.ts +1208 -0
  729. package/vendor/ink/node_modules/@types/node/wasi.d.ts +202 -0
  730. package/vendor/ink/node_modules/@types/node/web-globals/abortcontroller.d.ts +59 -0
  731. package/vendor/ink/node_modules/@types/node/web-globals/blob.d.ts +23 -0
  732. package/vendor/ink/node_modules/@types/node/web-globals/console.d.ts +9 -0
  733. package/vendor/ink/node_modules/@types/node/web-globals/crypto.d.ts +39 -0
  734. package/vendor/ink/node_modules/@types/node/web-globals/domexception.d.ts +68 -0
  735. package/vendor/ink/node_modules/@types/node/web-globals/encoding.d.ts +11 -0
  736. package/vendor/ink/node_modules/@types/node/web-globals/events.d.ts +106 -0
  737. package/vendor/ink/node_modules/@types/node/web-globals/fetch.d.ts +69 -0
  738. package/vendor/ink/node_modules/@types/node/web-globals/importmeta.d.ts +13 -0
  739. package/vendor/ink/node_modules/@types/node/web-globals/messaging.d.ts +23 -0
  740. package/vendor/ink/node_modules/@types/node/web-globals/navigator.d.ts +25 -0
  741. package/vendor/ink/node_modules/@types/node/web-globals/performance.d.ts +45 -0
  742. package/vendor/ink/node_modules/@types/node/web-globals/storage.d.ts +24 -0
  743. package/vendor/ink/node_modules/@types/node/web-globals/streams.d.ts +115 -0
  744. package/vendor/ink/node_modules/@types/node/web-globals/timers.d.ts +44 -0
  745. package/vendor/ink/node_modules/@types/node/web-globals/url.d.ts +24 -0
  746. package/vendor/ink/node_modules/@types/node/worker_threads.d.ts +717 -0
  747. package/vendor/ink/node_modules/@types/node/zlib.d.ts +618 -0
  748. package/vendor/ink/node_modules/node-pty/LICENSE +69 -0
  749. package/vendor/ink/node_modules/node-pty/README.md +164 -0
  750. package/vendor/ink/node_modules/node-pty/binding.gyp +150 -0
  751. package/vendor/ink/node_modules/node-pty/lib/conpty_console_list_agent.js +25 -0
  752. package/vendor/ink/node_modules/node-pty/lib/eventEmitter2.js +47 -0
  753. package/vendor/ink/node_modules/node-pty/lib/index.js +52 -0
  754. package/vendor/ink/node_modules/node-pty/lib/interfaces.js +7 -0
  755. package/vendor/ink/node_modules/node-pty/lib/shared/conout.js +11 -0
  756. package/vendor/ink/node_modules/node-pty/lib/terminal.js +190 -0
  757. package/vendor/ink/node_modules/node-pty/lib/types.js +7 -0
  758. package/vendor/ink/node_modules/node-pty/lib/unixTerminal.js +349 -0
  759. package/vendor/ink/node_modules/node-pty/lib/utils.js +39 -0
  760. package/vendor/ink/node_modules/node-pty/lib/windowsConoutConnection.js +125 -0
  761. package/vendor/ink/node_modules/node-pty/lib/windowsPtyAgent.js +287 -0
  762. package/vendor/ink/node_modules/node-pty/lib/windowsTerminal.js +201 -0
  763. package/vendor/ink/node_modules/node-pty/lib/worker/conoutSocketWorker.js +22 -0
  764. package/vendor/ink/node_modules/node-pty/package.json +65 -0
  765. package/vendor/ink/node_modules/node-pty/prebuilds/darwin-arm64/pty.node +0 -0
  766. package/vendor/ink/node_modules/node-pty/prebuilds/darwin-arm64/spawn-helper +0 -0
  767. package/vendor/ink/node_modules/node-pty/prebuilds/darwin-x64/pty.node +0 -0
  768. package/vendor/ink/node_modules/node-pty/prebuilds/darwin-x64/spawn-helper +0 -0
  769. package/vendor/ink/node_modules/node-pty/prebuilds/linux-arm64/pty.node +0 -0
  770. package/vendor/ink/node_modules/node-pty/prebuilds/linux-x64/pty.node +0 -0
  771. package/vendor/ink/node_modules/node-pty/prebuilds/win32-arm64/conpty/OpenConsole.exe +0 -0
  772. package/vendor/ink/node_modules/node-pty/prebuilds/win32-arm64/conpty/conpty.dll +0 -0
  773. package/vendor/ink/node_modules/node-pty/prebuilds/win32-arm64/conpty.node +0 -0
  774. package/vendor/ink/node_modules/node-pty/prebuilds/win32-arm64/conpty.pdb +0 -0
  775. package/vendor/ink/node_modules/node-pty/prebuilds/win32-arm64/conpty_console_list.node +0 -0
  776. package/vendor/ink/node_modules/node-pty/prebuilds/win32-arm64/conpty_console_list.pdb +0 -0
  777. package/vendor/ink/node_modules/node-pty/prebuilds/win32-x64/conpty/OpenConsole.exe +0 -0
  778. package/vendor/ink/node_modules/node-pty/prebuilds/win32-x64/conpty/conpty.dll +0 -0
  779. package/vendor/ink/node_modules/node-pty/prebuilds/win32-x64/conpty.node +0 -0
  780. package/vendor/ink/node_modules/node-pty/prebuilds/win32-x64/conpty.pdb +0 -0
  781. package/vendor/ink/node_modules/node-pty/prebuilds/win32-x64/conpty_console_list.node +0 -0
  782. package/vendor/ink/node_modules/node-pty/prebuilds/win32-x64/conpty_console_list.pdb +0 -0
  783. package/vendor/ink/node_modules/node-pty/scripts/post-install.js +76 -0
  784. package/vendor/ink/node_modules/node-pty/scripts/prebuild.js +34 -0
  785. package/vendor/ink/node_modules/node-pty/src/unix/pty.cc +875 -0
  786. package/vendor/ink/node_modules/node-pty/src/unix/spawn-helper.cc +23 -0
  787. package/vendor/ink/node_modules/node-pty/src/win/conpty.cc +582 -0
  788. package/vendor/ink/node_modules/node-pty/src/win/conpty.h +41 -0
  789. package/vendor/ink/node_modules/node-pty/src/win/conpty_console_list.cc +44 -0
  790. package/vendor/ink/node_modules/node-pty/src/win/path_util.cc +95 -0
  791. package/vendor/ink/node_modules/node-pty/src/win/path_util.h +26 -0
  792. package/vendor/ink/node_modules/node-pty/third_party/conpty/1.23.251008001/win10-arm64/OpenConsole.exe +0 -0
  793. package/vendor/ink/node_modules/node-pty/third_party/conpty/1.23.251008001/win10-arm64/conpty.dll +0 -0
  794. package/vendor/ink/node_modules/node-pty/third_party/conpty/1.23.251008001/win10-x64/OpenConsole.exe +0 -0
  795. package/vendor/ink/node_modules/node-pty/third_party/conpty/1.23.251008001/win10-x64/conpty.dll +0 -0
  796. package/vendor/ink/node_modules/node-pty/typings/node-pty.d.ts +215 -0
  797. package/vendor/ink/node_modules/undici-types/LICENSE +21 -0
  798. package/vendor/ink/node_modules/undici-types/README.md +6 -0
  799. package/vendor/ink/node_modules/undici-types/agent.d.ts +32 -0
  800. package/vendor/ink/node_modules/undici-types/api.d.ts +43 -0
  801. package/vendor/ink/node_modules/undici-types/balanced-pool.d.ts +30 -0
  802. package/vendor/ink/node_modules/undici-types/cache-interceptor.d.ts +173 -0
  803. package/vendor/ink/node_modules/undici-types/cache.d.ts +36 -0
  804. package/vendor/ink/node_modules/undici-types/client-stats.d.ts +15 -0
  805. package/vendor/ink/node_modules/undici-types/client.d.ts +108 -0
  806. package/vendor/ink/node_modules/undici-types/connector.d.ts +34 -0
  807. package/vendor/ink/node_modules/undici-types/content-type.d.ts +21 -0
  808. package/vendor/ink/node_modules/undici-types/cookies.d.ts +30 -0
  809. package/vendor/ink/node_modules/undici-types/diagnostics-channel.d.ts +74 -0
  810. package/vendor/ink/node_modules/undici-types/dispatcher.d.ts +276 -0
  811. package/vendor/ink/node_modules/undici-types/env-http-proxy-agent.d.ts +22 -0
  812. package/vendor/ink/node_modules/undici-types/errors.d.ts +161 -0
  813. package/vendor/ink/node_modules/undici-types/eventsource.d.ts +66 -0
  814. package/vendor/ink/node_modules/undici-types/fetch.d.ts +211 -0
  815. package/vendor/ink/node_modules/undici-types/formdata.d.ts +108 -0
  816. package/vendor/ink/node_modules/undici-types/global-dispatcher.d.ts +9 -0
  817. package/vendor/ink/node_modules/undici-types/global-origin.d.ts +7 -0
  818. package/vendor/ink/node_modules/undici-types/h2c-client.d.ts +73 -0
  819. package/vendor/ink/node_modules/undici-types/handlers.d.ts +15 -0
  820. package/vendor/ink/node_modules/undici-types/header.d.ts +160 -0
  821. package/vendor/ink/node_modules/undici-types/index.d.ts +88 -0
  822. package/vendor/ink/node_modules/undici-types/interceptors.d.ts +73 -0
  823. package/vendor/ink/node_modules/undici-types/mock-agent.d.ts +68 -0
  824. package/vendor/ink/node_modules/undici-types/mock-call-history.d.ts +111 -0
  825. package/vendor/ink/node_modules/undici-types/mock-client.d.ts +27 -0
  826. package/vendor/ink/node_modules/undici-types/mock-errors.d.ts +12 -0
  827. package/vendor/ink/node_modules/undici-types/mock-interceptor.d.ts +94 -0
  828. package/vendor/ink/node_modules/undici-types/mock-pool.d.ts +27 -0
  829. package/vendor/ink/node_modules/undici-types/package.json +55 -0
  830. package/vendor/ink/node_modules/undici-types/patch.d.ts +29 -0
  831. package/vendor/ink/node_modules/undici-types/pool-stats.d.ts +19 -0
  832. package/vendor/ink/node_modules/undici-types/pool.d.ts +41 -0
  833. package/vendor/ink/node_modules/undici-types/proxy-agent.d.ts +29 -0
  834. package/vendor/ink/node_modules/undici-types/readable.d.ts +68 -0
  835. package/vendor/ink/node_modules/undici-types/retry-agent.d.ts +8 -0
  836. package/vendor/ink/node_modules/undici-types/retry-handler.d.ts +125 -0
  837. package/vendor/ink/node_modules/undici-types/round-robin-pool.d.ts +41 -0
  838. package/vendor/ink/node_modules/undici-types/snapshot-agent.d.ts +109 -0
  839. package/vendor/ink/node_modules/undici-types/util.d.ts +18 -0
  840. package/vendor/ink/node_modules/undici-types/utility.d.ts +7 -0
  841. package/vendor/ink/node_modules/undici-types/webidl.d.ts +341 -0
  842. package/vendor/ink/node_modules/undici-types/websocket.d.ts +186 -0
  843. package/vendor/ink/package.json +201 -0
  844. package/vendor/ink/readme.md +2636 -0
  845. package/bin/swag-agent.js +0 -9
  846. package/dist/server/lib/pg-rate-limiter.d.ts +0 -21
  847. package/dist/server/lib/pg-rate-limiter.js +0 -86
@@ -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":"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","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":[]}