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":"anthropic.js","names":["Anthropic","sanitizeError","AGENT_DEFAULTS","getCapabilities","registerProvider","jsonResponse","writeSSEHeaders","COMPACTION_TRIGGER_TOKENS","compactionTriggerTokens","COMPACTION_TOTAL_BUDGET","compactionTotalBudget","DEFAULT_OUTPUT_TOKENS","MODEL_MAX_OUTPUT_TOKENS","AnthropicAdapter","name","handleStream","res","config","corsHeaders","model","messages","system","tools","max_tokens","temperature","stream","betas","context_management","thinking","tool_choice","documents","ANTHROPIC_API_KEY","process","env","anthropic","apiKey","apiParams","type","text","cache_control","length","map","t","description","slice","input_schema","undefined","effectiveBetas","includes","push","safeContextMgmt","edits","filtered","filter","e","console","log","response","beta","create","err","error","heartbeat","setInterval","writableEnded","write","event","JSON","stringify","headersSent","clearInterval","end","getThinkingConfig","enabled","budget_tokens","getMaxOutputTokens","agentMax","modelMax","Math","min","getContextManagement","keep","value","supportsCompaction","trigger","pause_after_compaction","instructions","getCompactionConfig","_model","triggerTokens","totalBudget","isNative"],"sources":["../../../src/server/providers/anthropic.ts"],"sourcesContent":["/**\n * Anthropic Provider Adapter — direct Anthropic API passthrough.\n *\n * Simplest adapter: system prompt gets cache_control blocks, tools get\n * { name, description, input_schema }, streaming events pass through as-is.\n *\n * Phase 7.1: Also encapsulates thinking config, context management,\n * output token limits, and compaction config for Anthropic/Claude models.\n */\n\nimport Anthropic from \"@anthropic-ai/sdk\";\nimport { sanitizeError, AGENT_DEFAULTS } from \"../../shared/agent-core.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 } from \"./shared.js\";\nimport type http from \"node:http\";\n\n// ============================================================================\n// CONSTANTS — Anthropic-specific model config\n// ============================================================================\n\nconst COMPACTION_TRIGGER_TOKENS = AGENT_DEFAULTS.compactionTriggerTokens;\nconst COMPACTION_TOTAL_BUDGET = AGENT_DEFAULTS.compactionTotalBudget;\nconst DEFAULT_OUTPUT_TOKENS = 16384; // Per-response cap (model max is separate)\n\nconst MODEL_MAX_OUTPUT_TOKENS: Record<string, number> = {\n \"claude-opus-4-6\": 128000,\n \"claude-sonnet-4-6\": 64000,\n \"claude-haiku-4-5-20251001\": 64000,\n \"claude-sonnet-4-5-20250929\": 64000,\n \"claude-opus-4-5-20251101\": 64000,\n \"claude-opus-4-1-20250805\": 32768,\n \"claude-sonnet-4-20250514\": 64000,\n \"claude-opus-4-20250514\": 32768,\n \"claude-3-7-sonnet-20250219\": 64000,\n \"claude-3-haiku-20240307\": 4096,\n};\n\n// ============================================================================\n// ADAPTER\n// ============================================================================\n\nexport class AnthropicAdapter implements ProviderAdapter {\n name = \"anthropic\";\n\n async handleStream(\n res: http.ServerResponse,\n config: ProviderStreamConfig,\n corsHeaders: Record<string, string>,\n ): Promise<void> {\n const {\n model, messages, system, tools, max_tokens, temperature,\n stream = true, betas, context_management, thinking, tool_choice, documents,\n } = config;\n\n const ANTHROPIC_API_KEY = process.env.ANTHROPIC_API_KEY!;\n const anthropic = new Anthropic({ apiKey: ANTHROPIC_API_KEY });\n\n const apiParams: Record<string, unknown> = { model, max_tokens, messages, stream: true };\n\n if (system) {\n if (typeof system === \"string\") {\n apiParams.system = [{ type: \"text\", text: system, cache_control: { type: \"ephemeral\" } }];\n } else {\n apiParams.system = system;\n }\n }\n if (tools?.length) {\n apiParams.tools = (tools as Array<Record<string, unknown>>).map((t: Record<string, unknown>) => ({\n name: t.name,\n description: typeof t.description === \"string\" ? (t.description as string).slice(0, 4096) : \"\",\n input_schema: t.input_schema,\n }));\n }\n if (temperature !== undefined) apiParams.temperature = temperature;\n\n // Citations API: add beta and documents when source documents are provided\n const effectiveBetas = betas?.length ? [...betas] : [];\n if (documents?.length) {\n if (!effectiveBetas.includes(\"citations-2025-04-15\")) {\n effectiveBetas.push(\"citations-2025-04-15\");\n }\n apiParams.documents = documents;\n }\n if (effectiveBetas.length) apiParams.betas = effectiveBetas;\n\n // Safety: strip clear_thinking_20251015 edits when thinking is not enabled.\n // Anthropic returns 400 if this strategy is present without thinking=enabled/adaptive.\n let safeContextMgmt = context_management;\n if (safeContextMgmt?.edits?.length && !thinking) {\n const filtered = safeContextMgmt.edits.filter((e: any) => e.type !== \"clear_thinking_20251015\");\n if (filtered.length !== safeContextMgmt.edits.length) {\n console.log(`[proxy] Stripped ${safeContextMgmt.edits.length - filtered.length} clear_thinking edit(s) — thinking not enabled`);\n safeContextMgmt = { ...safeContextMgmt, edits: filtered };\n }\n }\n if (safeContextMgmt?.edits?.length) apiParams.context_management = safeContextMgmt;\n if (thinking) apiParams.thinking = thinking;\n\n // Map tool_choice to Anthropic format\n if (tool_choice) {\n if (tool_choice === \"auto\") {\n apiParams.tool_choice = { type: \"auto\" };\n } else if (tool_choice === \"any\") {\n apiParams.tool_choice = { type: \"any\" };\n } else if (tool_choice === \"none\") {\n // \"none\" means no tools — remove tools from request\n delete apiParams.tools;\n } else if (typeof tool_choice === \"object\" && tool_choice.type === \"tool\") {\n apiParams.tool_choice = { type: \"tool\", name: tool_choice.name };\n }\n }\n\n if (!stream) {\n try {\n const response = effectiveBetas.length\n ? await anthropic.beta.messages.create({ ...apiParams, stream: false } as any)\n : await anthropic.messages.create({ ...apiParams, stream: false } as any);\n jsonResponse(res, 200, response, corsHeaders);\n } catch (err) {\n jsonResponse(res, 500, { error: sanitizeError(err) }, corsHeaders);\n }\n return;\n }\n\n // Streaming: defer SSE headers until stream is successfully created\n // so we can return proper HTTP errors if the initial API call fails.\n let heartbeat: ReturnType<typeof setInterval> | undefined;\n\n try {\n const response = effectiveBetas.length\n ? await anthropic.beta.messages.create({ ...apiParams, stream: true } as any)\n : await anthropic.messages.create(apiParams as 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 for await (const event of response as any) {\n res.write(`data: ${JSON.stringify(event)}\\n\\n`);\n }\n res.write(\"data: [DONE]\\n\\n\");\n } catch (err) {\n if (!res.headersSent) {\n // Haven't started streaming yet — return proper HTTP error\n jsonResponse(res, 502, { error: `anthropic error: ${sanitizeError(err)}` }, corsHeaders);\n } else {\n // Mid-stream failure — send error event so client doesn't hang\n res.write(`data: ${JSON.stringify({ type: \"error\", error: sanitizeError(err) })}\\n\\n`);\n res.write(\"data: [DONE]\\n\\n\");\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\n if (model.includes(\"opus-4-6\") || model.includes(\"sonnet-4-6\")) {\n return {\n thinking: { type: \"adaptive\" },\n beta: \"adaptive-thinking-2026-01-28\",\n };\n }\n\n // Sonnet 4.5/4.0 / Haiku: fixed budget\n return {\n thinking: { type: \"enabled\", budget_tokens: 10_000 },\n beta: \"interleaved-thinking-2025-05-14\",\n };\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 const edits: Array<Record<string, unknown>> = [];\n const betas: string[] = [\"context-management-2025-06-27\"];\n\n // Thinking block clearing — must come FIRST in edits array (API requirement).\n edits.push({\n type: \"clear_thinking_20251015\",\n keep: { type: \"thinking_turns\", value: 2 },\n });\n\n // Server-side compaction for models that support compact_20260112.\n const supportsCompaction = model.includes(\"opus-4-6\") || model.includes(\"sonnet-4-6\");\n if (supportsCompaction) {\n edits.push({\n type: \"compact_20260112\",\n trigger: { type: \"input_tokens\", value: COMPACTION_TRIGGER_TOKENS },\n pause_after_compaction: true,\n instructions: \"Summarize the conversation preserving: (1) task goals and constraints, (2) files created/modified with paths, (3) decisions made and rationale, (4) errors encountered and resolutions, (5) exact next steps. Be concise but preserve all state needed to continue work without repeating mistakes.\",\n });\n betas.push(\"compact-2026-01-12\");\n }\n\n edits.push({\n type: \"clear_tool_uses_20250919\",\n trigger: { type: \"input_tokens\", value: 80_000 },\n keep: { type: \"tool_uses\", value: 3 },\n });\n\n return { betas, config: { edits } };\n }\n\n getCompactionConfig(_model: string): CompactionConfig {\n return {\n triggerTokens: COMPACTION_TRIGGER_TOKENS,\n totalBudget: COMPACTION_TOTAL_BUDGET,\n isNative: true,\n };\n }\n\n getCapabilities(): ProviderCapabilities {\n return getCapabilities(\"anthropic\");\n }\n}\n\n// Auto-register on import\nregisterProvider(\"anthropic\", new AnthropicAdapter());\n"],"mappings":"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","ignoreList":[]}
@@ -7,6 +7,7 @@
7
7
  * Phase 7.1: Also encapsulates thinking config, context management,
8
8
  * output token limits, and compaction config for Bedrock Claude models.
9
9
  */
10
+
10
11
  import { BedrockRuntimeClient, InvokeModelWithResponseStreamCommand } from "@aws-sdk/client-bedrock-runtime";
11
12
  import { sanitizeError, AGENT_DEFAULTS } from "../../shared/agent-core.js";
12
13
  import { getCapabilities } from "../lib/provider-capabilities.js";
@@ -15,180 +16,238 @@ import { jsonResponse, writeSSEHeaders, resolveProviderCredentials } from "./sha
15
16
  // ============================================================================
16
17
  // CONSTANTS — Bedrock-specific model config
17
18
  // ============================================================================
19
+
18
20
  const COMPACTION_TRIGGER_TOKENS = AGENT_DEFAULTS.compactionTriggerTokens;
19
21
  const COMPACTION_TOTAL_BUDGET = AGENT_DEFAULTS.compactionTotalBudget;
20
22
  const DEFAULT_OUTPUT_TOKENS = 16384; // Per-response cap (model max is separate)
23
+
21
24
  const MODEL_MAX_OUTPUT_TOKENS = {
22
- "anthropic.claude-sonnet-4-6": 64000,
23
- "us.anthropic.claude-sonnet-4-20250514-v1:0": 64000,
24
- "us.anthropic.claude-sonnet-4-5-20250929-v1:0": 64000,
25
- "us.anthropic.claude-haiku-4-5-20251001-v1:0": 64000,
25
+ "anthropic.claude-sonnet-4-6": 64000,
26
+ "us.anthropic.claude-sonnet-4-20250514-v1:0": 64000,
27
+ "us.anthropic.claude-sonnet-4-5-20250929-v1:0": 64000,
28
+ "us.anthropic.claude-haiku-4-5-20251001-v1:0": 64000
26
29
  };
30
+
27
31
  // ============================================================================
28
32
  // ADAPTER
29
33
  // ============================================================================
34
+
30
35
  export class BedrockAdapter {
31
- name = "bedrock";
32
- async handleStream(res, config, corsHeaders) {
33
- const { model, messages, system, tools, max_tokens, temperature, thinking, storeId, tool_choice } = config;
34
- const creds = await resolveProviderCredentials("bedrock", storeId);
35
- if (!creds.bedrock) {
36
- jsonResponse(res, 422, { error: "Bedrock credentials not configured. Add aws_access_key_id and aws_secret_access_key to platform_secrets." }, corsHeaders);
37
- return;
38
- }
39
- const client = new BedrockRuntimeClient({
40
- region: creds.bedrock.region,
41
- credentials: {
42
- accessKeyId: creds.bedrock.accessKeyId,
43
- secretAccessKey: creds.bedrock.secretAccessKey,
44
- },
45
- });
46
- // Build Anthropic Messages API body (Bedrock Claude understands this natively)
47
- const bedrockBody = {
48
- anthropic_version: "bedrock-2023-10-16",
49
- max_tokens,
50
- messages,
51
- };
52
- if (system) {
53
- bedrockBody.system = typeof system === "string"
54
- ? [{ type: "text", text: system }]
55
- : system.map((s) => {
56
- // Strip cache_control — Bedrock doesn't support it
57
- const { cache_control: _, ...rest } = s;
58
- return rest;
59
- });
60
- }
61
- if (tools?.length) {
62
- bedrockBody.tools = tools.map((t) => ({
63
- name: t.name,
64
- description: typeof t.description === "string" ? t.description.slice(0, 4096) : "",
65
- input_schema: t.input_schema,
66
- }));
67
- }
68
- if (temperature !== undefined)
69
- bedrockBody.temperature = temperature;
70
- if (thinking)
71
- bedrockBody.thinking = thinking;
72
- // Map tool_choice to Anthropic/Bedrock format
73
- if (tool_choice) {
74
- if (tool_choice === "auto") {
75
- bedrockBody.tool_choice = { type: "auto" };
76
- }
77
- else if (tool_choice === "any") {
78
- bedrockBody.tool_choice = { type: "any" };
79
- }
80
- else if (tool_choice === "none") {
81
- // "none" means no tools — remove tools from request
82
- delete bedrockBody.tools;
83
- }
84
- else if (typeof tool_choice === "object" && tool_choice.type === "tool") {
85
- bedrockBody.tool_choice = { type: "tool", name: tool_choice.name };
86
- }
87
- }
88
- const command = new InvokeModelWithResponseStreamCommand({
89
- modelId: model,
90
- contentType: "application/json",
91
- accept: "application/json",
92
- body: new TextEncoder().encode(JSON.stringify(bedrockBody)),
93
- });
94
- // Stream SSE — defer headers until stream is successfully created
95
- // so we can return proper HTTP errors if the initial API call fails.
96
- let heartbeat;
97
- try {
98
- const response = await client.send(command);
99
- // Stream created successfully — now safe to commit to SSE
100
- writeSSEHeaders(res, corsHeaders);
101
- // Heartbeat keeps the connection alive and helps detect dead clients
102
- heartbeat = setInterval(() => {
103
- if (!res.writableEnded)
104
- res.write(":ping\n\n");
105
- }, 15_000);
106
- if (response.body) {
107
- for await (const event of response.body) {
108
- if (event.chunk?.bytes) {
109
- const chunk = JSON.parse(new TextDecoder().decode(event.chunk.bytes));
110
- res.write(`data: ${JSON.stringify(chunk)}\n\n`);
111
- }
112
- }
113
- }
114
- res.write("data: [DONE]\n\n");
115
- }
116
- catch (err) {
117
- if (!res.headersSent) {
118
- // Haven't started streaming yet — return proper HTTP error
119
- jsonResponse(res, 502, { error: `bedrock error: ${sanitizeError(err)}` }, corsHeaders);
120
- }
121
- else {
122
- // Mid-stream failure — send error event so client doesn't hang
123
- res.write(`data: ${JSON.stringify({ type: "error", error: sanitizeError(err) })}\n\n`);
124
- res.write("data: [DONE]\n\n");
125
- }
126
- }
127
- finally {
128
- if (heartbeat)
129
- clearInterval(heartbeat);
130
- }
131
- res.end();
36
+ name = "bedrock";
37
+ async handleStream(res, config, corsHeaders) {
38
+ const {
39
+ model,
40
+ messages,
41
+ system,
42
+ tools,
43
+ max_tokens,
44
+ temperature,
45
+ thinking,
46
+ storeId,
47
+ tool_choice
48
+ } = config;
49
+ const creds = await resolveProviderCredentials("bedrock", storeId);
50
+ if (!creds.bedrock) {
51
+ jsonResponse(res, 422, {
52
+ error: "Bedrock credentials not configured. Add aws_access_key_id and aws_secret_access_key to platform_secrets."
53
+ }, corsHeaders);
54
+ return;
132
55
  }
133
- // ---- Provider-specific config methods ----
134
- // Bedrock uses same thinking/context management as Anthropic (it's Claude underneath)
135
- getThinkingConfig(model, enabled) {
136
- if (!enabled) {
137
- return { thinking: { type: "disabled" }, beta: "" };
138
- }
139
- // Bedrock model IDs contain the Claude model name
140
- if (model.includes("opus-4-6") || model.includes("sonnet-4-6")) {
141
- return {
142
- thinking: { type: "adaptive" },
143
- beta: "adaptive-thinking-2026-01-28",
144
- };
145
- }
146
- return {
147
- thinking: { type: "enabled", budget_tokens: 10_000 },
148
- beta: "interleaved-thinking-2025-05-14",
149
- };
56
+ const client = new BedrockRuntimeClient({
57
+ region: creds.bedrock.region,
58
+ credentials: {
59
+ accessKeyId: creds.bedrock.accessKeyId,
60
+ secretAccessKey: creds.bedrock.secretAccessKey
61
+ }
62
+ });
63
+
64
+ // Build Anthropic Messages API body (Bedrock Claude understands this natively)
65
+ const bedrockBody = {
66
+ anthropic_version: "bedrock-2023-10-16",
67
+ max_tokens,
68
+ messages
69
+ };
70
+ if (system) {
71
+ bedrockBody.system = typeof system === "string" ? [{
72
+ type: "text",
73
+ text: system
74
+ }] : system.map(s => {
75
+ // Strip cache_control — Bedrock doesn't support it
76
+ const {
77
+ cache_control: _,
78
+ ...rest
79
+ } = s;
80
+ return rest;
81
+ });
150
82
  }
151
- getMaxOutputTokens(model, agentMax) {
152
- const modelMax = MODEL_MAX_OUTPUT_TOKENS[model] ?? DEFAULT_OUTPUT_TOKENS;
153
- if (agentMax)
154
- return Math.min(agentMax, modelMax);
155
- return Math.min(DEFAULT_OUTPUT_TOKENS, modelMax);
83
+ if (tools?.length) {
84
+ bedrockBody.tools = tools.map(t => ({
85
+ name: t.name,
86
+ description: typeof t.description === "string" ? t.description.slice(0, 4096) : "",
87
+ input_schema: t.input_schema
88
+ }));
89
+ }
90
+ if (temperature !== undefined) bedrockBody.temperature = temperature;
91
+ if (thinking) bedrockBody.thinking = thinking;
92
+
93
+ // Map tool_choice to Anthropic/Bedrock format
94
+ if (tool_choice) {
95
+ if (tool_choice === "auto") {
96
+ bedrockBody.tool_choice = {
97
+ type: "auto"
98
+ };
99
+ } else if (tool_choice === "any") {
100
+ bedrockBody.tool_choice = {
101
+ type: "any"
102
+ };
103
+ } else if (tool_choice === "none") {
104
+ // "none" means no tools — remove tools from request
105
+ delete bedrockBody.tools;
106
+ } else if (typeof tool_choice === "object" && tool_choice.type === "tool") {
107
+ bedrockBody.tool_choice = {
108
+ type: "tool",
109
+ name: tool_choice.name
110
+ };
111
+ }
156
112
  }
157
- getContextManagement(model) {
158
- // Bedrock Claude supports the same context management as direct Anthropic
159
- const edits = [];
160
- const betas = ["context-management-2025-06-27"];
161
- edits.push({
162
- type: "clear_thinking_20251015",
163
- keep: { type: "thinking_turns", value: 2 },
164
- });
165
- const supportsCompaction = model.includes("opus-4-6") || model.includes("sonnet-4-6");
166
- if (supportsCompaction) {
167
- edits.push({
168
- type: "compact_20260112",
169
- trigger: { type: "input_tokens", value: COMPACTION_TRIGGER_TOKENS },
170
- pause_after_compaction: true,
171
- instructions: "Summarize the conversation preserving: (1) task goals and constraints, (2) files created/modified with paths, (3) decisions made and rationale, (4) errors encountered and resolutions, (5) exact next steps. Be concise but preserve all state needed to continue work without repeating mistakes.",
172
- });
173
- betas.push("compact-2026-01-12");
113
+ const command = new InvokeModelWithResponseStreamCommand({
114
+ modelId: model,
115
+ contentType: "application/json",
116
+ accept: "application/json",
117
+ body: new TextEncoder().encode(JSON.stringify(bedrockBody))
118
+ });
119
+
120
+ // Stream SSE — defer headers until stream is successfully created
121
+ // so we can return proper HTTP errors if the initial API call fails.
122
+ let heartbeat;
123
+ try {
124
+ const response = await client.send(command);
125
+
126
+ // Stream created successfully — now safe to commit to SSE
127
+ writeSSEHeaders(res, corsHeaders);
128
+
129
+ // Heartbeat keeps the connection alive and helps detect dead clients
130
+ heartbeat = setInterval(() => {
131
+ if (!res.writableEnded) res.write(":ping\n\n");
132
+ }, 15_000);
133
+ if (response.body) {
134
+ for await (const event of response.body) {
135
+ if (event.chunk?.bytes) {
136
+ const chunk = JSON.parse(new TextDecoder().decode(event.chunk.bytes));
137
+ res.write(`data: ${JSON.stringify(chunk)}\n\n`);
138
+ }
174
139
  }
175
- edits.push({
176
- type: "clear_tool_uses_20250919",
177
- trigger: { type: "input_tokens", value: 80_000 },
178
- keep: { type: "tool_uses", value: 3 },
179
- });
180
- return { betas, config: { edits } };
140
+ }
141
+ res.write("data: [DONE]\n\n");
142
+ } catch (err) {
143
+ if (!res.headersSent) {
144
+ // Haven't started streaming yet — return proper HTTP error
145
+ jsonResponse(res, 502, {
146
+ error: `bedrock error: ${sanitizeError(err)}`
147
+ }, corsHeaders);
148
+ } else {
149
+ // Mid-stream failure — send error event so client doesn't hang
150
+ res.write(`data: ${JSON.stringify({
151
+ type: "error",
152
+ error: sanitizeError(err)
153
+ })}\n\n`);
154
+ res.write("data: [DONE]\n\n");
155
+ }
156
+ } finally {
157
+ if (heartbeat) clearInterval(heartbeat);
181
158
  }
182
- getCompactionConfig(_model) {
183
- return {
184
- triggerTokens: COMPACTION_TRIGGER_TOKENS,
185
- totalBudget: COMPACTION_TOTAL_BUDGET,
186
- isNative: true,
187
- };
159
+ res.end();
160
+ }
161
+
162
+ // ---- Provider-specific config methods ----
163
+ // Bedrock uses same thinking/context management as Anthropic (it's Claude underneath)
164
+
165
+ getThinkingConfig(model, enabled) {
166
+ if (!enabled) {
167
+ return {
168
+ thinking: {
169
+ type: "disabled"
170
+ },
171
+ beta: ""
172
+ };
173
+ }
174
+
175
+ // Bedrock model IDs contain the Claude model name
176
+ if (model.includes("opus-4-6") || model.includes("sonnet-4-6")) {
177
+ return {
178
+ thinking: {
179
+ type: "adaptive"
180
+ },
181
+ beta: "adaptive-thinking-2026-01-28"
182
+ };
188
183
  }
189
- getCapabilities() {
190
- return getCapabilities("bedrock");
184
+ return {
185
+ thinking: {
186
+ type: "enabled",
187
+ budget_tokens: 10_000
188
+ },
189
+ beta: "interleaved-thinking-2025-05-14"
190
+ };
191
+ }
192
+ getMaxOutputTokens(model, agentMax) {
193
+ const modelMax = MODEL_MAX_OUTPUT_TOKENS[model] ?? DEFAULT_OUTPUT_TOKENS;
194
+ if (agentMax) return Math.min(agentMax, modelMax);
195
+ return Math.min(DEFAULT_OUTPUT_TOKENS, modelMax);
196
+ }
197
+ getContextManagement(model) {
198
+ // Bedrock Claude supports the same context management as direct Anthropic
199
+ const edits = [];
200
+ const betas = ["context-management-2025-06-27"];
201
+ edits.push({
202
+ type: "clear_thinking_20251015",
203
+ keep: {
204
+ type: "thinking_turns",
205
+ value: 2
206
+ }
207
+ });
208
+ const supportsCompaction = model.includes("opus-4-6") || model.includes("sonnet-4-6");
209
+ if (supportsCompaction) {
210
+ edits.push({
211
+ type: "compact_20260112",
212
+ trigger: {
213
+ type: "input_tokens",
214
+ value: COMPACTION_TRIGGER_TOKENS
215
+ },
216
+ pause_after_compaction: true,
217
+ instructions: "Summarize the conversation preserving: (1) task goals and constraints, (2) files created/modified with paths, (3) decisions made and rationale, (4) errors encountered and resolutions, (5) exact next steps. Be concise but preserve all state needed to continue work without repeating mistakes."
218
+ });
219
+ betas.push("compact-2026-01-12");
191
220
  }
221
+ edits.push({
222
+ type: "clear_tool_uses_20250919",
223
+ trigger: {
224
+ type: "input_tokens",
225
+ value: 80_000
226
+ },
227
+ keep: {
228
+ type: "tool_uses",
229
+ value: 3
230
+ }
231
+ });
232
+ return {
233
+ betas,
234
+ config: {
235
+ edits
236
+ }
237
+ };
238
+ }
239
+ getCompactionConfig(_model) {
240
+ return {
241
+ triggerTokens: COMPACTION_TRIGGER_TOKENS,
242
+ totalBudget: COMPACTION_TOTAL_BUDGET,
243
+ isNative: true
244
+ };
245
+ }
246
+ getCapabilities() {
247
+ return getCapabilities("bedrock");
248
+ }
192
249
  }
250
+
193
251
  // Auto-register on import
194
252
  registerProvider("bedrock", new BedrockAdapter());
253
+ //# sourceMappingURL=bedrock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bedrock.js","names":["BedrockRuntimeClient","InvokeModelWithResponseStreamCommand","sanitizeError","AGENT_DEFAULTS","getCapabilities","registerProvider","jsonResponse","writeSSEHeaders","resolveProviderCredentials","COMPACTION_TRIGGER_TOKENS","compactionTriggerTokens","COMPACTION_TOTAL_BUDGET","compactionTotalBudget","DEFAULT_OUTPUT_TOKENS","MODEL_MAX_OUTPUT_TOKENS","BedrockAdapter","name","handleStream","res","config","corsHeaders","model","messages","system","tools","max_tokens","temperature","thinking","storeId","tool_choice","creds","bedrock","error","client","region","credentials","accessKeyId","secretAccessKey","bedrockBody","anthropic_version","type","text","map","s","cache_control","_","rest","length","t","description","slice","input_schema","undefined","command","modelId","contentType","accept","body","TextEncoder","encode","JSON","stringify","heartbeat","response","send","setInterval","writableEnded","write","event","chunk","bytes","parse","TextDecoder","decode","err","headersSent","clearInterval","end","getThinkingConfig","enabled","beta","includes","budget_tokens","getMaxOutputTokens","agentMax","modelMax","Math","min","getContextManagement","edits","betas","push","keep","value","supportsCompaction","trigger","pause_after_compaction","instructions","getCompactionConfig","_model","triggerTokens","totalBudget","isNative"],"sources":["../../../src/server/providers/bedrock.ts"],"sourcesContent":["/**\n * Bedrock Provider Adapter — AWS Bedrock Claude streaming.\n *\n * Similar to Anthropic but: strips cache_control from system blocks,\n * uses AWS SDK credentials, parses event.chunk.bytes for streaming.\n *\n * Phase 7.1: Also encapsulates thinking config, context management,\n * output token limits, and compaction config for Bedrock Claude models.\n */\n\nimport { BedrockRuntimeClient, InvokeModelWithResponseStreamCommand } from \"@aws-sdk/client-bedrock-runtime\";\nimport { sanitizeError, AGENT_DEFAULTS } from \"../../shared/agent-core.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, resolveProviderCredentials } from \"./shared.js\";\nimport type http from \"node:http\";\n\n// ============================================================================\n// CONSTANTS — Bedrock-specific model config\n// ============================================================================\n\nconst COMPACTION_TRIGGER_TOKENS = AGENT_DEFAULTS.compactionTriggerTokens;\nconst COMPACTION_TOTAL_BUDGET = AGENT_DEFAULTS.compactionTotalBudget;\nconst DEFAULT_OUTPUT_TOKENS = 16384; // Per-response cap (model max is separate)\n\nconst MODEL_MAX_OUTPUT_TOKENS: Record<string, number> = {\n \"anthropic.claude-sonnet-4-6\": 64000,\n \"us.anthropic.claude-sonnet-4-20250514-v1:0\": 64000,\n \"us.anthropic.claude-sonnet-4-5-20250929-v1:0\": 64000,\n \"us.anthropic.claude-haiku-4-5-20251001-v1:0\": 64000,\n};\n\n// ============================================================================\n// ADAPTER\n// ============================================================================\n\nexport class BedrockAdapter implements ProviderAdapter {\n name = \"bedrock\";\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, thinking, storeId, tool_choice } = config;\n\n const creds = await resolveProviderCredentials(\"bedrock\", storeId);\n if (!creds.bedrock) {\n jsonResponse(res, 422, { error: \"Bedrock credentials not configured. Add aws_access_key_id and aws_secret_access_key to platform_secrets.\" }, corsHeaders);\n return;\n }\n\n const client = new BedrockRuntimeClient({\n region: creds.bedrock.region,\n credentials: {\n accessKeyId: creds.bedrock.accessKeyId,\n secretAccessKey: creds.bedrock.secretAccessKey,\n },\n });\n\n // Build Anthropic Messages API body (Bedrock Claude understands this natively)\n const bedrockBody: Record<string, unknown> = {\n anthropic_version: \"bedrock-2023-10-16\",\n max_tokens,\n messages,\n };\n\n if (system) {\n bedrockBody.system = typeof system === \"string\"\n ? [{ type: \"text\", text: system }]\n : (system as any[]).map((s: any) => {\n // Strip cache_control — Bedrock doesn't support it\n const { cache_control: _, ...rest } = s;\n return rest;\n });\n }\n if (tools?.length) {\n bedrockBody.tools = (tools as Array<Record<string, unknown>>).map((t: Record<string, unknown>) => ({\n name: t.name,\n description: typeof t.description === \"string\" ? (t.description as string).slice(0, 4096) : \"\",\n input_schema: t.input_schema,\n }));\n }\n if (temperature !== undefined) bedrockBody.temperature = temperature;\n if (thinking) bedrockBody.thinking = thinking;\n\n // Map tool_choice to Anthropic/Bedrock format\n if (tool_choice) {\n if (tool_choice === \"auto\") {\n bedrockBody.tool_choice = { type: \"auto\" };\n } else if (tool_choice === \"any\") {\n bedrockBody.tool_choice = { type: \"any\" };\n } else if (tool_choice === \"none\") {\n // \"none\" means no tools — remove tools from request\n delete bedrockBody.tools;\n } else if (typeof tool_choice === \"object\" && tool_choice.type === \"tool\") {\n bedrockBody.tool_choice = { type: \"tool\", name: tool_choice.name };\n }\n }\n\n const command = new InvokeModelWithResponseStreamCommand({\n modelId: model,\n contentType: \"application/json\",\n accept: \"application/json\",\n body: new TextEncoder().encode(JSON.stringify(bedrockBody)),\n });\n\n // Stream SSE — defer headers until stream is successfully created\n // so we can return proper HTTP errors if the initial API call fails.\n let heartbeat: ReturnType<typeof setInterval> | undefined;\n\n try {\n const response = await client.send(command);\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 if (response.body) {\n for await (const event of response.body) {\n if (event.chunk?.bytes) {\n const chunk = JSON.parse(new TextDecoder().decode(event.chunk.bytes));\n res.write(`data: ${JSON.stringify(chunk)}\\n\\n`);\n }\n }\n }\n res.write(\"data: [DONE]\\n\\n\");\n } catch (err) {\n if (!res.headersSent) {\n // Haven't started streaming yet — return proper HTTP error\n jsonResponse(res, 502, { error: `bedrock error: ${sanitizeError(err)}` }, corsHeaders);\n } else {\n // Mid-stream failure — send error event so client doesn't hang\n res.write(`data: ${JSON.stringify({ type: \"error\", error: sanitizeError(err) })}\\n\\n`);\n res.write(\"data: [DONE]\\n\\n\");\n }\n } finally {\n if (heartbeat) clearInterval(heartbeat);\n }\n res.end();\n }\n\n // ---- Provider-specific config methods ----\n // Bedrock uses same thinking/context management as Anthropic (it's Claude underneath)\n\n getThinkingConfig(model: string, enabled: boolean): ThinkingConfigResult {\n if (!enabled) {\n return { thinking: { type: \"disabled\" }, beta: \"\" };\n }\n\n // Bedrock model IDs contain the Claude model name\n if (model.includes(\"opus-4-6\") || model.includes(\"sonnet-4-6\")) {\n return {\n thinking: { type: \"adaptive\" },\n beta: \"adaptive-thinking-2026-01-28\",\n };\n }\n\n return {\n thinking: { type: \"enabled\", budget_tokens: 10_000 },\n beta: \"interleaved-thinking-2025-05-14\",\n };\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 // Bedrock Claude supports the same context management as direct Anthropic\n const edits: Array<Record<string, unknown>> = [];\n const betas: string[] = [\"context-management-2025-06-27\"];\n\n edits.push({\n type: \"clear_thinking_20251015\",\n keep: { type: \"thinking_turns\", value: 2 },\n });\n\n const supportsCompaction = model.includes(\"opus-4-6\") || model.includes(\"sonnet-4-6\");\n if (supportsCompaction) {\n edits.push({\n type: \"compact_20260112\",\n trigger: { type: \"input_tokens\", value: COMPACTION_TRIGGER_TOKENS },\n pause_after_compaction: true,\n instructions: \"Summarize the conversation preserving: (1) task goals and constraints, (2) files created/modified with paths, (3) decisions made and rationale, (4) errors encountered and resolutions, (5) exact next steps. Be concise but preserve all state needed to continue work without repeating mistakes.\",\n });\n betas.push(\"compact-2026-01-12\");\n }\n\n edits.push({\n type: \"clear_tool_uses_20250919\",\n trigger: { type: \"input_tokens\", value: 80_000 },\n keep: { type: \"tool_uses\", value: 3 },\n });\n\n return { betas, config: { edits } };\n }\n\n getCompactionConfig(_model: string): CompactionConfig {\n return {\n triggerTokens: COMPACTION_TRIGGER_TOKENS,\n totalBudget: COMPACTION_TOTAL_BUDGET,\n isNative: true,\n };\n }\n\n getCapabilities(): ProviderCapabilities {\n return getCapabilities(\"bedrock\");\n }\n}\n\n// Auto-register on import\nregisterProvider(\"bedrock\", new BedrockAdapter());\n"],"mappings":"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","ignoreList":[]}