@draht/ai 2026.7.13-1 → 2026.7.30

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 (508) hide show
  1. package/dist/api/anthropic-messages.d.ts.map +1 -1
  2. package/dist/api/anthropic-messages.js +129 -57
  3. package/dist/api/anthropic-messages.js.map +1 -1
  4. package/dist/api/azure-openai-responses.d.ts.map +1 -1
  5. package/dist/api/azure-openai-responses.js +26 -9
  6. package/dist/api/azure-openai-responses.js.map +1 -1
  7. package/dist/api/bedrock-converse-stream.d.ts.map +1 -1
  8. package/dist/api/bedrock-converse-stream.js +54 -23
  9. package/dist/api/bedrock-converse-stream.js.map +1 -1
  10. package/dist/api/constrained-sampling.d.ts +17 -0
  11. package/dist/api/constrained-sampling.d.ts.map +1 -0
  12. package/dist/api/constrained-sampling.js +100 -0
  13. package/dist/api/constrained-sampling.js.map +1 -0
  14. package/dist/api/google-generative-ai.d.ts.map +1 -1
  15. package/dist/api/google-generative-ai.js +19 -13
  16. package/dist/api/google-generative-ai.js.map +1 -1
  17. package/dist/api/google-shared.d.ts +4 -3
  18. package/dist/api/google-shared.d.ts.map +1 -1
  19. package/dist/api/google-shared.js +17 -3
  20. package/dist/api/google-shared.js.map +1 -1
  21. package/dist/api/google-vertex.d.ts.map +1 -1
  22. package/dist/api/google-vertex.js +19 -13
  23. package/dist/api/google-vertex.js.map +1 -1
  24. package/dist/api/lazy.d.ts.map +1 -1
  25. package/dist/api/lazy.js +9 -10
  26. package/dist/api/lazy.js.map +1 -1
  27. package/dist/api/mistral-conversations.d.ts.map +1 -1
  28. package/dist/api/mistral-conversations.js +32 -19
  29. package/dist/api/mistral-conversations.js.map +1 -1
  30. package/dist/api/openai-codex-responses.d.ts +1 -0
  31. package/dist/api/openai-codex-responses.d.ts.map +1 -1
  32. package/dist/api/openai-codex-responses.js +88 -38
  33. package/dist/api/openai-codex-responses.js.map +1 -1
  34. package/dist/api/openai-completions.d.ts +8 -8
  35. package/dist/api/openai-completions.d.ts.map +1 -1
  36. package/dist/api/openai-completions.js +216 -46
  37. package/dist/api/openai-completions.js.map +1 -1
  38. package/dist/api/openai-responses-shared.d.ts +8 -1
  39. package/dist/api/openai-responses-shared.d.ts.map +1 -1
  40. package/dist/api/openai-responses-shared.js +233 -67
  41. package/dist/api/openai-responses-shared.js.map +1 -1
  42. package/dist/api/openai-responses.d.ts +1 -0
  43. package/dist/api/openai-responses.d.ts.map +1 -1
  44. package/dist/api/openai-responses.js +60 -16
  45. package/dist/api/openai-responses.js.map +1 -1
  46. package/dist/api/openrouter-images.d.ts.map +1 -1
  47. package/dist/api/openrouter-images.js +11 -5
  48. package/dist/api/openrouter-images.js.map +1 -1
  49. package/dist/api/pi-messages.d.ts +97 -0
  50. package/dist/api/pi-messages.d.ts.map +1 -0
  51. package/dist/api/pi-messages.js +305 -0
  52. package/dist/api/pi-messages.js.map +1 -0
  53. package/dist/api/pi-messages.lazy.d.ts +3 -0
  54. package/dist/api/pi-messages.lazy.d.ts.map +1 -0
  55. package/dist/api/pi-messages.lazy.js +3 -0
  56. package/dist/api/pi-messages.lazy.js.map +1 -0
  57. package/dist/api/simple-options.d.ts.map +1 -1
  58. package/dist/api/simple-options.js +1 -0
  59. package/dist/api/simple-options.js.map +1 -1
  60. package/dist/auth/credential-store.d.ts +2 -1
  61. package/dist/auth/credential-store.d.ts.map +1 -1
  62. package/dist/auth/credential-store.js +3 -0
  63. package/dist/auth/credential-store.js.map +1 -1
  64. package/dist/auth/helpers.d.ts +1 -0
  65. package/dist/auth/helpers.d.ts.map +1 -1
  66. package/dist/auth/helpers.js +7 -5
  67. package/dist/auth/helpers.js.map +1 -1
  68. package/dist/auth/oauth/anthropic.d.ts +9 -0
  69. package/dist/auth/oauth/anthropic.d.ts.map +1 -0
  70. package/dist/{utils → auth}/oauth/anthropic.js +51 -116
  71. package/dist/auth/oauth/anthropic.js.map +1 -0
  72. package/dist/auth/oauth/device-code.d.ts.map +1 -0
  73. package/dist/auth/oauth/device-code.js.map +1 -0
  74. package/dist/auth/oauth/github-copilot.d.ts +6 -0
  75. package/dist/auth/oauth/github-copilot.d.ts.map +1 -0
  76. package/dist/{utils → auth}/oauth/github-copilot.js +18 -77
  77. package/dist/auth/oauth/github-copilot.js.map +1 -0
  78. package/dist/auth/oauth/google-antigravity.d.ts +21 -0
  79. package/dist/auth/oauth/google-antigravity.d.ts.map +1 -0
  80. package/dist/{utils → auth}/oauth/google-antigravity.js +79 -79
  81. package/dist/auth/oauth/google-antigravity.js.map +1 -0
  82. package/dist/auth/oauth/google-gemini-cli.d.ts +21 -0
  83. package/dist/auth/oauth/google-gemini-cli.d.ts.map +1 -0
  84. package/dist/{utils → auth}/oauth/google-gemini-cli.js +79 -79
  85. package/dist/auth/oauth/google-gemini-cli.js.map +1 -0
  86. package/dist/auth/oauth/kimi-coding.d.ts +10 -0
  87. package/dist/auth/oauth/kimi-coding.d.ts.map +1 -0
  88. package/dist/auth/oauth/kimi-coding.js +249 -0
  89. package/dist/auth/oauth/kimi-coding.js.map +1 -0
  90. package/dist/auth/oauth/load.d.ts +33 -0
  91. package/dist/auth/oauth/load.d.ts.map +1 -0
  92. package/dist/auth/oauth/load.js +74 -0
  93. package/dist/auth/oauth/load.js.map +1 -0
  94. package/dist/auth/oauth/oauth-page.d.ts.map +1 -0
  95. package/dist/auth/oauth/oauth-page.js.map +1 -0
  96. package/dist/auth/oauth/openai-codex.d.ts +9 -0
  97. package/dist/auth/oauth/openai-codex.d.ts.map +1 -0
  98. package/dist/{utils → auth}/oauth/openai-codex.js +61 -155
  99. package/dist/auth/oauth/openai-codex.js.map +1 -0
  100. package/dist/auth/oauth/opencode-go.d.ts +14 -0
  101. package/dist/auth/oauth/opencode-go.d.ts.map +1 -0
  102. package/dist/auth/oauth/opencode-go.js +41 -0
  103. package/dist/auth/oauth/opencode-go.js.map +1 -0
  104. package/dist/auth/oauth/openrouter.d.ts +15 -0
  105. package/dist/auth/oauth/openrouter.d.ts.map +1 -0
  106. package/dist/auth/oauth/openrouter.js +277 -0
  107. package/dist/auth/oauth/openrouter.js.map +1 -0
  108. package/dist/auth/oauth/pkce.d.ts.map +1 -0
  109. package/dist/auth/oauth/pkce.js.map +1 -0
  110. package/dist/auth/oauth/radius.d.ts +17 -0
  111. package/dist/auth/oauth/radius.d.ts.map +1 -0
  112. package/dist/auth/oauth/radius.js +318 -0
  113. package/dist/auth/oauth/radius.js.map +1 -0
  114. package/dist/auth/oauth/xai.d.ts +17 -0
  115. package/dist/auth/oauth/xai.d.ts.map +1 -0
  116. package/dist/{utils → auth}/oauth/xai.js +54 -89
  117. package/dist/auth/oauth/xai.js.map +1 -0
  118. package/dist/auth/resolve.d.ts +4 -4
  119. package/dist/auth/resolve.d.ts.map +1 -1
  120. package/dist/auth/resolve.js +36 -16
  121. package/dist/auth/resolve.js.map +1 -1
  122. package/dist/auth/types.d.ts +49 -10
  123. package/dist/auth/types.d.ts.map +1 -1
  124. package/dist/auth/types.js.map +1 -1
  125. package/dist/bun-oauth.d.ts +3 -0
  126. package/dist/bun-oauth.d.ts.map +1 -0
  127. package/dist/bun-oauth.js +27 -0
  128. package/dist/bun-oauth.js.map +1 -0
  129. package/dist/cli.js +58 -76
  130. package/dist/cli.js.map +1 -1
  131. package/dist/compat/extension-oauth-types.d.ts +39 -0
  132. package/dist/compat/extension-oauth-types.d.ts.map +1 -0
  133. package/dist/compat/extension-oauth-types.js +2 -0
  134. package/dist/compat/extension-oauth-types.js.map +1 -0
  135. package/dist/compat.d.ts +2 -0
  136. package/dist/compat.d.ts.map +1 -1
  137. package/dist/compat.js +25 -8
  138. package/dist/compat.js.map +1 -1
  139. package/dist/env-api-keys.d.ts +3 -0
  140. package/dist/env-api-keys.d.ts.map +1 -1
  141. package/dist/env-api-keys.js +12 -3
  142. package/dist/env-api-keys.js.map +1 -1
  143. package/dist/image-models.generated.d.ts +75 -0
  144. package/dist/image-models.generated.d.ts.map +1 -1
  145. package/dist/image-models.generated.js +251 -176
  146. package/dist/image-models.generated.js.map +1 -1
  147. package/dist/images-models.d.ts +4 -2
  148. package/dist/images-models.d.ts.map +1 -1
  149. package/dist/images-models.js +5 -4
  150. package/dist/images-models.js.map +1 -1
  151. package/dist/index.d.ts +5 -1
  152. package/dist/index.d.ts.map +1 -1
  153. package/dist/index.js +3 -0
  154. package/dist/index.js.map +1 -1
  155. package/dist/model-catalog.d.ts +17 -0
  156. package/dist/model-catalog.d.ts.map +1 -0
  157. package/dist/model-catalog.js +4 -0
  158. package/dist/model-catalog.js.map +1 -0
  159. package/dist/models-store.d.ts +32 -0
  160. package/dist/models-store.d.ts.map +1 -0
  161. package/dist/models-store.js +16 -0
  162. package/dist/models-store.js.map +1 -0
  163. package/dist/models.d.ts +66 -30
  164. package/dist/models.d.ts.map +1 -1
  165. package/dist/models.generated.d.ts +74 -21970
  166. package/dist/models.generated.d.ts.map +1 -1
  167. package/dist/models.generated.js +4 -0
  168. package/dist/models.generated.js.map +1 -1
  169. package/dist/models.js +213 -29
  170. package/dist/models.js.map +1 -1
  171. package/dist/oauth.d.ts +2 -1
  172. package/dist/oauth.d.ts.map +1 -1
  173. package/dist/oauth.js +1 -1
  174. package/dist/oauth.js.map +1 -1
  175. package/dist/providers/all.d.ts +13 -6
  176. package/dist/providers/all.d.ts.map +1 -1
  177. package/dist/providers/all.js +13 -0
  178. package/dist/providers/all.js.map +1 -1
  179. package/dist/providers/amazon-bedrock.d.ts.map +1 -1
  180. package/dist/providers/amazon-bedrock.js +54 -8
  181. package/dist/providers/amazon-bedrock.js.map +1 -1
  182. package/dist/providers/amazon-bedrock.models.d.ts +3 -1931
  183. package/dist/providers/amazon-bedrock.models.d.ts.map +1 -1
  184. package/dist/providers/amazon-bedrock.models.js +3 -1838
  185. package/dist/providers/amazon-bedrock.models.js.map +1 -1
  186. package/dist/providers/ant-ling.models.d.ts +3 -85
  187. package/dist/providers/ant-ling.models.d.ts.map +1 -1
  188. package/dist/providers/ant-ling.models.js +3 -57
  189. package/dist/providers/ant-ling.models.js.map +1 -1
  190. package/dist/providers/anthropic.d.ts.map +1 -1
  191. package/dist/providers/anthropic.js +31 -4
  192. package/dist/providers/anthropic.js.map +1 -1
  193. package/dist/providers/anthropic.models.d.ts +3 -283
  194. package/dist/providers/anthropic.models.d.ts.map +1 -1
  195. package/dist/providers/anthropic.models.js +3 -252
  196. package/dist/providers/anthropic.models.js.map +1 -1
  197. package/dist/providers/azure-openai-responses.models.d.ts +3 -886
  198. package/dist/providers/azure-openai-responses.models.d.ts.map +1 -1
  199. package/dist/providers/azure-openai-responses.models.js +3 -811
  200. package/dist/providers/azure-openai-responses.models.js.map +1 -1
  201. package/dist/providers/cerebras.models.d.ts +3 -65
  202. package/dist/providers/cerebras.models.d.ts.map +1 -1
  203. package/dist/providers/cerebras.models.js +3 -56
  204. package/dist/providers/cerebras.models.js.map +1 -1
  205. package/dist/providers/cloudflare-ai-gateway.d.ts.map +1 -1
  206. package/dist/providers/cloudflare-ai-gateway.js +4 -3
  207. package/dist/providers/cloudflare-ai-gateway.js.map +1 -1
  208. package/dist/providers/cloudflare-ai-gateway.models.d.ts +3 -887
  209. package/dist/providers/cloudflare-ai-gateway.models.d.ts.map +1 -1
  210. package/dist/providers/cloudflare-ai-gateway.models.js +3 -755
  211. package/dist/providers/cloudflare-ai-gateway.models.js.map +1 -1
  212. package/dist/providers/cloudflare-auth.d.ts.map +1 -1
  213. package/dist/providers/cloudflare-auth.js +22 -26
  214. package/dist/providers/cloudflare-auth.js.map +1 -1
  215. package/dist/providers/cloudflare-stream.d.ts +8 -0
  216. package/dist/providers/cloudflare-stream.d.ts.map +1 -0
  217. package/dist/providers/cloudflare-stream.js +21 -0
  218. package/dist/providers/cloudflare-stream.js.map +1 -0
  219. package/dist/providers/cloudflare-workers-ai.d.ts.map +1 -1
  220. package/dist/providers/cloudflare-workers-ai.js +2 -1
  221. package/dist/providers/cloudflare-workers-ai.js.map +1 -1
  222. package/dist/providers/cloudflare-workers-ai.models.d.ts +3 -301
  223. package/dist/providers/cloudflare-workers-ai.models.d.ts.map +1 -1
  224. package/dist/providers/cloudflare-workers-ai.models.js +3 -236
  225. package/dist/providers/cloudflare-workers-ai.models.js.map +1 -1
  226. package/dist/providers/data/.manifest.json +1 -0
  227. package/dist/providers/data/amazon-bedrock.json +1 -0
  228. package/dist/providers/data/ant-ling.json +1 -0
  229. package/dist/providers/data/anthropic.json +1 -0
  230. package/dist/providers/data/azure-openai-responses.json +1 -0
  231. package/dist/providers/data/cerebras.json +1 -0
  232. package/dist/providers/data/cloudflare-ai-gateway.json +1 -0
  233. package/dist/providers/data/cloudflare-workers-ai.json +1 -0
  234. package/dist/providers/data/deepseek.json +1 -0
  235. package/dist/providers/data/fireworks.json +1 -0
  236. package/dist/providers/data/github-copilot.json +1 -0
  237. package/dist/providers/data/google-vertex.json +1 -0
  238. package/dist/providers/data/google.json +1 -0
  239. package/dist/providers/data/groq.json +1 -0
  240. package/dist/providers/data/huggingface.json +1 -0
  241. package/dist/providers/data/kimi-coding.json +1 -0
  242. package/dist/providers/data/minimax-cn.json +1 -0
  243. package/dist/providers/data/minimax.json +1 -0
  244. package/dist/providers/data/mistral.json +1 -0
  245. package/dist/providers/data/moonshotai-cn.json +1 -0
  246. package/dist/providers/data/moonshotai.json +1 -0
  247. package/dist/providers/data/nvidia.json +1 -0
  248. package/dist/providers/data/openai-codex.json +1 -0
  249. package/dist/providers/data/openai.json +1 -0
  250. package/dist/providers/data/opencode-go.json +1 -0
  251. package/dist/providers/data/opencode.json +1 -0
  252. package/dist/providers/data/openrouter.json +1 -0
  253. package/dist/providers/data/qwen-token-plan-cn.json +1 -0
  254. package/dist/providers/data/qwen-token-plan.json +1 -0
  255. package/dist/providers/data/together.json +1 -0
  256. package/dist/providers/data/vercel-ai-gateway.json +1 -0
  257. package/dist/providers/data/xai.json +1 -0
  258. package/dist/providers/data/xiaomi-token-plan-ams.json +1 -0
  259. package/dist/providers/data/xiaomi-token-plan-cn.json +1 -0
  260. package/dist/providers/data/xiaomi-token-plan-sgp.json +1 -0
  261. package/dist/providers/data/xiaomi.json +1 -0
  262. package/dist/providers/data/zai-coding-cn.json +1 -0
  263. package/dist/providers/data/zai.json +1 -0
  264. package/dist/providers/deepseek.models.d.ts +3 -62
  265. package/dist/providers/deepseek.models.d.ts.map +1 -1
  266. package/dist/providers/deepseek.models.js +3 -40
  267. package/dist/providers/deepseek.models.js.map +1 -1
  268. package/dist/providers/faux.d.ts.map +1 -1
  269. package/dist/providers/faux.js +4 -1
  270. package/dist/providers/faux.js.map +1 -1
  271. package/dist/providers/fireworks.models.d.ts +3 -380
  272. package/dist/providers/fireworks.models.d.ts.map +1 -1
  273. package/dist/providers/fireworks.models.js +3 -292
  274. package/dist/providers/fireworks.models.js.map +1 -1
  275. package/dist/providers/github-copilot.d.ts.map +1 -1
  276. package/dist/providers/github-copilot.js +11 -1
  277. package/dist/providers/github-copilot.js.map +1 -1
  278. package/dist/providers/github-copilot.models.d.ts +3 -790
  279. package/dist/providers/github-copilot.models.d.ts.map +1 -1
  280. package/dist/providers/github-copilot.models.js +3 -538
  281. package/dist/providers/github-copilot.models.js.map +1 -1
  282. package/dist/providers/google-vertex.d.ts.map +1 -1
  283. package/dist/providers/google-vertex.js +56 -5
  284. package/dist/providers/google-vertex.js.map +1 -1
  285. package/dist/providers/google-vertex.models.d.ts +3 -201
  286. package/dist/providers/google-vertex.models.d.ts.map +1 -1
  287. package/dist/providers/google-vertex.models.js +3 -179
  288. package/dist/providers/google-vertex.models.js.map +1 -1
  289. package/dist/providers/google.models.d.ts +3 -327
  290. package/dist/providers/google.models.d.ts.map +1 -1
  291. package/dist/providers/google.models.js +3 -285
  292. package/dist/providers/google.models.js.map +1 -1
  293. package/dist/providers/groq.models.d.ts +3 -127
  294. package/dist/providers/groq.models.d.ts.map +1 -1
  295. package/dist/providers/groq.models.js +3 -122
  296. package/dist/providers/groq.models.js.map +1 -1
  297. package/dist/providers/huggingface.models.d.ts +3 -982
  298. package/dist/providers/huggingface.models.d.ts.map +1 -1
  299. package/dist/providers/huggingface.models.js +3 -884
  300. package/dist/providers/huggingface.models.js.map +1 -1
  301. package/dist/providers/kimi-coding.d.ts.map +1 -1
  302. package/dist/providers/kimi-coding.js +10 -2
  303. package/dist/providers/kimi-coding.js.map +1 -1
  304. package/dist/providers/kimi-coding.models.d.ts +3 -62
  305. package/dist/providers/kimi-coding.models.d.ts.map +1 -1
  306. package/dist/providers/kimi-coding.models.js +3 -56
  307. package/dist/providers/kimi-coding.models.js.map +1 -1
  308. package/dist/providers/minimax-cn.models.d.ts +3 -53
  309. package/dist/providers/minimax-cn.models.d.ts.map +1 -1
  310. package/dist/providers/minimax-cn.models.js +3 -53
  311. package/dist/providers/minimax-cn.models.js.map +1 -1
  312. package/dist/providers/minimax.models.d.ts +3 -53
  313. package/dist/providers/minimax.models.d.ts.map +1 -1
  314. package/dist/providers/minimax.models.js +3 -53
  315. package/dist/providers/minimax.models.js.map +1 -1
  316. package/dist/providers/mistral.models.d.ts +3 -512
  317. package/dist/providers/mistral.models.d.ts.map +1 -1
  318. package/dist/providers/mistral.models.js +3 -512
  319. package/dist/providers/mistral.models.js.map +1 -1
  320. package/dist/providers/moonshotai-cn.models.d.ts +3 -233
  321. package/dist/providers/moonshotai-cn.models.d.ts.map +1 -1
  322. package/dist/providers/moonshotai-cn.models.js +3 -166
  323. package/dist/providers/moonshotai-cn.models.js.map +1 -1
  324. package/dist/providers/moonshotai.models.d.ts +3 -233
  325. package/dist/providers/moonshotai.models.d.ts.map +1 -1
  326. package/dist/providers/moonshotai.models.js +3 -166
  327. package/dist/providers/moonshotai.models.js.map +1 -1
  328. package/dist/providers/nvidia.models.d.ts +3 -562
  329. package/dist/providers/nvidia.models.d.ts.map +1 -1
  330. package/dist/providers/nvidia.models.js +3 -382
  331. package/dist/providers/nvidia.models.js.map +1 -1
  332. package/dist/providers/openai-codex.d.ts.map +1 -1
  333. package/dist/providers/openai-codex.js +1 -1
  334. package/dist/providers/openai-codex.js.map +1 -1
  335. package/dist/providers/openai-codex.models.d.ts +3 -187
  336. package/dist/providers/openai-codex.models.d.ts.map +1 -1
  337. package/dist/providers/openai-codex.models.js +3 -133
  338. package/dist/providers/openai-codex.models.js.map +1 -1
  339. package/dist/providers/openai.models.d.ts +3 -936
  340. package/dist/providers/openai.models.d.ts.map +1 -1
  341. package/dist/providers/openai.models.js +3 -818
  342. package/dist/providers/openai.models.js.map +1 -1
  343. package/dist/providers/opencode-go.d.ts +1 -1
  344. package/dist/providers/opencode-go.d.ts.map +1 -1
  345. package/dist/providers/opencode-go.js +15 -3
  346. package/dist/providers/opencode-go.js.map +1 -1
  347. package/dist/providers/opencode-go.models.d.ts +3 -308
  348. package/dist/providers/opencode-go.models.d.ts.map +1 -1
  349. package/dist/providers/opencode-go.models.js +3 -237
  350. package/dist/providers/opencode-go.models.js.map +1 -1
  351. package/dist/providers/opencode.models.d.ts +3 -1183
  352. package/dist/providers/opencode.models.d.ts.map +1 -1
  353. package/dist/providers/opencode.models.js +3 -977
  354. package/dist/providers/opencode.models.js.map +1 -1
  355. package/dist/providers/openrouter-images.d.ts.map +1 -1
  356. package/dist/providers/openrouter-images.js +10 -2
  357. package/dist/providers/openrouter-images.js.map +1 -1
  358. package/dist/providers/openrouter.d.ts.map +1 -1
  359. package/dist/providers/openrouter.js +10 -2
  360. package/dist/providers/openrouter.js.map +1 -1
  361. package/dist/providers/openrouter.models.d.ts +3 -5684
  362. package/dist/providers/openrouter.models.d.ts.map +1 -1
  363. package/dist/providers/openrouter.models.js +3 -4855
  364. package/dist/providers/openrouter.models.js.map +1 -1
  365. package/dist/providers/qwen-token-plan-cn.d.ts +3 -0
  366. package/dist/providers/qwen-token-plan-cn.d.ts.map +1 -0
  367. package/dist/providers/qwen-token-plan-cn.js +15 -0
  368. package/dist/providers/qwen-token-plan-cn.js.map +1 -0
  369. package/dist/providers/qwen-token-plan-cn.models.d.ts +4 -0
  370. package/dist/providers/qwen-token-plan-cn.models.d.ts.map +1 -0
  371. package/dist/providers/qwen-token-plan-cn.models.js +6 -0
  372. package/dist/providers/qwen-token-plan-cn.models.js.map +1 -0
  373. package/dist/providers/qwen-token-plan.d.ts +3 -0
  374. package/dist/providers/qwen-token-plan.d.ts.map +1 -0
  375. package/dist/providers/qwen-token-plan.js +15 -0
  376. package/dist/providers/qwen-token-plan.js.map +1 -0
  377. package/dist/providers/qwen-token-plan.models.d.ts +4 -0
  378. package/dist/providers/qwen-token-plan.models.d.ts.map +1 -0
  379. package/dist/providers/qwen-token-plan.models.js +6 -0
  380. package/dist/providers/qwen-token-plan.models.js.map +1 -0
  381. package/dist/providers/radius-config.d.ts +26 -0
  382. package/dist/providers/radius-config.d.ts.map +1 -0
  383. package/dist/providers/radius-config.js +63 -0
  384. package/dist/providers/radius-config.js.map +1 -0
  385. package/dist/providers/radius.d.ts +9 -0
  386. package/dist/providers/radius.d.ts.map +1 -0
  387. package/dist/providers/radius.js +54 -0
  388. package/dist/providers/radius.js.map +1 -0
  389. package/dist/providers/together.models.d.ts +3 -597
  390. package/dist/providers/together.models.d.ts.map +1 -1
  391. package/dist/providers/together.models.js +3 -377
  392. package/dist/providers/together.models.js.map +1 -1
  393. package/dist/providers/vercel-ai-gateway.models.d.ts +3 -3255
  394. package/dist/providers/vercel-ai-gateway.models.d.ts.map +1 -1
  395. package/dist/providers/vercel-ai-gateway.models.js +3 -3191
  396. package/dist/providers/vercel-ai-gateway.models.js.map +1 -1
  397. package/dist/providers/xai.d.ts +1 -1
  398. package/dist/providers/xai.d.ts.map +1 -1
  399. package/dist/providers/xai.js +11 -3
  400. package/dist/providers/xai.js.map +1 -1
  401. package/dist/providers/xai.models.d.ts +3 -178
  402. package/dist/providers/xai.models.d.ts.map +1 -1
  403. package/dist/providers/xai.models.js +3 -146
  404. package/dist/providers/xai.models.js.map +1 -1
  405. package/dist/providers/xiaomi-token-plan-ams.models.d.ts +3 -65
  406. package/dist/providers/xiaomi-token-plan-ams.models.d.ts.map +1 -1
  407. package/dist/providers/xiaomi-token-plan-ams.models.js +3 -56
  408. package/dist/providers/xiaomi-token-plan-ams.models.js.map +1 -1
  409. package/dist/providers/xiaomi-token-plan-cn.models.d.ts +3 -65
  410. package/dist/providers/xiaomi-token-plan-cn.models.d.ts.map +1 -1
  411. package/dist/providers/xiaomi-token-plan-cn.models.js +3 -56
  412. package/dist/providers/xiaomi-token-plan-cn.models.js.map +1 -1
  413. package/dist/providers/xiaomi-token-plan-sgp.models.d.ts +3 -65
  414. package/dist/providers/xiaomi-token-plan-sgp.models.d.ts.map +1 -1
  415. package/dist/providers/xiaomi-token-plan-sgp.models.js +3 -56
  416. package/dist/providers/xiaomi-token-plan-sgp.models.js.map +1 -1
  417. package/dist/providers/xiaomi.models.d.ts +3 -128
  418. package/dist/providers/xiaomi.models.d.ts.map +1 -1
  419. package/dist/providers/xiaomi.models.js +3 -110
  420. package/dist/providers/xiaomi.models.js.map +1 -1
  421. package/dist/providers/zai-coding-cn.models.d.ts +3 -152
  422. package/dist/providers/zai-coding-cn.models.d.ts.map +1 -1
  423. package/dist/providers/zai-coding-cn.models.js +3 -111
  424. package/dist/providers/zai-coding-cn.models.js.map +1 -1
  425. package/dist/providers/zai.models.d.ts +3 -152
  426. package/dist/providers/zai.models.d.ts.map +1 -1
  427. package/dist/providers/zai.models.js +3 -111
  428. package/dist/providers/zai.models.js.map +1 -1
  429. package/dist/types.d.ts +74 -8
  430. package/dist/types.d.ts.map +1 -1
  431. package/dist/types.js.map +1 -1
  432. package/dist/utils/deferred-tools.d.ts +9 -0
  433. package/dist/utils/deferred-tools.d.ts.map +1 -0
  434. package/dist/utils/deferred-tools.js +36 -0
  435. package/dist/utils/deferred-tools.js.map +1 -0
  436. package/dist/utils/error-body.d.ts.map +1 -1
  437. package/dist/utils/error-body.js +8 -3
  438. package/dist/utils/error-body.js.map +1 -1
  439. package/dist/utils/estimate.d.ts.map +1 -1
  440. package/dist/utils/estimate.js +18 -5
  441. package/dist/utils/estimate.js.map +1 -1
  442. package/dist/utils/overflow.d.ts +1 -0
  443. package/dist/utils/overflow.d.ts.map +1 -1
  444. package/dist/utils/overflow.js +3 -0
  445. package/dist/utils/overflow.js.map +1 -1
  446. package/dist/utils/provider-retry.d.ts +16 -0
  447. package/dist/utils/provider-retry.d.ts.map +1 -0
  448. package/dist/utils/provider-retry.js +94 -0
  449. package/dist/utils/provider-retry.js.map +1 -0
  450. package/dist/utils/retry.d.ts +41 -0
  451. package/dist/utils/retry.d.ts.map +1 -1
  452. package/dist/utils/retry.js +83 -0
  453. package/dist/utils/retry.js.map +1 -1
  454. package/dist/utils/text.d.ts +6 -0
  455. package/dist/utils/text.d.ts.map +1 -0
  456. package/dist/utils/text.js +10 -0
  457. package/dist/utils/text.js.map +1 -0
  458. package/dist/utils/uuid.d.ts +3 -0
  459. package/dist/utils/uuid.d.ts.map +1 -0
  460. package/dist/utils/uuid.js +47 -0
  461. package/dist/utils/uuid.js.map +1 -0
  462. package/package.json +12 -6
  463. package/dist/utils/oauth/anthropic.d.ts +0 -27
  464. package/dist/utils/oauth/anthropic.d.ts.map +0 -1
  465. package/dist/utils/oauth/anthropic.js.map +0 -1
  466. package/dist/utils/oauth/device-code.d.ts.map +0 -1
  467. package/dist/utils/oauth/device-code.js.map +0 -1
  468. package/dist/utils/oauth/github-copilot.d.ts +0 -32
  469. package/dist/utils/oauth/github-copilot.d.ts.map +0 -1
  470. package/dist/utils/oauth/github-copilot.js.map +0 -1
  471. package/dist/utils/oauth/google-antigravity.d.ts +0 -26
  472. package/dist/utils/oauth/google-antigravity.d.ts.map +0 -1
  473. package/dist/utils/oauth/google-antigravity.js.map +0 -1
  474. package/dist/utils/oauth/google-gemini-cli.d.ts +0 -26
  475. package/dist/utils/oauth/google-gemini-cli.d.ts.map +0 -1
  476. package/dist/utils/oauth/google-gemini-cli.js.map +0 -1
  477. package/dist/utils/oauth/index.d.ts +0 -60
  478. package/dist/utils/oauth/index.d.ts.map +0 -1
  479. package/dist/utils/oauth/index.js +0 -130
  480. package/dist/utils/oauth/index.js.map +0 -1
  481. package/dist/utils/oauth/load.d.ts +0 -6
  482. package/dist/utils/oauth/load.d.ts.map +0 -1
  483. package/dist/utils/oauth/load.js +0 -23
  484. package/dist/utils/oauth/load.js.map +0 -1
  485. package/dist/utils/oauth/oauth-page.d.ts.map +0 -1
  486. package/dist/utils/oauth/oauth-page.js.map +0 -1
  487. package/dist/utils/oauth/openai-codex.d.ts +0 -45
  488. package/dist/utils/oauth/openai-codex.d.ts.map +0 -1
  489. package/dist/utils/oauth/openai-codex.js.map +0 -1
  490. package/dist/utils/oauth/opencode-go.d.ts +0 -23
  491. package/dist/utils/oauth/opencode-go.d.ts.map +0 -1
  492. package/dist/utils/oauth/opencode-go.js +0 -46
  493. package/dist/utils/oauth/opencode-go.js.map +0 -1
  494. package/dist/utils/oauth/pkce.d.ts.map +0 -1
  495. package/dist/utils/oauth/pkce.js.map +0 -1
  496. package/dist/utils/oauth/types.d.ts +0 -64
  497. package/dist/utils/oauth/types.d.ts.map +0 -1
  498. package/dist/utils/oauth/types.js +0 -2
  499. package/dist/utils/oauth/types.js.map +0 -1
  500. package/dist/utils/oauth/xai.d.ts +0 -34
  501. package/dist/utils/oauth/xai.d.ts.map +0 -1
  502. package/dist/utils/oauth/xai.js.map +0 -1
  503. /package/dist/{utils → auth}/oauth/device-code.d.ts +0 -0
  504. /package/dist/{utils → auth}/oauth/device-code.js +0 -0
  505. /package/dist/{utils → auth}/oauth/oauth-page.d.ts +0 -0
  506. /package/dist/{utils → auth}/oauth/oauth-page.js +0 -0
  507. /package/dist/{utils → auth}/oauth/pkce.d.ts +0 -0
  508. /package/dist/{utils → auth}/oauth/pkce.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"bedrock-converse-stream.d.ts","sourceRoot":"","sources":["../../src/api/bedrock-converse-stream.ts"],"names":[],"mappings":"AA6BA,OAAO,KAAK,EAQX,mBAAmB,EAEnB,cAAc,EACd,aAAa,EAEb,eAAe,EAEf,aAAa,EAIb,MAAM,aAAa,CAAC;AAgBrB,MAAM,MAAM,sBAAsB,GAAG,YAAY,GAAG,SAAS,CAAC;AAE9D,MAAM,WAAW,cAAe,SAAQ,aAAa;IACpD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAEtE,SAAS,CAAC,EAAE,aAAa,CAAC;IAE1B,eAAe,CAAC,EAAE,eAAe,CAAC;IAElC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;;;;;;;;OASG;IACH,eAAe,CAAC,EAAE,sBAAsB,CAAC;IACzC;;;sGAGkG;IAClG,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC;;;;yGAIqG;IACrG,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB;AAMD,eAAO,MAAM,MAAM,EAAE,cAAc,CAAC,yBAAyB,EAAE,cAAc,CAmM5E,CAAC;AAqFF,eAAO,MAAM,YAAY,EAAE,cAAc,CAAC,yBAAyB,EAAE,mBAAmB,CA8CvF,CAAC"}
1
+ {"version":3,"file":"bedrock-converse-stream.d.ts","sourceRoot":"","sources":["../../src/api/bedrock-converse-stream.ts"],"names":[],"mappings":"AA6BA,OAAO,KAAK,EAQX,mBAAmB,EAEnB,cAAc,EACd,aAAa,EAEb,eAAe,EAEf,aAAa,EAIb,MAAM,aAAa,CAAC;AAiBrB,MAAM,MAAM,sBAAsB,GAAG,YAAY,GAAG,SAAS,CAAC;AAE9D,MAAM,WAAW,cAAe,SAAQ,aAAa;IACpD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAEtE,SAAS,CAAC,EAAE,aAAa,CAAC;IAE1B,eAAe,CAAC,EAAE,eAAe,CAAC;IAElC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;;;;;;;;OASG;IACH,eAAe,CAAC,EAAE,sBAAsB,CAAC;IACzC;;;sGAGkG;IAClG,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC;;;;yGAIqG;IACrG,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB;AAMD,eAAO,MAAM,MAAM,EAAE,cAAc,CAAC,yBAAyB,EAAE,cAAc,CAoN5E,CAAC;AAqFF,eAAO,MAAM,YAAY,EAAE,cAAc,CAAC,yBAAyB,EAAE,mBAAmB,CA8CvF,CAAC"}
@@ -10,6 +10,7 @@ import { parseStreamingJson } from "../utils/json-parse.js";
10
10
  import { resolveHttpProxyUrlForTarget } from "../utils/node-http-proxy.js";
11
11
  import { getProviderEnvValue } from "../utils/provider-env.js";
12
12
  import { sanitizeSurrogates } from "../utils/sanitize-unicode.js";
13
+ import { resolveJsonSchemaStrictSampling } from "./constrained-sampling.js";
13
14
  import { adjustMaxTokensForThinking, buildBaseOptions, clampMaxTokensToContext, clampReasoning, } from "./simple-options.js";
14
15
  import { transformMessages } from "./transform-messages.js";
15
16
  const EMPTY_TEXT_PLACEHOLDER = "<empty>";
@@ -30,12 +31,18 @@ export const stream = (model, context, options = {}) => {
30
31
  totalTokens: 0,
31
32
  cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 },
32
33
  },
33
- stopReason: "stop",
34
+ stopReason: "pending",
34
35
  timestamp: Date.now(),
35
36
  };
36
37
  const blocks = output.content;
38
+ // A profile explicitly configured through pi's auth flow (the `profile`
39
+ // option or scoped `AWS_PROFILE` on the stored credential's env) must win
40
+ // over ambient AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY. The SDK default
41
+ // chain already prefers a configured profile over env keys, but only when
42
+ // `credentials` is not set on the client config. See #6957.
43
+ const optionsProfile = options.profile || options.env?.AWS_PROFILE;
37
44
  const config = {
38
- profile: options.profile || getProviderEnvValue("AWS_PROFILE", options.env),
45
+ profile: optionsProfile || getProviderEnvValue("AWS_PROFILE", options.env),
39
46
  };
40
47
  const configuredRegion = getConfiguredBedrockRegion(options);
41
48
  const hasAmbientConfiguredProfile = Boolean(getProviderEnvValue("AWS_PROFILE"));
@@ -49,7 +56,10 @@ export const stream = (model, context, options = {}) => {
49
56
  }
50
57
  // Resolve bearer token for Bedrock API key auth.
51
58
  const skipAuth = getProviderEnvValue("AWS_BEDROCK_SKIP_AUTH", options.env) === "1";
52
- const bearerToken = options.bearerToken || getProviderEnvValue("AWS_BEARER_TOKEN_BEDROCK", options.env) || undefined;
59
+ const bearerToken = options.bearerToken ||
60
+ options.apiKey ||
61
+ getProviderEnvValue("AWS_BEARER_TOKEN_BEDROCK", options.env) ||
62
+ undefined;
53
63
  const useBearerToken = bearerToken !== undefined && !skipAuth;
54
64
  // in Node.js/Bun environment only
55
65
  if (typeof process !== "undefined" && (process.versions?.node || process.versions?.bun)) {
@@ -77,7 +87,7 @@ export const stream = (model, context, options = {}) => {
77
87
  };
78
88
  }
79
89
  const credentials = getConfiguredBedrockCredentials(options.env);
80
- if (!skipAuth && credentials) {
90
+ if (!skipAuth && credentials && !optionsProfile) {
81
91
  config.credentials = credentials;
82
92
  }
83
93
  const proxyUrl = resolveHttpProxyUrlForTarget(model.baseUrl, options.env);
@@ -121,7 +131,7 @@ export const stream = (model, context, options = {}) => {
121
131
  ...(inferenceMaxTokens !== undefined && { maxTokens: inferenceMaxTokens }),
122
132
  ...(options.temperature !== undefined && { temperature: options.temperature }),
123
133
  },
124
- toolConfig: convertToolConfig(context.tools, options.toolChoice),
134
+ toolConfig: convertToolConfig(context.tools, options.toolChoice, model.compat?.supportsStrictMode ?? false),
125
135
  additionalModelRequestFields: buildAdditionalModelRequestFields(model, options),
126
136
  ...(options.requestMetadata !== undefined && { requestMetadata: options.requestMetadata }),
127
137
  };
@@ -155,7 +165,12 @@ export const stream = (model, context, options = {}) => {
155
165
  handleContentBlockStop(item.contentBlockStop, blocks, output, stream);
156
166
  }
157
167
  else if (item.messageStop) {
158
- output.stopReason = mapStopReason(item.messageStop.stopReason);
168
+ output.rawStopReason = item.messageStop.stopReason;
169
+ const { stopReason, errorMessage } = mapStopReason(item.messageStop.stopReason);
170
+ output.stopReason = stopReason;
171
+ if (errorMessage) {
172
+ output.errorMessage = errorMessage;
173
+ }
159
174
  }
160
175
  else if (item.metadata) {
161
176
  handleMetadata(item.metadata, model, output);
@@ -179,8 +194,11 @@ export const stream = (model, context, options = {}) => {
179
194
  if (options.signal?.aborted) {
180
195
  throw new Error("Request was aborted");
181
196
  }
197
+ if (output.stopReason === "pending") {
198
+ throw new Error("Bedrock stream ended without a stop reason");
199
+ }
182
200
  if (output.stopReason === "error" || output.stopReason === "aborted") {
183
- throw new Error("An unknown error occurred");
201
+ throw new Error(output.errorMessage || "An unknown error occurred");
184
202
  }
185
203
  stream.push({ type: "done", reason: output.stopReason, message: output });
186
204
  stream.end();
@@ -424,13 +442,18 @@ function supportsAdaptiveThinking(modelId, modelName) {
424
442
  return candidates.some((s) => s.includes("opus-4-6") ||
425
443
  s.includes("opus-4-7") ||
426
444
  s.includes("opus-4-8") ||
445
+ s.includes("opus-5") ||
427
446
  s.includes("sonnet-4-6") ||
428
447
  s.includes("sonnet-5") ||
429
448
  s.includes("fable-5"));
430
449
  }
431
450
  function supportsNativeXhighEffort(model) {
432
451
  const candidates = getModelMatchCandidates(model.id, model.name);
433
- return candidates.some((s) => s.includes("opus-4-7") || s.includes("opus-4-8") || s.includes("sonnet-5") || s.includes("fable-5"));
452
+ return candidates.some((s) => s.includes("opus-4-7") ||
453
+ s.includes("opus-4-8") ||
454
+ s.includes("opus-5") ||
455
+ s.includes("sonnet-5") ||
456
+ s.includes("fable-5"));
434
457
  }
435
458
  function mapThinkingLevelToEffort(model, level) {
436
459
  if (level === "xhigh" && supportsNativeXhighEffort(model))
@@ -499,8 +522,8 @@ function supportsPromptCaching(model, env) {
499
522
  return true;
500
523
  return false;
501
524
  }
502
- // Claude 5 models (fable-5, sonnet-5)
503
- if (candidates.some((s) => s.includes("fable-5") || s.includes("sonnet-5")))
525
+ // Claude 5 models (fable-5, opus-5, sonnet-5)
526
+ if (candidates.some((s) => s.includes("fable-5") || s.includes("opus-5") || s.includes("sonnet-5")))
504
527
  return true;
505
528
  // Claude 4.x models (opus-4, sonnet-4, haiku-4)
506
529
  if (candidates.some((s) => s.includes("-4-")))
@@ -721,16 +744,22 @@ function convertMessages(context, model, cacheRetention, env) {
721
744
  }
722
745
  return result;
723
746
  }
724
- function convertToolConfig(tools, toolChoice) {
725
- if (!tools?.length || toolChoice === "none")
747
+ function convertToolConfig(tools, toolChoice, supportsStrictMode) {
748
+ if (!tools?.length)
726
749
  return undefined;
727
- const bedrockTools = tools.map((tool) => ({
728
- toolSpec: {
729
- name: tool.name,
730
- description: tool.description,
731
- inputSchema: { json: tool.parameters },
732
- },
733
- }));
750
+ if (toolChoice === "none")
751
+ return undefined;
752
+ const bedrockTools = tools.map((tool) => {
753
+ const strict = resolveJsonSchemaStrictSampling(tool, supportsStrictMode);
754
+ return {
755
+ toolSpec: {
756
+ name: tool.name,
757
+ description: tool.description,
758
+ inputSchema: { json: tool.parameters },
759
+ ...(strict === true ? { strict: true } : {}),
760
+ },
761
+ };
762
+ });
734
763
  let bedrockToolChoice;
735
764
  switch (toolChoice) {
736
765
  case "auto":
@@ -750,14 +779,16 @@ function mapStopReason(reason) {
750
779
  switch (reason) {
751
780
  case BedrockStopReason.END_TURN:
752
781
  case BedrockStopReason.STOP_SEQUENCE:
753
- return "stop";
782
+ return { stopReason: "stop" };
754
783
  case BedrockStopReason.MAX_TOKENS:
755
784
  case BedrockStopReason.MODEL_CONTEXT_WINDOW_EXCEEDED:
756
- return "length";
785
+ return { stopReason: "length" };
757
786
  case BedrockStopReason.TOOL_USE:
758
- return "toolUse";
787
+ return { stopReason: "toolUse" };
759
788
  default:
760
- return "error";
789
+ return reason
790
+ ? { stopReason: "error", errorMessage: `Provider stopped with: ${reason}` }
791
+ : { stopReason: "error" };
761
792
  }
762
793
  }
763
794
  function getConfiguredBedrockRegion(options) {
@@ -1 +1 @@
1
- {"version":3,"file":"bedrock-converse-stream.js","sourceRoot":"","sources":["../../src/api/bedrock-converse-stream.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Agent as HttpsAgent } from \"node:https\";\nimport {\n\tBedrockRuntimeClient,\n\ttype BedrockRuntimeClientConfig,\n\tBedrockRuntimeServiceException,\n\tStopReason as BedrockStopReason,\n\ttype Tool as BedrockTool,\n\tCachePointType,\n\tCacheTTL,\n\ttype ContentBlock,\n\ttype ContentBlockDeltaEvent,\n\ttype ContentBlockStartEvent,\n\ttype ContentBlockStopEvent,\n\tConversationRole,\n\tConverseStreamCommand,\n\ttype ConverseStreamMetadataEvent,\n\tImageFormat,\n\ttype Message,\n\ttype SystemContentBlock,\n\ttype ToolChoice,\n\ttype ToolConfiguration,\n\ttype ToolResultContentBlock,\n\tToolResultStatus,\n} from \"@aws-sdk/client-bedrock-runtime\";\nimport { NodeHttpHandler } from \"@smithy/node-http-handler\";\nimport type { BuildMiddleware, DocumentType, MetadataBearer } from \"@smithy/types\";\nimport { HttpProxyAgent } from \"http-proxy-agent\";\nimport { HttpsProxyAgent } from \"https-proxy-agent\";\nimport { calculateCost } from \"../models.ts\";\nimport type {\n\tApi,\n\tAssistantMessage,\n\tCacheRetention,\n\tContext,\n\tImageContent,\n\tModel,\n\tProviderEnv,\n\tSimpleStreamOptions,\n\tStopReason,\n\tStreamFunction,\n\tStreamOptions,\n\tTextContent,\n\tThinkingBudgets,\n\tThinkingContent,\n\tThinkingLevel,\n\tTool,\n\tToolCall,\n\tToolResultMessage,\n} from \"../types.ts\";\nimport { normalizeProviderError } from \"../utils/error-body.ts\";\nimport { AssistantMessageEventStream } from \"../utils/event-stream.ts\";\nimport { providerHeadersToRecord } from \"../utils/headers.ts\";\nimport { parseStreamingJson } from \"../utils/json-parse.ts\";\nimport { resolveHttpProxyUrlForTarget } from \"../utils/node-http-proxy.ts\";\nimport { getProviderEnvValue } from \"../utils/provider-env.ts\";\nimport { sanitizeSurrogates } from \"../utils/sanitize-unicode.ts\";\nimport {\n\tadjustMaxTokensForThinking,\n\tbuildBaseOptions,\n\tclampMaxTokensToContext,\n\tclampReasoning,\n} from \"./simple-options.ts\";\nimport { transformMessages } from \"./transform-messages.ts\";\n\nexport type BedrockThinkingDisplay = \"summarized\" | \"omitted\";\n\nexport interface BedrockOptions extends StreamOptions {\n\tregion?: string;\n\tprofile?: string;\n\ttoolChoice?: \"auto\" | \"any\" | \"none\" | { type: \"tool\"; name: string };\n\t/* See https://docs.aws.amazon.com/bedrock/latest/userguide/inference-reasoning.html for supported models. */\n\treasoning?: ThinkingLevel;\n\t/* Custom token budgets per thinking level. Overrides default budgets. */\n\tthinkingBudgets?: ThinkingBudgets;\n\t/* Only supported by Claude 4.x models, see https://docs.aws.amazon.com/bedrock/latest/userguide/claude-messages-extended-thinking.html#claude-messages-extended-thinking-tool-use-interleaved */\n\tinterleavedThinking?: boolean;\n\t/**\n\t * Controls how Claude's thinking content is returned in responses.\n\t * - \"summarized\": Thinking blocks contain summarized thinking text (default here).\n\t * - \"omitted\": Thinking content is redacted but the signature still travels back\n\t * for multi-turn continuity, reducing time-to-first-text-token.\n\t *\n\t * Note: Anthropic's API default for Claude Opus 4.8 and Mythos Preview is\n\t * \"omitted\". We default to \"summarized\" here to keep behavior consistent with\n\t * older Claude 4 models. Only applies to Claude models on Bedrock.\n\t */\n\tthinkingDisplay?: BedrockThinkingDisplay;\n\t/** Key-value pairs attached to the inference request for cost allocation tagging.\n\t * Keys: max 64 chars, no `aws:` prefix. Values: max 256 chars. Max 50 pairs.\n\t * Tags appear in AWS Cost Explorer split cost allocation data.\n\t * @see https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_ConverseStream.html */\n\trequestMetadata?: Record<string, string>;\n\t/** Bearer token for Bedrock API key authentication.\n\t * When set, bypasses SigV4 signing and sends Authorization: Bearer <token> instead.\n\t * Requires `bedrock:CallWithBearerToken` IAM permission on the token's identity.\n\t * Set via AWS_BEARER_TOKEN_BEDROCK env var or pass directly.\n\t * @see https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonbedrock.html */\n\tbearerToken?: string;\n}\n\ntype Block = (TextContent | ThinkingContent | ToolCall) & { index?: number; partialJson?: string };\n\nconst EMPTY_TEXT_PLACEHOLDER = \"<empty>\";\n\nexport const stream: StreamFunction<\"bedrock-converse-stream\", BedrockOptions> = (\n\tmodel: Model<\"bedrock-converse-stream\">,\n\tcontext: Context,\n\toptions: BedrockOptions = {},\n): AssistantMessageEventStream => {\n\tconst stream = new AssistantMessageEventStream();\n\n\t(async () => {\n\t\tconst output: AssistantMessage = {\n\t\t\trole: \"assistant\",\n\t\t\tcontent: [],\n\t\t\tapi: \"bedrock-converse-stream\" as Api,\n\t\t\tprovider: model.provider,\n\t\t\tmodel: model.id,\n\t\t\tusage: {\n\t\t\t\tinput: 0,\n\t\t\t\toutput: 0,\n\t\t\t\tcacheRead: 0,\n\t\t\t\tcacheWrite: 0,\n\t\t\t\ttotalTokens: 0,\n\t\t\t\tcost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 },\n\t\t\t},\n\t\t\tstopReason: \"stop\",\n\t\t\ttimestamp: Date.now(),\n\t\t};\n\n\t\tconst blocks = output.content as Block[];\n\n\t\tconst config: BedrockRuntimeClientConfig = {\n\t\t\tprofile: options.profile || getProviderEnvValue(\"AWS_PROFILE\", options.env),\n\t\t};\n\t\tconst configuredRegion = getConfiguredBedrockRegion(options);\n\t\tconst hasAmbientConfiguredProfile = Boolean(getProviderEnvValue(\"AWS_PROFILE\"));\n\t\tconst endpointRegion = getStandardBedrockEndpointRegion(model.baseUrl);\n\t\tconst useExplicitEndpoint = shouldUseExplicitBedrockEndpoint(\n\t\t\tmodel.baseUrl,\n\t\t\tconfiguredRegion,\n\t\t\thasAmbientConfiguredProfile,\n\t\t);\n\n\t\t// Only pin standard AWS Bedrock runtime endpoints when no region or ambient AWS_PROFILE is configured.\n\t\t// This preserves custom endpoints (VPC/proxy) from #3402 without forcing built-in\n\t\t// catalog defaults such as us-east-1 to override AWS_REGION/AWS_PROFILE.\n\t\tif (useExplicitEndpoint) {\n\t\t\tconfig.endpoint = model.baseUrl;\n\t\t}\n\n\t\t// Resolve bearer token for Bedrock API key auth.\n\t\tconst skipAuth = getProviderEnvValue(\"AWS_BEDROCK_SKIP_AUTH\", options.env) === \"1\";\n\t\tconst bearerToken =\n\t\t\toptions.bearerToken || getProviderEnvValue(\"AWS_BEARER_TOKEN_BEDROCK\", options.env) || undefined;\n\t\tconst useBearerToken = bearerToken !== undefined && !skipAuth;\n\n\t\t// in Node.js/Bun environment only\n\t\tif (typeof process !== \"undefined\" && (process.versions?.node || process.versions?.bun)) {\n\t\t\t// Region resolution: ARN-embedded > explicit option > env vars > SDK default chain.\n\t\t\t// When the model ID is an inference profile ARN, extract the region from it.\n\t\t\t// This avoids conflicts with AWS_REGION set for other services.\n\t\t\tconst arnRegionMatch = model.id.match(/^arn:aws(?:-[a-z0-9-]+)?:bedrock:([a-z0-9-]+):/);\n\t\t\tif (arnRegionMatch) {\n\t\t\t\tconfig.region = arnRegionMatch[1];\n\t\t\t} else if (configuredRegion) {\n\t\t\t\tconfig.region = configuredRegion;\n\t\t\t} else if (endpointRegion && useExplicitEndpoint) {\n\t\t\t\tconfig.region = endpointRegion;\n\t\t\t} else if (!hasAmbientConfiguredProfile) {\n\t\t\t\tconfig.region = \"us-east-1\";\n\t\t\t}\n\n\t\t\t// Support proxies that don't need authentication\n\t\t\tif (skipAuth) {\n\t\t\t\tconfig.credentials = {\n\t\t\t\t\taccessKeyId: \"dummy-access-key\",\n\t\t\t\t\tsecretAccessKey: \"dummy-secret-key\",\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tconst credentials = getConfiguredBedrockCredentials(options.env);\n\t\t\tif (!skipAuth && credentials) {\n\t\t\t\tconfig.credentials = credentials;\n\t\t\t}\n\n\t\t\tconst proxyUrl = resolveHttpProxyUrlForTarget(model.baseUrl, options.env);\n\t\t\tif (proxyUrl) {\n\t\t\t\t// Bedrock runtime uses NodeHttp2Handler by default since v3.798.0, which is based\n\t\t\t\t// on `http2` module and has no support for http agent.\n\t\t\t\t// Use NodeHttpHandler to support HTTP(S) proxy agents.\n\t\t\t\tconfig.requestHandler = new NodeHttpHandler({\n\t\t\t\t\thttpAgent: new HttpProxyAgent(proxyUrl),\n\t\t\t\t\thttpsAgent: new HttpsProxyAgent(proxyUrl) as unknown as HttpsAgent,\n\t\t\t\t});\n\t\t\t} else if (getProviderEnvValue(\"AWS_BEDROCK_FORCE_HTTP1\", options.env) === \"1\") {\n\t\t\t\t// Some custom endpoints require HTTP/1.1 instead of HTTP/2\n\t\t\t\tconfig.requestHandler = new NodeHttpHandler();\n\t\t\t}\n\t\t} else {\n\t\t\t// Non-Node environment (browser): fall back to us-east-1 since\n\t\t\t// there's no config file resolution available.\n\t\t\tconfig.region =\n\t\t\t\tconfiguredRegion || (endpointRegion && useExplicitEndpoint ? endpointRegion : undefined) || \"us-east-1\";\n\t\t}\n\n\t\tif (useBearerToken) {\n\t\t\tconfig.token = { token: bearerToken };\n\t\t\tconfig.authSchemePreference = [\"httpBearerAuth\"];\n\t\t}\n\n\t\ttry {\n\t\t\tconst client = new BedrockRuntimeClient(config);\n\t\t\tconst customHeaders = providerHeadersToRecord(options.headers);\n\t\t\tif (customHeaders) {\n\t\t\t\taddCustomHeadersMiddleware(client, customHeaders);\n\t\t\t}\n\t\t\tconst cacheRetention = resolveCacheRetention(options.cacheRetention, options.env);\n\t\t\tconst inferenceMaxTokens = options.maxTokens ?? (isAnthropicClaudeModel(model) ? model.maxTokens : undefined);\n\t\t\tlet commandInput = {\n\t\t\t\tmodelId: model.id,\n\t\t\t\tmessages: convertMessages(context, model, cacheRetention, options.env),\n\t\t\t\tsystem: buildSystemPrompt(context.systemPrompt, model, cacheRetention, options.env),\n\t\t\t\tinferenceConfig: {\n\t\t\t\t\t...(inferenceMaxTokens !== undefined && { maxTokens: inferenceMaxTokens }),\n\t\t\t\t\t...(options.temperature !== undefined && { temperature: options.temperature }),\n\t\t\t\t},\n\t\t\t\ttoolConfig: convertToolConfig(context.tools, options.toolChoice),\n\t\t\t\tadditionalModelRequestFields: buildAdditionalModelRequestFields(model, options),\n\t\t\t\t...(options.requestMetadata !== undefined && { requestMetadata: options.requestMetadata }),\n\t\t\t};\n\t\t\tconst nextCommandInput = await options?.onPayload?.(commandInput, model);\n\t\t\tif (nextCommandInput !== undefined) {\n\t\t\t\tcommandInput = nextCommandInput as typeof commandInput;\n\t\t\t}\n\t\t\tconst command = new ConverseStreamCommand(commandInput);\n\n\t\t\tconst response = await client.send(command, { abortSignal: options.signal });\n\t\t\tif (response.$metadata.httpStatusCode !== undefined) {\n\t\t\t\tconst responseHeaders: Record<string, string> = {};\n\t\t\t\tif (response.$metadata.requestId) {\n\t\t\t\t\tresponseHeaders[\"x-amzn-requestid\"] = response.$metadata.requestId;\n\t\t\t\t}\n\t\t\t\tawait options?.onResponse?.({ status: response.$metadata.httpStatusCode, headers: responseHeaders }, model);\n\t\t\t}\n\n\t\t\tfor await (const item of response.stream!) {\n\t\t\t\tif (item.messageStart) {\n\t\t\t\t\tif (item.messageStart.role !== ConversationRole.ASSISTANT) {\n\t\t\t\t\t\tthrow new Error(\"Unexpected assistant message start but got user message start instead\");\n\t\t\t\t\t}\n\t\t\t\t\tstream.push({ type: \"start\", partial: output });\n\t\t\t\t} else if (item.contentBlockStart) {\n\t\t\t\t\thandleContentBlockStart(item.contentBlockStart, blocks, output, stream);\n\t\t\t\t} else if (item.contentBlockDelta) {\n\t\t\t\t\thandleContentBlockDelta(item.contentBlockDelta, blocks, output, stream);\n\t\t\t\t} else if (item.contentBlockStop) {\n\t\t\t\t\thandleContentBlockStop(item.contentBlockStop, blocks, output, stream);\n\t\t\t\t} else if (item.messageStop) {\n\t\t\t\t\toutput.stopReason = mapStopReason(item.messageStop.stopReason);\n\t\t\t\t} else if (item.metadata) {\n\t\t\t\t\thandleMetadata(item.metadata, model, output);\n\t\t\t\t} else if (item.internalServerException) {\n\t\t\t\t\tthrow item.internalServerException;\n\t\t\t\t} else if (item.modelStreamErrorException) {\n\t\t\t\t\tthrow item.modelStreamErrorException;\n\t\t\t\t} else if (item.validationException) {\n\t\t\t\t\tthrow item.validationException;\n\t\t\t\t} else if (item.throttlingException) {\n\t\t\t\t\tthrow item.throttlingException;\n\t\t\t\t} else if (item.serviceUnavailableException) {\n\t\t\t\t\tthrow item.serviceUnavailableException;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (options.signal?.aborted) {\n\t\t\t\tthrow new Error(\"Request was aborted\");\n\t\t\t}\n\n\t\t\tif (output.stopReason === \"error\" || output.stopReason === \"aborted\") {\n\t\t\t\tthrow new Error(\"An unknown error occurred\");\n\t\t\t}\n\n\t\t\tstream.push({ type: \"done\", reason: output.stopReason, message: output });\n\t\t\tstream.end();\n\t\t} catch (error) {\n\t\t\tfor (const block of output.content) {\n\t\t\t\tdelete (block as Block).index;\n\t\t\t\t// partialJson is only a streaming scratch buffer; never persist it.\n\t\t\t\tdelete (block as Block).partialJson;\n\t\t\t}\n\t\t\toutput.stopReason = options.signal?.aborted ? \"aborted\" : \"error\";\n\t\t\toutput.errorMessage = formatBedrockError(error);\n\t\t\tstream.push({ type: \"error\", reason: output.stopReason, error: output });\n\t\t\tstream.end();\n\t\t}\n\t})();\n\n\treturn stream;\n};\n\n/**\n * Human-readable prefixes for Bedrock SDK exception names.\n * The downstream retry logic in agent-session matches patterns like\n * `server.?error` and `service.?unavailable`, so we preserve the legacy\n * prefix format rather than using the raw SDK exception name.\n */\nconst BEDROCK_ERROR_PREFIXES: Record<string, string> = {\n\tInternalServerException: \"Internal server error\",\n\tModelStreamErrorException: \"Model stream error\",\n\tValidationException: \"Validation error\",\n\tThrottlingException: \"Throttling error\",\n\tServiceUnavailableException: \"Service unavailable\",\n};\n\n/**\n * Some models reject the account/profile's configured Bedrock data retention mode\n * (e.g. \"data retention mode 'default' is not available for this model\"). Point\n * users at the AWS docs explaining how to configure a supported mode.\n */\nconst BEDROCK_DATA_RETENTION_DOCS_URL = \"https://docs.aws.amazon.com/bedrock/latest/userguide/data-retention.html\";\n\n/**\n * Format a Bedrock error with a human-readable prefix.\n * AWS SDK exceptions (both from `client.send()` and from stream event items)\n * extend BedrockRuntimeServiceException. We map the `.name` to a stable\n * human-readable prefix so downstream consumers (retry logic, context-overflow\n * detection) can distinguish error categories via simple string matching.\n */\nfunction formatBedrockError(error: unknown): string {\n\tconst norm = normalizeProviderError(error);\n\t// Surface the raw HTTP body (with status) when the SDK did not fold it into\n\t// the message; otherwise fall back to the message. This is what stops a\n\t// gateway 403 from collapsing to `Unknown: UnknownError`.\n\tconst core =\n\t\t!norm.messageCarriesBody && norm.status !== undefined && norm.body !== undefined\n\t\t\t? `${norm.status}: ${norm.body}`\n\t\t\t: norm.message;\n\tconst dataRetentionHint = /data retention mode/i.test(core)\n\t\t? ` See ${BEDROCK_DATA_RETENTION_DOCS_URL} for supported data retention modes.`\n\t\t: \"\";\n\tif (error instanceof BedrockRuntimeServiceException) {\n\t\tconst prefix = BEDROCK_ERROR_PREFIXES[error.name] ?? error.name;\n\t\treturn `${prefix}: ${core}${dataRetentionHint}`;\n\t}\n\treturn `${core}${dataRetentionHint}`;\n}\n\n/**\n * Header keys that must never be overwritten by caller-supplied headers.\n * `host` and `x-amz-*` participate in the SigV4 canonical request; `authorization`\n * is owned by SigV4 or the bearer-token path (config.token + authSchemePreference).\n * Compared case-insensitively (caller key is lower-cased before lookup).\n */\nconst RESERVED_HEADER_EXACT = new Set([\"authorization\", \"host\"]);\n\nfunction isReservedHeader(key: string): boolean {\n\tconst lower = key.toLowerCase();\n\treturn lower.startsWith(\"x-amz-\") || RESERVED_HEADER_EXACT.has(lower);\n}\n\n/**\n * Attach caller-supplied headers to the outgoing Bedrock request via a Smithy\n * `build`-step middleware. The `build` step runs after request serialisation but\n * before SigV4 signing, so injected headers are covered by the signature. Reserved\n * SigV4 / auth headers (`x-amz-*`, `authorization`, `host`) are silently skipped;\n * all other caller headers override any existing same-named header on the request.\n */\nfunction addCustomHeadersMiddleware(client: BedrockRuntimeClient, headers: Record<string, string>): void {\n\tconst middleware: BuildMiddleware<object, MetadataBearer> = (next) => async (args) => {\n\t\tconst request = args.request;\n\t\tif (request && typeof request === \"object\" && \"headers\" in request) {\n\t\t\tconst requestHeaders = (request as { headers: Record<string, string> }).headers;\n\t\t\tfor (const [key, value] of Object.entries(headers)) {\n\t\t\t\tif (!isReservedHeader(key)) {\n\t\t\t\t\trequestHeaders[key] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn next(args);\n\t};\n\tclient.middlewareStack.add(middleware, { step: \"build\", name: \"pi-ai-custom-headers\", priority: \"low\" });\n}\n\nexport const streamSimple: StreamFunction<\"bedrock-converse-stream\", SimpleStreamOptions> = (\n\tmodel: Model<\"bedrock-converse-stream\">,\n\tcontext: Context,\n\toptions?: SimpleStreamOptions,\n): AssistantMessageEventStream => {\n\tconst base = buildBaseOptions(model, context, options, undefined);\n\tif (!options?.reasoning) {\n\t\treturn stream(model, context, { ...base, reasoning: undefined } satisfies BedrockOptions);\n\t}\n\n\tif (isAnthropicClaudeModel(model)) {\n\t\tif (supportsAdaptiveThinking(model.id, model.name)) {\n\t\t\treturn stream(model, context, {\n\t\t\t\t...base,\n\t\t\t\treasoning: options.reasoning,\n\t\t\t\tthinkingBudgets: options.thinkingBudgets,\n\t\t\t} satisfies BedrockOptions);\n\t\t}\n\n\t\t// Undefined means the caller did not request an output cap; let the helper use the model cap.\n\t\t// Do not coerce to 0 here, or the thinking budget would become the entire maxTokens value.\n\t\tconst adjusted = adjustMaxTokensForThinking(\n\t\t\tbase.maxTokens,\n\t\t\tmodel.maxTokens,\n\t\t\toptions.reasoning,\n\t\t\toptions.thinkingBudgets,\n\t\t);\n\n\t\tconst maxTokens = clampMaxTokensToContext(model, context, adjusted.maxTokens);\n\n\t\treturn stream(model, context, {\n\t\t\t...base,\n\t\t\tmaxTokens,\n\t\t\treasoning: options.reasoning,\n\t\t\tthinkingBudgets: {\n\t\t\t\t...(options.thinkingBudgets || {}),\n\t\t\t\t[clampReasoning(options.reasoning)!]: Math.min(adjusted.thinkingBudget, Math.max(0, maxTokens - 1024)),\n\t\t\t},\n\t\t} satisfies BedrockOptions);\n\t}\n\n\treturn stream(model, context, {\n\t\t...base,\n\t\treasoning: options.reasoning,\n\t\tthinkingBudgets: options.thinkingBudgets,\n\t} satisfies BedrockOptions);\n};\n\nfunction handleContentBlockStart(\n\tevent: ContentBlockStartEvent,\n\tblocks: Block[],\n\toutput: AssistantMessage,\n\tstream: AssistantMessageEventStream,\n): void {\n\tconst index = event.contentBlockIndex!;\n\tconst start = event.start;\n\n\tif (start?.toolUse) {\n\t\tconst block: Block = {\n\t\t\ttype: \"toolCall\",\n\t\t\tid: start.toolUse.toolUseId || \"\",\n\t\t\tname: start.toolUse.name || \"\",\n\t\t\targuments: {},\n\t\t\tpartialJson: \"\",\n\t\t\tindex,\n\t\t};\n\t\toutput.content.push(block);\n\t\tstream.push({ type: \"toolcall_start\", contentIndex: blocks.length - 1, partial: output });\n\t}\n}\n\nfunction handleContentBlockDelta(\n\tevent: ContentBlockDeltaEvent,\n\tblocks: Block[],\n\toutput: AssistantMessage,\n\tstream: AssistantMessageEventStream,\n): void {\n\tconst contentBlockIndex = event.contentBlockIndex!;\n\tconst delta = event.delta;\n\tlet index = blocks.findIndex((b) => b.index === contentBlockIndex);\n\tlet block = blocks[index];\n\n\tif (delta?.text !== undefined) {\n\t\t// If no text block exists yet, create one, as `handleContentBlockStart` is not sent for text blocks\n\t\tif (!block) {\n\t\t\tconst newBlock: Block = { type: \"text\", text: \"\", index: contentBlockIndex };\n\t\t\toutput.content.push(newBlock);\n\t\t\tindex = blocks.length - 1;\n\t\t\tblock = blocks[index];\n\t\t\tstream.push({ type: \"text_start\", contentIndex: index, partial: output });\n\t\t}\n\t\tif (block.type === \"text\") {\n\t\t\tblock.text += delta.text;\n\t\t\tstream.push({ type: \"text_delta\", contentIndex: index, delta: delta.text, partial: output });\n\t\t}\n\t} else if (delta?.toolUse && block?.type === \"toolCall\") {\n\t\tblock.partialJson = (block.partialJson || \"\") + (delta.toolUse.input || \"\");\n\t\tblock.arguments = parseStreamingJson(block.partialJson);\n\t\tstream.push({ type: \"toolcall_delta\", contentIndex: index, delta: delta.toolUse.input || \"\", partial: output });\n\t} else if (delta?.reasoningContent) {\n\t\tlet thinkingBlock = block;\n\t\tlet thinkingIndex = index;\n\n\t\tif (!thinkingBlock) {\n\t\t\tconst newBlock: Block = { type: \"thinking\", thinking: \"\", thinkingSignature: \"\", index: contentBlockIndex };\n\t\t\toutput.content.push(newBlock);\n\t\t\tthinkingIndex = blocks.length - 1;\n\t\t\tthinkingBlock = blocks[thinkingIndex];\n\t\t\tstream.push({ type: \"thinking_start\", contentIndex: thinkingIndex, partial: output });\n\t\t}\n\n\t\tif (thinkingBlock?.type === \"thinking\") {\n\t\t\tif (delta.reasoningContent.text) {\n\t\t\t\tthinkingBlock.thinking += delta.reasoningContent.text;\n\t\t\t\tstream.push({\n\t\t\t\t\ttype: \"thinking_delta\",\n\t\t\t\t\tcontentIndex: thinkingIndex,\n\t\t\t\t\tdelta: delta.reasoningContent.text,\n\t\t\t\t\tpartial: output,\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (delta.reasoningContent.signature) {\n\t\t\t\tthinkingBlock.thinkingSignature =\n\t\t\t\t\t(thinkingBlock.thinkingSignature || \"\") + delta.reasoningContent.signature;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction handleMetadata(\n\tevent: ConverseStreamMetadataEvent,\n\tmodel: Model<\"bedrock-converse-stream\">,\n\toutput: AssistantMessage,\n): void {\n\tif (event.usage) {\n\t\toutput.usage.input = event.usage.inputTokens || 0;\n\t\toutput.usage.output = event.usage.outputTokens || 0;\n\t\toutput.usage.cacheRead = event.usage.cacheReadInputTokens || 0;\n\t\toutput.usage.cacheWrite = event.usage.cacheWriteInputTokens || 0;\n\t\toutput.usage.totalTokens = event.usage.totalTokens || output.usage.input + output.usage.output;\n\t\tcalculateCost(model, output.usage);\n\t}\n}\n\nfunction handleContentBlockStop(\n\tevent: ContentBlockStopEvent,\n\tblocks: Block[],\n\toutput: AssistantMessage,\n\tstream: AssistantMessageEventStream,\n): void {\n\tconst index = blocks.findIndex((b) => b.index === event.contentBlockIndex);\n\tconst block = blocks[index];\n\tif (!block) return;\n\tdelete (block as Block).index;\n\n\tswitch (block.type) {\n\t\tcase \"text\":\n\t\t\tstream.push({ type: \"text_end\", contentIndex: index, content: block.text, partial: output });\n\t\t\tbreak;\n\t\tcase \"thinking\":\n\t\t\tstream.push({ type: \"thinking_end\", contentIndex: index, content: block.thinking, partial: output });\n\t\t\tbreak;\n\t\tcase \"toolCall\":\n\t\t\tblock.arguments = parseStreamingJson(block.partialJson);\n\t\t\t// Finalize in-place and strip the scratch buffer so replay only\n\t\t\t// carries parsed arguments.\n\t\t\tdelete (block as Block).partialJson;\n\t\t\tstream.push({ type: \"toolcall_end\", contentIndex: index, toolCall: block, partial: output });\n\t\t\tbreak;\n\t}\n}\n\n/**\n * Check if the model supports adaptive thinking (Opus 4.6+, Sonnet 4.6).\n * Checks both model ID and model name to support application inference profiles\n * whose ARNs don't contain the model name.\n */\nfunction getModelMatchCandidates(modelId: string, modelName?: string): string[] {\n\tconst values = modelName ? [modelId, modelName] : [modelId];\n\treturn values.flatMap((value) => {\n\t\tconst lower = value.toLowerCase();\n\t\treturn [lower, lower.replace(/[\\s_.:]+/g, \"-\")];\n\t});\n}\n\nfunction supportsAdaptiveThinking(modelId: string, modelName?: string): boolean {\n\tconst candidates = getModelMatchCandidates(modelId, modelName);\n\treturn candidates.some(\n\t\t(s) =>\n\t\t\ts.includes(\"opus-4-6\") ||\n\t\t\ts.includes(\"opus-4-7\") ||\n\t\t\ts.includes(\"opus-4-8\") ||\n\t\t\ts.includes(\"sonnet-4-6\") ||\n\t\t\ts.includes(\"sonnet-5\") ||\n\t\t\ts.includes(\"fable-5\"),\n\t);\n}\n\nfunction supportsNativeXhighEffort(model: Model<\"bedrock-converse-stream\">): boolean {\n\tconst candidates = getModelMatchCandidates(model.id, model.name);\n\treturn candidates.some(\n\t\t(s) => s.includes(\"opus-4-7\") || s.includes(\"opus-4-8\") || s.includes(\"sonnet-5\") || s.includes(\"fable-5\"),\n\t);\n}\n\nfunction mapThinkingLevelToEffort(\n\tmodel: Model<\"bedrock-converse-stream\">,\n\tlevel: SimpleStreamOptions[\"reasoning\"],\n): \"low\" | \"medium\" | \"high\" | \"xhigh\" | \"max\" {\n\tif (level === \"xhigh\" && supportsNativeXhighEffort(model)) return \"xhigh\";\n\n\tconst mapped = level ? model.thinkingLevelMap?.[level] : undefined;\n\tif (typeof mapped === \"string\") return mapped as \"low\" | \"medium\" | \"high\" | \"xhigh\" | \"max\";\n\n\tswitch (level) {\n\t\tcase \"minimal\":\n\t\tcase \"low\":\n\t\t\treturn \"low\";\n\t\tcase \"medium\":\n\t\t\treturn \"medium\";\n\t\tcase \"high\":\n\t\t\treturn \"high\";\n\t\tdefault:\n\t\t\treturn \"high\";\n\t}\n}\n\n/**\n * Resolve cache retention preference.\n * Defaults to \"short\" and uses PI_CACHE_RETENTION for backward compatibility.\n */\nfunction resolveCacheRetention(cacheRetention?: CacheRetention, env?: ProviderEnv): CacheRetention {\n\tif (cacheRetention) {\n\t\treturn cacheRetention;\n\t}\n\tif (getProviderEnvValue(\"PI_CACHE_RETENTION\", env) === \"long\") {\n\t\treturn \"long\";\n\t}\n\treturn \"short\";\n}\n\n/**\n * Check if the model is an Anthropic Claude model on Bedrock.\n * Checks both model ID and model name to support application inference profiles\n * whose ARNs don't contain the model name.\n */\nfunction isAnthropicClaudeModel(model: Model<\"bedrock-converse-stream\">): boolean {\n\tconst id = model.id.toLowerCase();\n\tconst name = model.name?.toLowerCase() ?? \"\";\n\treturn (\n\t\tid.includes(\"anthropic.claude\") ||\n\t\tid.includes(\"anthropic/claude\") ||\n\t\tname.includes(\"anthropic.claude\") ||\n\t\tname.includes(\"anthropic/claude\") ||\n\t\tname.includes(\"claude\")\n\t);\n}\n\n/**\n * Check if the model supports prompt caching.\n * Supported: Claude 3.5 Haiku, Claude 3.7 Sonnet, Claude 4.x models, Claude 5 models\n *\n * For base models and system-defined inference profiles the model ID / ARN\n * contains the model name, so we can decide locally.\n *\n * For application inference profiles (whose ARNs don't contain the model name),\n * also checks model.name which is user-controlled via models.json or registerProvider.\n * As a last resort, set AWS_BEDROCK_FORCE_CACHE=1 to enable cache points.\n * Amazon Nova models have automatic caching and don't need explicit cache points.\n */\nfunction supportsPromptCaching(model: Model<\"bedrock-converse-stream\">, env?: ProviderEnv): boolean {\n\tconst candidates = getModelMatchCandidates(model.id, model.name);\n\n\tconst hasClaudeRef = candidates.some((s) => s.includes(\"claude\"));\n\tif (!hasClaudeRef) {\n\t\t// Application inference profiles don't contain the model name in the ARN.\n\t\t// Allow users to force cache points via environment variable.\n\t\tif (getProviderEnvValue(\"AWS_BEDROCK_FORCE_CACHE\", env) === \"1\") return true;\n\t\treturn false;\n\t}\n\t// Claude 5 models (fable-5, sonnet-5)\n\tif (candidates.some((s) => s.includes(\"fable-5\") || s.includes(\"sonnet-5\"))) return true;\n\t// Claude 4.x models (opus-4, sonnet-4, haiku-4)\n\tif (candidates.some((s) => s.includes(\"-4-\"))) return true;\n\t// Claude 3.7 Sonnet\n\tif (candidates.some((s) => s.includes(\"claude-3-7-sonnet\"))) return true;\n\t// Claude 3.5 Haiku\n\tif (candidates.some((s) => s.includes(\"claude-3-5-haiku\"))) return true;\n\treturn false;\n}\n\n/**\n * Check if the model supports thinking signatures in reasoningContent.\n * Only Anthropic Claude models support the signature field.\n * Other models (OpenAI, Qwen, Minimax, Moonshot, etc.) reject it with:\n * \"This model doesn't support the reasoningContent.reasoningText.signature field\"\n *\n * Checks both model ID and model name to support application inference profiles.\n */\nfunction supportsThinkingSignature(model: Model<\"bedrock-converse-stream\">): boolean {\n\treturn isAnthropicClaudeModel(model);\n}\n\nfunction buildSystemPrompt(\n\tsystemPrompt: string | undefined,\n\tmodel: Model<\"bedrock-converse-stream\">,\n\tcacheRetention: CacheRetention,\n\tenv?: ProviderEnv,\n): SystemContentBlock[] | undefined {\n\tif (!systemPrompt) return undefined;\n\n\tconst blocks: SystemContentBlock[] = [{ text: sanitizeSurrogates(systemPrompt) }];\n\n\t// Add cache point for supported Claude models when caching is enabled\n\tif (cacheRetention !== \"none\" && supportsPromptCaching(model, env)) {\n\t\tblocks.push({\n\t\t\tcachePoint: { type: CachePointType.DEFAULT, ...(cacheRetention === \"long\" ? { ttl: CacheTTL.ONE_HOUR } : {}) },\n\t\t});\n\t}\n\n\treturn blocks;\n}\n\nfunction normalizeToolCallId(id: string): string {\n\tconst sanitized = id.replace(/[^a-zA-Z0-9_-]/g, \"_\");\n\treturn sanitized.length > 64 ? sanitized.slice(0, 64) : sanitized;\n}\n\nfunction createNonBlankTextBlock(text: string): ContentBlock.TextMember | undefined {\n\tconst sanitized = sanitizeSurrogates(text);\n\treturn sanitized.trim().length === 0 ? undefined : { text: sanitized };\n}\n\nfunction createRequiredTextBlock(text: string): ContentBlock.TextMember {\n\treturn createNonBlankTextBlock(text) ?? { text: EMPTY_TEXT_PLACEHOLDER };\n}\n\nfunction convertToolResultContent(content: (TextContent | ImageContent)[]): ToolResultContentBlock[] {\n\tconst result: ToolResultContentBlock[] = [];\n\tfor (const c of content) {\n\t\tif (c.type === \"image\") {\n\t\t\tresult.push({ image: createImageBlock(c.mimeType, c.data) });\n\t\t} else {\n\t\t\tconst textBlock = createNonBlankTextBlock(c.text);\n\t\t\tif (textBlock) result.push(textBlock);\n\t\t}\n\t}\n\tif (result.length === 0) result.push({ text: EMPTY_TEXT_PLACEHOLDER });\n\treturn result;\n}\n\nfunction convertMessages(\n\tcontext: Context,\n\tmodel: Model<\"bedrock-converse-stream\">,\n\tcacheRetention: CacheRetention,\n\tenv?: ProviderEnv,\n): Message[] {\n\tconst result: Message[] = [];\n\tconst transformedMessages = transformMessages(context.messages, model, normalizeToolCallId);\n\n\tfor (let i = 0; i < transformedMessages.length; i++) {\n\t\tconst m = transformedMessages[i];\n\n\t\tswitch (m.role) {\n\t\t\tcase \"user\": {\n\t\t\t\tconst content: ContentBlock[] = [];\n\t\t\t\tif (typeof m.content === \"string\") {\n\t\t\t\t\tcontent.push(createRequiredTextBlock(m.content));\n\t\t\t\t} else {\n\t\t\t\t\tfor (const c of m.content) {\n\t\t\t\t\t\tswitch (c.type) {\n\t\t\t\t\t\t\tcase \"text\": {\n\t\t\t\t\t\t\t\tconst textBlock = createNonBlankTextBlock(c.text);\n\t\t\t\t\t\t\t\tif (textBlock) content.push(textBlock);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tcase \"image\":\n\t\t\t\t\t\t\t\tcontent.push({ image: createImageBlock(c.mimeType, c.data) });\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (content.length === 0) content.push({ text: EMPTY_TEXT_PLACEHOLDER });\n\t\t\t\t}\n\t\t\t\tresult.push({\n\t\t\t\t\trole: ConversationRole.USER,\n\t\t\t\t\tcontent,\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"assistant\": {\n\t\t\t\t// Skip assistant messages with empty content (e.g., from aborted requests)\n\t\t\t\t// Bedrock rejects messages with empty content arrays\n\t\t\t\tif (m.content.length === 0) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst contentBlocks: ContentBlock[] = [];\n\t\t\t\tfor (const c of m.content) {\n\t\t\t\t\tswitch (c.type) {\n\t\t\t\t\t\tcase \"text\": {\n\t\t\t\t\t\t\t// Skip empty text blocks\n\t\t\t\t\t\t\tconst textBlock = createNonBlankTextBlock(c.text);\n\t\t\t\t\t\t\tif (!textBlock) continue;\n\t\t\t\t\t\t\tcontentBlocks.push(textBlock);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcase \"toolCall\":\n\t\t\t\t\t\t\tcontentBlocks.push({\n\t\t\t\t\t\t\t\ttoolUse: { toolUseId: c.id, name: c.name, input: c.arguments },\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"thinking\": {\n\t\t\t\t\t\t\t// Skip empty thinking blocks\n\t\t\t\t\t\t\tconst thinking = sanitizeSurrogates(c.thinking);\n\t\t\t\t\t\t\tif (thinking.trim().length === 0) continue;\n\t\t\t\t\t\t\t// Only Anthropic models support the signature field in reasoningText.\n\t\t\t\t\t\t\t// For other models, we omit the signature to avoid errors like:\n\t\t\t\t\t\t\t// \"This model doesn't support the reasoningContent.reasoningText.signature field\"\n\t\t\t\t\t\t\tif (supportsThinkingSignature(model)) {\n\t\t\t\t\t\t\t\t// Signatures arrive after thinking deltas. If a partial or externally\n\t\t\t\t\t\t\t\t// persisted message lacks a signature, Bedrock rejects the replayed\n\t\t\t\t\t\t\t\t// reasoning block. Fall back to plain text, matching Anthropic.\n\t\t\t\t\t\t\t\tif (!c.thinkingSignature || c.thinkingSignature.trim().length === 0) {\n\t\t\t\t\t\t\t\t\tcontentBlocks.push({ text: thinking });\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcontentBlocks.push({\n\t\t\t\t\t\t\t\t\t\treasoningContent: {\n\t\t\t\t\t\t\t\t\t\t\treasoningText: {\n\t\t\t\t\t\t\t\t\t\t\t\ttext: thinking,\n\t\t\t\t\t\t\t\t\t\t\t\tsignature: c.thinkingSignature,\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcontentBlocks.push({\n\t\t\t\t\t\t\t\t\treasoningContent: {\n\t\t\t\t\t\t\t\t\t\treasoningText: { text: thinking },\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// Skip if all content blocks were filtered out\n\t\t\t\tif (contentBlocks.length === 0) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tresult.push({\n\t\t\t\t\trole: ConversationRole.ASSISTANT,\n\t\t\t\t\tcontent: contentBlocks,\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"toolResult\": {\n\t\t\t\t// Collect all consecutive toolResult messages into a single user message\n\t\t\t\t// Bedrock requires all tool results to be in one message\n\t\t\t\tconst toolResults: ContentBlock.ToolResultMember[] = [];\n\n\t\t\t\t// Add current tool result with all content blocks combined\n\t\t\t\ttoolResults.push({\n\t\t\t\t\ttoolResult: {\n\t\t\t\t\t\ttoolUseId: m.toolCallId,\n\t\t\t\t\t\tcontent: convertToolResultContent(m.content),\n\t\t\t\t\t\tstatus: m.isError ? ToolResultStatus.ERROR : ToolResultStatus.SUCCESS,\n\t\t\t\t\t},\n\t\t\t\t});\n\n\t\t\t\t// Look ahead for consecutive toolResult messages\n\t\t\t\tlet j = i + 1;\n\t\t\t\twhile (j < transformedMessages.length && transformedMessages[j].role === \"toolResult\") {\n\t\t\t\t\tconst nextMsg = transformedMessages[j] as ToolResultMessage;\n\t\t\t\t\ttoolResults.push({\n\t\t\t\t\t\ttoolResult: {\n\t\t\t\t\t\t\ttoolUseId: nextMsg.toolCallId,\n\t\t\t\t\t\t\tcontent: convertToolResultContent(nextMsg.content),\n\t\t\t\t\t\t\tstatus: nextMsg.isError ? ToolResultStatus.ERROR : ToolResultStatus.SUCCESS,\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t\tj++;\n\t\t\t\t}\n\n\t\t\t\t// Skip the messages we've already processed\n\t\t\t\ti = j - 1;\n\n\t\t\t\tresult.push({\n\t\t\t\t\trole: ConversationRole.USER,\n\t\t\t\t\tcontent: toolResults,\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tdefault:\n\t\t\t\tcontinue;\n\t\t}\n\t}\n\n\t// Add cache point to the last user message for supported Claude models when caching is enabled\n\tif (cacheRetention !== \"none\" && supportsPromptCaching(model, env) && result.length > 0) {\n\t\tconst lastMessage = result[result.length - 1];\n\t\tif (lastMessage.role === ConversationRole.USER && lastMessage.content) {\n\t\t\t(lastMessage.content as ContentBlock[]).push({\n\t\t\t\tcachePoint: {\n\t\t\t\t\ttype: CachePointType.DEFAULT,\n\t\t\t\t\t...(cacheRetention === \"long\" ? { ttl: CacheTTL.ONE_HOUR } : {}),\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\t}\n\n\treturn result;\n}\n\nfunction convertToolConfig(\n\ttools: Tool[] | undefined,\n\ttoolChoice: BedrockOptions[\"toolChoice\"],\n): ToolConfiguration | undefined {\n\tif (!tools?.length || toolChoice === \"none\") return undefined;\n\n\tconst bedrockTools: BedrockTool[] = tools.map((tool) => ({\n\t\ttoolSpec: {\n\t\t\tname: tool.name,\n\t\t\tdescription: tool.description,\n\t\t\tinputSchema: { json: tool.parameters as unknown as DocumentType },\n\t\t},\n\t}));\n\n\tlet bedrockToolChoice: ToolChoice | undefined;\n\tswitch (toolChoice) {\n\t\tcase \"auto\":\n\t\t\tbedrockToolChoice = { auto: {} };\n\t\t\tbreak;\n\t\tcase \"any\":\n\t\t\tbedrockToolChoice = { any: {} };\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tif (toolChoice?.type === \"tool\") {\n\t\t\t\tbedrockToolChoice = { tool: { name: toolChoice.name } };\n\t\t\t}\n\t}\n\n\treturn { tools: bedrockTools, toolChoice: bedrockToolChoice };\n}\n\nfunction mapStopReason(reason: string | undefined): StopReason {\n\tswitch (reason) {\n\t\tcase BedrockStopReason.END_TURN:\n\t\tcase BedrockStopReason.STOP_SEQUENCE:\n\t\t\treturn \"stop\";\n\t\tcase BedrockStopReason.MAX_TOKENS:\n\t\tcase BedrockStopReason.MODEL_CONTEXT_WINDOW_EXCEEDED:\n\t\t\treturn \"length\";\n\t\tcase BedrockStopReason.TOOL_USE:\n\t\t\treturn \"toolUse\";\n\t\tdefault:\n\t\t\treturn \"error\";\n\t}\n}\n\nfunction getConfiguredBedrockRegion(options: BedrockOptions): string | undefined {\n\treturn (\n\t\toptions.region ||\n\t\tgetProviderEnvValue(\"AWS_REGION\", options.env) ||\n\t\tgetProviderEnvValue(\"AWS_DEFAULT_REGION\", options.env) ||\n\t\tundefined\n\t);\n}\n\nfunction getConfiguredBedrockCredentials(env?: ProviderEnv): BedrockRuntimeClientConfig[\"credentials\"] | undefined {\n\tconst accessKeyId = getProviderEnvValue(\"AWS_ACCESS_KEY_ID\", env);\n\tconst secretAccessKey = getProviderEnvValue(\"AWS_SECRET_ACCESS_KEY\", env);\n\tif (!accessKeyId || !secretAccessKey) {\n\t\treturn undefined;\n\t}\n\tconst sessionToken = getProviderEnvValue(\"AWS_SESSION_TOKEN\", env);\n\treturn {\n\t\taccessKeyId,\n\t\tsecretAccessKey,\n\t\t...(sessionToken ? { sessionToken } : {}),\n\t};\n}\n\nfunction getStandardBedrockEndpointRegion(baseUrl: string | undefined): string | undefined {\n\tif (!baseUrl) {\n\t\treturn undefined;\n\t}\n\n\ttry {\n\t\tconst { hostname } = new URL(baseUrl);\n\t\tconst match = hostname.toLowerCase().match(/^bedrock-runtime(?:-fips)?\\.([a-z0-9-]+)\\.amazonaws\\.com(?:\\.cn)?$/);\n\t\treturn match?.[1];\n\t} catch {\n\t\treturn undefined;\n\t}\n}\n\nfunction shouldUseExplicitBedrockEndpoint(\n\tbaseUrl: string,\n\tconfiguredRegion: string | undefined,\n\thasAmbientConfiguredProfile: boolean,\n): boolean {\n\tconst endpointRegion = getStandardBedrockEndpointRegion(baseUrl);\n\tif (!endpointRegion) {\n\t\treturn true;\n\t}\n\n\treturn !configuredRegion && !hasAmbientConfiguredProfile;\n}\n\nfunction isGovCloudBedrockTarget(model: Model<\"bedrock-converse-stream\">, options: BedrockOptions): boolean {\n\tconst region = getConfiguredBedrockRegion(options);\n\tif (region?.toLowerCase().startsWith(\"us-gov-\")) {\n\t\treturn true;\n\t}\n\n\tconst modelId = model.id.toLowerCase();\n\treturn modelId.startsWith(\"us-gov.\") || modelId.startsWith(\"arn:aws-us-gov:\");\n}\n\nfunction buildAdditionalModelRequestFields(\n\tmodel: Model<\"bedrock-converse-stream\">,\n\toptions: BedrockOptions,\n): Record<string, any> | undefined {\n\tif (!options.reasoning || !model.reasoning) {\n\t\treturn undefined;\n\t}\n\n\tif (isAnthropicClaudeModel(model)) {\n\t\t// GovCloud Bedrock currently rejects the Claude thinking.display field.\n\t\t// Omit it there until the GovCloud Converse schema catches up.\n\t\tconst display = isGovCloudBedrockTarget(model, options) ? undefined : (options.thinkingDisplay ?? \"summarized\");\n\t\tconst result: Record<string, any> = supportsAdaptiveThinking(model.id, model.name)\n\t\t\t? {\n\t\t\t\t\tthinking: { type: \"adaptive\", ...(display !== undefined ? { display } : {}) },\n\t\t\t\t\toutput_config: { effort: mapThinkingLevelToEffort(model, options.reasoning) },\n\t\t\t\t}\n\t\t\t: (() => {\n\t\t\t\t\tconst defaultBudgets: Record<ThinkingLevel, number> = {\n\t\t\t\t\t\tminimal: 1024,\n\t\t\t\t\t\tlow: 2048,\n\t\t\t\t\t\tmedium: 8192,\n\t\t\t\t\t\thigh: 16384,\n\t\t\t\t\t\txhigh: 16384, // Claude doesn't support xhigh, clamp to high\n\t\t\t\t\t\tmax: 16384, // Claude doesn't support max, clamp to high\n\t\t\t\t\t};\n\n\t\t\t\t\t// Custom budgets override defaults (xhigh/max not in ThinkingBudgets, use high)\n\t\t\t\t\tconst level = options.reasoning === \"xhigh\" || options.reasoning === \"max\" ? \"high\" : options.reasoning;\n\t\t\t\t\tconst budget = options.thinkingBudgets?.[level] ?? defaultBudgets[options.reasoning];\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tthinking: {\n\t\t\t\t\t\t\ttype: \"enabled\",\n\t\t\t\t\t\t\tbudget_tokens: budget,\n\t\t\t\t\t\t\t...(display !== undefined ? { display } : {}),\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t})();\n\n\t\tif (!supportsAdaptiveThinking(model.id, model.name) && (options.interleavedThinking ?? true)) {\n\t\t\tresult.anthropic_beta = [\"interleaved-thinking-2025-05-14\"];\n\t\t}\n\n\t\treturn result;\n\t}\n\n\treturn undefined;\n}\n\nfunction createImageBlock(mimeType: string, data: string) {\n\tlet format: ImageFormat;\n\tswitch (mimeType) {\n\t\tcase \"image/jpeg\":\n\t\tcase \"image/jpg\":\n\t\t\tformat = ImageFormat.JPEG;\n\t\t\tbreak;\n\t\tcase \"image/png\":\n\t\t\tformat = ImageFormat.PNG;\n\t\t\tbreak;\n\t\tcase \"image/gif\":\n\t\t\tformat = ImageFormat.GIF;\n\t\t\tbreak;\n\t\tcase \"image/webp\":\n\t\t\tformat = ImageFormat.WEBP;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tthrow new Error(`Unknown image type: ${mimeType}`);\n\t}\n\n\tconst binaryString = atob(data);\n\tconst bytes = new Uint8Array(binaryString.length);\n\tfor (let i = 0; i < binaryString.length; i++) {\n\t\tbytes[i] = binaryString.charCodeAt(i);\n\t}\n\n\treturn { source: { bytes }, format };\n}\n"]}
1
+ {"version":3,"file":"bedrock-converse-stream.js","sourceRoot":"","sources":["../../src/api/bedrock-converse-stream.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Agent as HttpsAgent } from \"node:https\";\nimport {\n\tBedrockRuntimeClient,\n\ttype BedrockRuntimeClientConfig,\n\tBedrockRuntimeServiceException,\n\tStopReason as BedrockStopReason,\n\ttype Tool as BedrockTool,\n\tCachePointType,\n\tCacheTTL,\n\ttype ContentBlock,\n\ttype ContentBlockDeltaEvent,\n\ttype ContentBlockStartEvent,\n\ttype ContentBlockStopEvent,\n\tConversationRole,\n\tConverseStreamCommand,\n\ttype ConverseStreamMetadataEvent,\n\tImageFormat,\n\ttype Message,\n\ttype SystemContentBlock,\n\ttype ToolChoice,\n\ttype ToolConfiguration,\n\ttype ToolResultContentBlock,\n\tToolResultStatus,\n} from \"@aws-sdk/client-bedrock-runtime\";\nimport { NodeHttpHandler } from \"@smithy/node-http-handler\";\nimport type { BuildMiddleware, DocumentType, MetadataBearer } from \"@smithy/types\";\nimport { HttpProxyAgent } from \"http-proxy-agent\";\nimport { HttpsProxyAgent } from \"https-proxy-agent\";\nimport { calculateCost } from \"../models.ts\";\nimport type {\n\tApi,\n\tAssistantMessage,\n\tCacheRetention,\n\tContext,\n\tImageContent,\n\tModel,\n\tProviderEnv,\n\tSimpleStreamOptions,\n\tStopReason,\n\tStreamFunction,\n\tStreamOptions,\n\tTextContent,\n\tThinkingBudgets,\n\tThinkingContent,\n\tThinkingLevel,\n\tTool,\n\tToolCall,\n\tToolResultMessage,\n} from \"../types.ts\";\nimport { normalizeProviderError } from \"../utils/error-body.ts\";\nimport { AssistantMessageEventStream } from \"../utils/event-stream.ts\";\nimport { providerHeadersToRecord } from \"../utils/headers.ts\";\nimport { parseStreamingJson } from \"../utils/json-parse.ts\";\nimport { resolveHttpProxyUrlForTarget } from \"../utils/node-http-proxy.ts\";\nimport { getProviderEnvValue } from \"../utils/provider-env.ts\";\nimport { sanitizeSurrogates } from \"../utils/sanitize-unicode.ts\";\nimport { resolveJsonSchemaStrictSampling } from \"./constrained-sampling.ts\";\nimport {\n\tadjustMaxTokensForThinking,\n\tbuildBaseOptions,\n\tclampMaxTokensToContext,\n\tclampReasoning,\n} from \"./simple-options.ts\";\nimport { transformMessages } from \"./transform-messages.ts\";\n\nexport type BedrockThinkingDisplay = \"summarized\" | \"omitted\";\n\nexport interface BedrockOptions extends StreamOptions {\n\tregion?: string;\n\tprofile?: string;\n\ttoolChoice?: \"auto\" | \"any\" | \"none\" | { type: \"tool\"; name: string };\n\t/* See https://docs.aws.amazon.com/bedrock/latest/userguide/inference-reasoning.html for supported models. */\n\treasoning?: ThinkingLevel;\n\t/* Custom token budgets per thinking level. Overrides default budgets. */\n\tthinkingBudgets?: ThinkingBudgets;\n\t/* Only supported by Claude 4.x models, see https://docs.aws.amazon.com/bedrock/latest/userguide/claude-messages-extended-thinking.html#claude-messages-extended-thinking-tool-use-interleaved */\n\tinterleavedThinking?: boolean;\n\t/**\n\t * Controls how Claude's thinking content is returned in responses.\n\t * - \"summarized\": Thinking blocks contain summarized thinking text (default here).\n\t * - \"omitted\": Thinking content is redacted but the signature still travels back\n\t * for multi-turn continuity, reducing time-to-first-text-token.\n\t *\n\t * Note: Anthropic's API default for Claude Opus 4.8 and Mythos Preview is\n\t * \"omitted\". We default to \"summarized\" here to keep behavior consistent with\n\t * older Claude 4 models. Only applies to Claude models on Bedrock.\n\t */\n\tthinkingDisplay?: BedrockThinkingDisplay;\n\t/** Key-value pairs attached to the inference request for cost allocation tagging.\n\t * Keys: max 64 chars, no `aws:` prefix. Values: max 256 chars. Max 50 pairs.\n\t * Tags appear in AWS Cost Explorer split cost allocation data.\n\t * @see https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_ConverseStream.html */\n\trequestMetadata?: Record<string, string>;\n\t/** Bearer token for Bedrock API key authentication.\n\t * When set, bypasses SigV4 signing and sends Authorization: Bearer <token> instead.\n\t * Requires `bedrock:CallWithBearerToken` IAM permission on the token's identity.\n\t * Set via AWS_BEARER_TOKEN_BEDROCK env var or pass directly.\n\t * @see https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonbedrock.html */\n\tbearerToken?: string;\n}\n\ntype Block = (TextContent | ThinkingContent | ToolCall) & { index?: number; partialJson?: string };\n\nconst EMPTY_TEXT_PLACEHOLDER = \"<empty>\";\n\nexport const stream: StreamFunction<\"bedrock-converse-stream\", BedrockOptions> = (\n\tmodel: Model<\"bedrock-converse-stream\">,\n\tcontext: Context,\n\toptions: BedrockOptions = {},\n): AssistantMessageEventStream => {\n\tconst stream = new AssistantMessageEventStream();\n\n\t(async () => {\n\t\tconst output: AssistantMessage = {\n\t\t\trole: \"assistant\",\n\t\t\tcontent: [],\n\t\t\tapi: \"bedrock-converse-stream\" as Api,\n\t\t\tprovider: model.provider,\n\t\t\tmodel: model.id,\n\t\t\tusage: {\n\t\t\t\tinput: 0,\n\t\t\t\toutput: 0,\n\t\t\t\tcacheRead: 0,\n\t\t\t\tcacheWrite: 0,\n\t\t\t\ttotalTokens: 0,\n\t\t\t\tcost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 },\n\t\t\t},\n\t\t\tstopReason: \"pending\",\n\t\t\ttimestamp: Date.now(),\n\t\t};\n\n\t\tconst blocks = output.content as Block[];\n\n\t\t// A profile explicitly configured through pi's auth flow (the `profile`\n\t\t// option or scoped `AWS_PROFILE` on the stored credential's env) must win\n\t\t// over ambient AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY. The SDK default\n\t\t// chain already prefers a configured profile over env keys, but only when\n\t\t// `credentials` is not set on the client config. See #6957.\n\t\tconst optionsProfile = options.profile || options.env?.AWS_PROFILE;\n\t\tconst config: BedrockRuntimeClientConfig = {\n\t\t\tprofile: optionsProfile || getProviderEnvValue(\"AWS_PROFILE\", options.env),\n\t\t};\n\t\tconst configuredRegion = getConfiguredBedrockRegion(options);\n\t\tconst hasAmbientConfiguredProfile = Boolean(getProviderEnvValue(\"AWS_PROFILE\"));\n\t\tconst endpointRegion = getStandardBedrockEndpointRegion(model.baseUrl);\n\t\tconst useExplicitEndpoint = shouldUseExplicitBedrockEndpoint(\n\t\t\tmodel.baseUrl,\n\t\t\tconfiguredRegion,\n\t\t\thasAmbientConfiguredProfile,\n\t\t);\n\n\t\t// Only pin standard AWS Bedrock runtime endpoints when no region or ambient AWS_PROFILE is configured.\n\t\t// This preserves custom endpoints (VPC/proxy) from #3402 without forcing built-in\n\t\t// catalog defaults such as us-east-1 to override AWS_REGION/AWS_PROFILE.\n\t\tif (useExplicitEndpoint) {\n\t\t\tconfig.endpoint = model.baseUrl;\n\t\t}\n\n\t\t// Resolve bearer token for Bedrock API key auth.\n\t\tconst skipAuth = getProviderEnvValue(\"AWS_BEDROCK_SKIP_AUTH\", options.env) === \"1\";\n\t\tconst bearerToken =\n\t\t\toptions.bearerToken ||\n\t\t\toptions.apiKey ||\n\t\t\tgetProviderEnvValue(\"AWS_BEARER_TOKEN_BEDROCK\", options.env) ||\n\t\t\tundefined;\n\t\tconst useBearerToken = bearerToken !== undefined && !skipAuth;\n\n\t\t// in Node.js/Bun environment only\n\t\tif (typeof process !== \"undefined\" && (process.versions?.node || process.versions?.bun)) {\n\t\t\t// Region resolution: ARN-embedded > explicit option > env vars > SDK default chain.\n\t\t\t// When the model ID is an inference profile ARN, extract the region from it.\n\t\t\t// This avoids conflicts with AWS_REGION set for other services.\n\t\t\tconst arnRegionMatch = model.id.match(/^arn:aws(?:-[a-z0-9-]+)?:bedrock:([a-z0-9-]+):/);\n\t\t\tif (arnRegionMatch) {\n\t\t\t\tconfig.region = arnRegionMatch[1];\n\t\t\t} else if (configuredRegion) {\n\t\t\t\tconfig.region = configuredRegion;\n\t\t\t} else if (endpointRegion && useExplicitEndpoint) {\n\t\t\t\tconfig.region = endpointRegion;\n\t\t\t} else if (!hasAmbientConfiguredProfile) {\n\t\t\t\tconfig.region = \"us-east-1\";\n\t\t\t}\n\n\t\t\t// Support proxies that don't need authentication\n\t\t\tif (skipAuth) {\n\t\t\t\tconfig.credentials = {\n\t\t\t\t\taccessKeyId: \"dummy-access-key\",\n\t\t\t\t\tsecretAccessKey: \"dummy-secret-key\",\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tconst credentials = getConfiguredBedrockCredentials(options.env);\n\t\t\tif (!skipAuth && credentials && !optionsProfile) {\n\t\t\t\tconfig.credentials = credentials;\n\t\t\t}\n\n\t\t\tconst proxyUrl = resolveHttpProxyUrlForTarget(model.baseUrl, options.env);\n\t\t\tif (proxyUrl) {\n\t\t\t\t// Bedrock runtime uses NodeHttp2Handler by default since v3.798.0, which is based\n\t\t\t\t// on `http2` module and has no support for http agent.\n\t\t\t\t// Use NodeHttpHandler to support HTTP(S) proxy agents.\n\t\t\t\tconfig.requestHandler = new NodeHttpHandler({\n\t\t\t\t\thttpAgent: new HttpProxyAgent(proxyUrl),\n\t\t\t\t\thttpsAgent: new HttpsProxyAgent(proxyUrl) as unknown as HttpsAgent,\n\t\t\t\t});\n\t\t\t} else if (getProviderEnvValue(\"AWS_BEDROCK_FORCE_HTTP1\", options.env) === \"1\") {\n\t\t\t\t// Some custom endpoints require HTTP/1.1 instead of HTTP/2\n\t\t\t\tconfig.requestHandler = new NodeHttpHandler();\n\t\t\t}\n\t\t} else {\n\t\t\t// Non-Node environment (browser): fall back to us-east-1 since\n\t\t\t// there's no config file resolution available.\n\t\t\tconfig.region =\n\t\t\t\tconfiguredRegion || (endpointRegion && useExplicitEndpoint ? endpointRegion : undefined) || \"us-east-1\";\n\t\t}\n\n\t\tif (useBearerToken) {\n\t\t\tconfig.token = { token: bearerToken };\n\t\t\tconfig.authSchemePreference = [\"httpBearerAuth\"];\n\t\t}\n\n\t\ttry {\n\t\t\tconst client = new BedrockRuntimeClient(config);\n\t\t\tconst customHeaders = providerHeadersToRecord(options.headers);\n\t\t\tif (customHeaders) {\n\t\t\t\taddCustomHeadersMiddleware(client, customHeaders);\n\t\t\t}\n\t\t\tconst cacheRetention = resolveCacheRetention(options.cacheRetention, options.env);\n\t\t\tconst inferenceMaxTokens = options.maxTokens ?? (isAnthropicClaudeModel(model) ? model.maxTokens : undefined);\n\t\t\tlet commandInput = {\n\t\t\t\tmodelId: model.id,\n\t\t\t\tmessages: convertMessages(context, model, cacheRetention, options.env),\n\t\t\t\tsystem: buildSystemPrompt(context.systemPrompt, model, cacheRetention, options.env),\n\t\t\t\tinferenceConfig: {\n\t\t\t\t\t...(inferenceMaxTokens !== undefined && { maxTokens: inferenceMaxTokens }),\n\t\t\t\t\t...(options.temperature !== undefined && { temperature: options.temperature }),\n\t\t\t\t},\n\t\t\t\ttoolConfig: convertToolConfig(context.tools, options.toolChoice, model.compat?.supportsStrictMode ?? false),\n\t\t\t\tadditionalModelRequestFields: buildAdditionalModelRequestFields(model, options),\n\t\t\t\t...(options.requestMetadata !== undefined && { requestMetadata: options.requestMetadata }),\n\t\t\t};\n\t\t\tconst nextCommandInput = await options?.onPayload?.(commandInput, model);\n\t\t\tif (nextCommandInput !== undefined) {\n\t\t\t\tcommandInput = nextCommandInput as typeof commandInput;\n\t\t\t}\n\t\t\tconst command = new ConverseStreamCommand(commandInput);\n\n\t\t\tconst response = await client.send(command, { abortSignal: options.signal });\n\t\t\tif (response.$metadata.httpStatusCode !== undefined) {\n\t\t\t\tconst responseHeaders: Record<string, string> = {};\n\t\t\t\tif (response.$metadata.requestId) {\n\t\t\t\t\tresponseHeaders[\"x-amzn-requestid\"] = response.$metadata.requestId;\n\t\t\t\t}\n\t\t\t\tawait options?.onResponse?.({ status: response.$metadata.httpStatusCode, headers: responseHeaders }, model);\n\t\t\t}\n\n\t\t\tfor await (const item of response.stream!) {\n\t\t\t\tif (item.messageStart) {\n\t\t\t\t\tif (item.messageStart.role !== ConversationRole.ASSISTANT) {\n\t\t\t\t\t\tthrow new Error(\"Unexpected assistant message start but got user message start instead\");\n\t\t\t\t\t}\n\t\t\t\t\tstream.push({ type: \"start\", partial: output });\n\t\t\t\t} else if (item.contentBlockStart) {\n\t\t\t\t\thandleContentBlockStart(item.contentBlockStart, blocks, output, stream);\n\t\t\t\t} else if (item.contentBlockDelta) {\n\t\t\t\t\thandleContentBlockDelta(item.contentBlockDelta, blocks, output, stream);\n\t\t\t\t} else if (item.contentBlockStop) {\n\t\t\t\t\thandleContentBlockStop(item.contentBlockStop, blocks, output, stream);\n\t\t\t\t} else if (item.messageStop) {\n\t\t\t\t\toutput.rawStopReason = item.messageStop.stopReason;\n\t\t\t\t\tconst { stopReason, errorMessage } = mapStopReason(item.messageStop.stopReason);\n\t\t\t\t\toutput.stopReason = stopReason;\n\t\t\t\t\tif (errorMessage) {\n\t\t\t\t\t\toutput.errorMessage = errorMessage;\n\t\t\t\t\t}\n\t\t\t\t} else if (item.metadata) {\n\t\t\t\t\thandleMetadata(item.metadata, model, output);\n\t\t\t\t} else if (item.internalServerException) {\n\t\t\t\t\tthrow item.internalServerException;\n\t\t\t\t} else if (item.modelStreamErrorException) {\n\t\t\t\t\tthrow item.modelStreamErrorException;\n\t\t\t\t} else if (item.validationException) {\n\t\t\t\t\tthrow item.validationException;\n\t\t\t\t} else if (item.throttlingException) {\n\t\t\t\t\tthrow item.throttlingException;\n\t\t\t\t} else if (item.serviceUnavailableException) {\n\t\t\t\t\tthrow item.serviceUnavailableException;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (options.signal?.aborted) {\n\t\t\t\tthrow new Error(\"Request was aborted\");\n\t\t\t}\n\n\t\t\tif (output.stopReason === \"pending\") {\n\t\t\t\tthrow new Error(\"Bedrock stream ended without a stop reason\");\n\t\t\t}\n\t\t\tif (output.stopReason === \"error\" || output.stopReason === \"aborted\") {\n\t\t\t\tthrow new Error(output.errorMessage || \"An unknown error occurred\");\n\t\t\t}\n\n\t\t\tstream.push({ type: \"done\", reason: output.stopReason, message: output });\n\t\t\tstream.end();\n\t\t} catch (error) {\n\t\t\tfor (const block of output.content) {\n\t\t\t\tdelete (block as Block).index;\n\t\t\t\t// partialJson is only a streaming scratch buffer; never persist it.\n\t\t\t\tdelete (block as Block).partialJson;\n\t\t\t}\n\t\t\toutput.stopReason = options.signal?.aborted ? \"aborted\" : \"error\";\n\t\t\toutput.errorMessage = formatBedrockError(error);\n\t\t\tstream.push({ type: \"error\", reason: output.stopReason, error: output });\n\t\t\tstream.end();\n\t\t}\n\t})();\n\n\treturn stream;\n};\n\n/**\n * Human-readable prefixes for Bedrock SDK exception names.\n * The downstream retry logic in agent-session matches patterns like\n * `server.?error` and `service.?unavailable`, so we preserve the legacy\n * prefix format rather than using the raw SDK exception name.\n */\nconst BEDROCK_ERROR_PREFIXES: Record<string, string> = {\n\tInternalServerException: \"Internal server error\",\n\tModelStreamErrorException: \"Model stream error\",\n\tValidationException: \"Validation error\",\n\tThrottlingException: \"Throttling error\",\n\tServiceUnavailableException: \"Service unavailable\",\n};\n\n/**\n * Some models reject the account/profile's configured Bedrock data retention mode\n * (e.g. \"data retention mode 'default' is not available for this model\"). Point\n * users at the AWS docs explaining how to configure a supported mode.\n */\nconst BEDROCK_DATA_RETENTION_DOCS_URL = \"https://docs.aws.amazon.com/bedrock/latest/userguide/data-retention.html\";\n\n/**\n * Format a Bedrock error with a human-readable prefix.\n * AWS SDK exceptions (both from `client.send()` and from stream event items)\n * extend BedrockRuntimeServiceException. We map the `.name` to a stable\n * human-readable prefix so downstream consumers (retry logic, context-overflow\n * detection) can distinguish error categories via simple string matching.\n */\nfunction formatBedrockError(error: unknown): string {\n\tconst norm = normalizeProviderError(error);\n\t// Surface the raw HTTP body (with status) when the SDK did not fold it into\n\t// the message; otherwise fall back to the message. This is what stops a\n\t// gateway 403 from collapsing to `Unknown: UnknownError`.\n\tconst core =\n\t\t!norm.messageCarriesBody && norm.status !== undefined && norm.body !== undefined\n\t\t\t? `${norm.status}: ${norm.body}`\n\t\t\t: norm.message;\n\tconst dataRetentionHint = /data retention mode/i.test(core)\n\t\t? ` See ${BEDROCK_DATA_RETENTION_DOCS_URL} for supported data retention modes.`\n\t\t: \"\";\n\tif (error instanceof BedrockRuntimeServiceException) {\n\t\tconst prefix = BEDROCK_ERROR_PREFIXES[error.name] ?? error.name;\n\t\treturn `${prefix}: ${core}${dataRetentionHint}`;\n\t}\n\treturn `${core}${dataRetentionHint}`;\n}\n\n/**\n * Header keys that must never be overwritten by caller-supplied headers.\n * `host` and `x-amz-*` participate in the SigV4 canonical request; `authorization`\n * is owned by SigV4 or the bearer-token path (config.token + authSchemePreference).\n * Compared case-insensitively (caller key is lower-cased before lookup).\n */\nconst RESERVED_HEADER_EXACT = new Set([\"authorization\", \"host\"]);\n\nfunction isReservedHeader(key: string): boolean {\n\tconst lower = key.toLowerCase();\n\treturn lower.startsWith(\"x-amz-\") || RESERVED_HEADER_EXACT.has(lower);\n}\n\n/**\n * Attach caller-supplied headers to the outgoing Bedrock request via a Smithy\n * `build`-step middleware. The `build` step runs after request serialisation but\n * before SigV4 signing, so injected headers are covered by the signature. Reserved\n * SigV4 / auth headers (`x-amz-*`, `authorization`, `host`) are silently skipped;\n * all other caller headers override any existing same-named header on the request.\n */\nfunction addCustomHeadersMiddleware(client: BedrockRuntimeClient, headers: Record<string, string>): void {\n\tconst middleware: BuildMiddleware<object, MetadataBearer> = (next) => async (args) => {\n\t\tconst request = args.request;\n\t\tif (request && typeof request === \"object\" && \"headers\" in request) {\n\t\t\tconst requestHeaders = (request as { headers: Record<string, string> }).headers;\n\t\t\tfor (const [key, value] of Object.entries(headers)) {\n\t\t\t\tif (!isReservedHeader(key)) {\n\t\t\t\t\trequestHeaders[key] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn next(args);\n\t};\n\tclient.middlewareStack.add(middleware, { step: \"build\", name: \"pi-ai-custom-headers\", priority: \"low\" });\n}\n\nexport const streamSimple: StreamFunction<\"bedrock-converse-stream\", SimpleStreamOptions> = (\n\tmodel: Model<\"bedrock-converse-stream\">,\n\tcontext: Context,\n\toptions?: SimpleStreamOptions,\n): AssistantMessageEventStream => {\n\tconst base = buildBaseOptions(model, context, options, undefined);\n\tif (!options?.reasoning) {\n\t\treturn stream(model, context, { ...base, reasoning: undefined } satisfies BedrockOptions);\n\t}\n\n\tif (isAnthropicClaudeModel(model)) {\n\t\tif (supportsAdaptiveThinking(model.id, model.name)) {\n\t\t\treturn stream(model, context, {\n\t\t\t\t...base,\n\t\t\t\treasoning: options.reasoning,\n\t\t\t\tthinkingBudgets: options.thinkingBudgets,\n\t\t\t} satisfies BedrockOptions);\n\t\t}\n\n\t\t// Undefined means the caller did not request an output cap; let the helper use the model cap.\n\t\t// Do not coerce to 0 here, or the thinking budget would become the entire maxTokens value.\n\t\tconst adjusted = adjustMaxTokensForThinking(\n\t\t\tbase.maxTokens,\n\t\t\tmodel.maxTokens,\n\t\t\toptions.reasoning,\n\t\t\toptions.thinkingBudgets,\n\t\t);\n\n\t\tconst maxTokens = clampMaxTokensToContext(model, context, adjusted.maxTokens);\n\n\t\treturn stream(model, context, {\n\t\t\t...base,\n\t\t\tmaxTokens,\n\t\t\treasoning: options.reasoning,\n\t\t\tthinkingBudgets: {\n\t\t\t\t...(options.thinkingBudgets || {}),\n\t\t\t\t[clampReasoning(options.reasoning)!]: Math.min(adjusted.thinkingBudget, Math.max(0, maxTokens - 1024)),\n\t\t\t},\n\t\t} satisfies BedrockOptions);\n\t}\n\n\treturn stream(model, context, {\n\t\t...base,\n\t\treasoning: options.reasoning,\n\t\tthinkingBudgets: options.thinkingBudgets,\n\t} satisfies BedrockOptions);\n};\n\nfunction handleContentBlockStart(\n\tevent: ContentBlockStartEvent,\n\tblocks: Block[],\n\toutput: AssistantMessage,\n\tstream: AssistantMessageEventStream,\n): void {\n\tconst index = event.contentBlockIndex!;\n\tconst start = event.start;\n\n\tif (start?.toolUse) {\n\t\tconst block: Block = {\n\t\t\ttype: \"toolCall\",\n\t\t\tid: start.toolUse.toolUseId || \"\",\n\t\t\tname: start.toolUse.name || \"\",\n\t\t\targuments: {},\n\t\t\tpartialJson: \"\",\n\t\t\tindex,\n\t\t};\n\t\toutput.content.push(block);\n\t\tstream.push({ type: \"toolcall_start\", contentIndex: blocks.length - 1, partial: output });\n\t}\n}\n\nfunction handleContentBlockDelta(\n\tevent: ContentBlockDeltaEvent,\n\tblocks: Block[],\n\toutput: AssistantMessage,\n\tstream: AssistantMessageEventStream,\n): void {\n\tconst contentBlockIndex = event.contentBlockIndex!;\n\tconst delta = event.delta;\n\tlet index = blocks.findIndex((b) => b.index === contentBlockIndex);\n\tlet block = blocks[index];\n\n\tif (delta?.text !== undefined) {\n\t\t// If no text block exists yet, create one, as `handleContentBlockStart` is not sent for text blocks\n\t\tif (!block) {\n\t\t\tconst newBlock: Block = { type: \"text\", text: \"\", index: contentBlockIndex };\n\t\t\toutput.content.push(newBlock);\n\t\t\tindex = blocks.length - 1;\n\t\t\tblock = blocks[index];\n\t\t\tstream.push({ type: \"text_start\", contentIndex: index, partial: output });\n\t\t}\n\t\tif (block.type === \"text\") {\n\t\t\tblock.text += delta.text;\n\t\t\tstream.push({ type: \"text_delta\", contentIndex: index, delta: delta.text, partial: output });\n\t\t}\n\t} else if (delta?.toolUse && block?.type === \"toolCall\") {\n\t\tblock.partialJson = (block.partialJson || \"\") + (delta.toolUse.input || \"\");\n\t\tblock.arguments = parseStreamingJson(block.partialJson);\n\t\tstream.push({ type: \"toolcall_delta\", contentIndex: index, delta: delta.toolUse.input || \"\", partial: output });\n\t} else if (delta?.reasoningContent) {\n\t\tlet thinkingBlock = block;\n\t\tlet thinkingIndex = index;\n\n\t\tif (!thinkingBlock) {\n\t\t\tconst newBlock: Block = { type: \"thinking\", thinking: \"\", thinkingSignature: \"\", index: contentBlockIndex };\n\t\t\toutput.content.push(newBlock);\n\t\t\tthinkingIndex = blocks.length - 1;\n\t\t\tthinkingBlock = blocks[thinkingIndex];\n\t\t\tstream.push({ type: \"thinking_start\", contentIndex: thinkingIndex, partial: output });\n\t\t}\n\n\t\tif (thinkingBlock?.type === \"thinking\") {\n\t\t\tif (delta.reasoningContent.text) {\n\t\t\t\tthinkingBlock.thinking += delta.reasoningContent.text;\n\t\t\t\tstream.push({\n\t\t\t\t\ttype: \"thinking_delta\",\n\t\t\t\t\tcontentIndex: thinkingIndex,\n\t\t\t\t\tdelta: delta.reasoningContent.text,\n\t\t\t\t\tpartial: output,\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (delta.reasoningContent.signature) {\n\t\t\t\tthinkingBlock.thinkingSignature =\n\t\t\t\t\t(thinkingBlock.thinkingSignature || \"\") + delta.reasoningContent.signature;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction handleMetadata(\n\tevent: ConverseStreamMetadataEvent,\n\tmodel: Model<\"bedrock-converse-stream\">,\n\toutput: AssistantMessage,\n): void {\n\tif (event.usage) {\n\t\toutput.usage.input = event.usage.inputTokens || 0;\n\t\toutput.usage.output = event.usage.outputTokens || 0;\n\t\toutput.usage.cacheRead = event.usage.cacheReadInputTokens || 0;\n\t\toutput.usage.cacheWrite = event.usage.cacheWriteInputTokens || 0;\n\t\toutput.usage.totalTokens = event.usage.totalTokens || output.usage.input + output.usage.output;\n\t\tcalculateCost(model, output.usage);\n\t}\n}\n\nfunction handleContentBlockStop(\n\tevent: ContentBlockStopEvent,\n\tblocks: Block[],\n\toutput: AssistantMessage,\n\tstream: AssistantMessageEventStream,\n): void {\n\tconst index = blocks.findIndex((b) => b.index === event.contentBlockIndex);\n\tconst block = blocks[index];\n\tif (!block) return;\n\tdelete (block as Block).index;\n\n\tswitch (block.type) {\n\t\tcase \"text\":\n\t\t\tstream.push({ type: \"text_end\", contentIndex: index, content: block.text, partial: output });\n\t\t\tbreak;\n\t\tcase \"thinking\":\n\t\t\tstream.push({ type: \"thinking_end\", contentIndex: index, content: block.thinking, partial: output });\n\t\t\tbreak;\n\t\tcase \"toolCall\":\n\t\t\tblock.arguments = parseStreamingJson(block.partialJson);\n\t\t\t// Finalize in-place and strip the scratch buffer so replay only\n\t\t\t// carries parsed arguments.\n\t\t\tdelete (block as Block).partialJson;\n\t\t\tstream.push({ type: \"toolcall_end\", contentIndex: index, toolCall: block, partial: output });\n\t\t\tbreak;\n\t}\n}\n\n/**\n * Check if the model supports adaptive thinking (Opus 4.6+, Sonnet 4.6).\n * Checks both model ID and model name to support application inference profiles\n * whose ARNs don't contain the model name.\n */\nfunction getModelMatchCandidates(modelId: string, modelName?: string): string[] {\n\tconst values = modelName ? [modelId, modelName] : [modelId];\n\treturn values.flatMap((value) => {\n\t\tconst lower = value.toLowerCase();\n\t\treturn [lower, lower.replace(/[\\s_.:]+/g, \"-\")];\n\t});\n}\n\nfunction supportsAdaptiveThinking(modelId: string, modelName?: string): boolean {\n\tconst candidates = getModelMatchCandidates(modelId, modelName);\n\treturn candidates.some(\n\t\t(s) =>\n\t\t\ts.includes(\"opus-4-6\") ||\n\t\t\ts.includes(\"opus-4-7\") ||\n\t\t\ts.includes(\"opus-4-8\") ||\n\t\t\ts.includes(\"opus-5\") ||\n\t\t\ts.includes(\"sonnet-4-6\") ||\n\t\t\ts.includes(\"sonnet-5\") ||\n\t\t\ts.includes(\"fable-5\"),\n\t);\n}\n\nfunction supportsNativeXhighEffort(model: Model<\"bedrock-converse-stream\">): boolean {\n\tconst candidates = getModelMatchCandidates(model.id, model.name);\n\treturn candidates.some(\n\t\t(s) =>\n\t\t\ts.includes(\"opus-4-7\") ||\n\t\t\ts.includes(\"opus-4-8\") ||\n\t\t\ts.includes(\"opus-5\") ||\n\t\t\ts.includes(\"sonnet-5\") ||\n\t\t\ts.includes(\"fable-5\"),\n\t);\n}\n\nfunction mapThinkingLevelToEffort(\n\tmodel: Model<\"bedrock-converse-stream\">,\n\tlevel: SimpleStreamOptions[\"reasoning\"],\n): \"low\" | \"medium\" | \"high\" | \"xhigh\" | \"max\" {\n\tif (level === \"xhigh\" && supportsNativeXhighEffort(model)) return \"xhigh\";\n\n\tconst mapped = level ? model.thinkingLevelMap?.[level] : undefined;\n\tif (typeof mapped === \"string\") return mapped as \"low\" | \"medium\" | \"high\" | \"xhigh\" | \"max\";\n\n\tswitch (level) {\n\t\tcase \"minimal\":\n\t\tcase \"low\":\n\t\t\treturn \"low\";\n\t\tcase \"medium\":\n\t\t\treturn \"medium\";\n\t\tcase \"high\":\n\t\t\treturn \"high\";\n\t\tdefault:\n\t\t\treturn \"high\";\n\t}\n}\n\n/**\n * Resolve cache retention preference.\n * Defaults to \"short\" and uses PI_CACHE_RETENTION for backward compatibility.\n */\nfunction resolveCacheRetention(cacheRetention?: CacheRetention, env?: ProviderEnv): CacheRetention {\n\tif (cacheRetention) {\n\t\treturn cacheRetention;\n\t}\n\tif (getProviderEnvValue(\"PI_CACHE_RETENTION\", env) === \"long\") {\n\t\treturn \"long\";\n\t}\n\treturn \"short\";\n}\n\n/**\n * Check if the model is an Anthropic Claude model on Bedrock.\n * Checks both model ID and model name to support application inference profiles\n * whose ARNs don't contain the model name.\n */\nfunction isAnthropicClaudeModel(model: Model<\"bedrock-converse-stream\">): boolean {\n\tconst id = model.id.toLowerCase();\n\tconst name = model.name?.toLowerCase() ?? \"\";\n\treturn (\n\t\tid.includes(\"anthropic.claude\") ||\n\t\tid.includes(\"anthropic/claude\") ||\n\t\tname.includes(\"anthropic.claude\") ||\n\t\tname.includes(\"anthropic/claude\") ||\n\t\tname.includes(\"claude\")\n\t);\n}\n\n/**\n * Check if the model supports prompt caching.\n * Supported: Claude 3.5 Haiku, Claude 3.7 Sonnet, Claude 4.x models, Claude 5 models\n *\n * For base models and system-defined inference profiles the model ID / ARN\n * contains the model name, so we can decide locally.\n *\n * For application inference profiles (whose ARNs don't contain the model name),\n * also checks model.name which is user-controlled via models.json or registerProvider.\n * As a last resort, set AWS_BEDROCK_FORCE_CACHE=1 to enable cache points.\n * Amazon Nova models have automatic caching and don't need explicit cache points.\n */\nfunction supportsPromptCaching(model: Model<\"bedrock-converse-stream\">, env?: ProviderEnv): boolean {\n\tconst candidates = getModelMatchCandidates(model.id, model.name);\n\n\tconst hasClaudeRef = candidates.some((s) => s.includes(\"claude\"));\n\tif (!hasClaudeRef) {\n\t\t// Application inference profiles don't contain the model name in the ARN.\n\t\t// Allow users to force cache points via environment variable.\n\t\tif (getProviderEnvValue(\"AWS_BEDROCK_FORCE_CACHE\", env) === \"1\") return true;\n\t\treturn false;\n\t}\n\t// Claude 5 models (fable-5, opus-5, sonnet-5)\n\tif (candidates.some((s) => s.includes(\"fable-5\") || s.includes(\"opus-5\") || s.includes(\"sonnet-5\"))) return true;\n\t// Claude 4.x models (opus-4, sonnet-4, haiku-4)\n\tif (candidates.some((s) => s.includes(\"-4-\"))) return true;\n\t// Claude 3.7 Sonnet\n\tif (candidates.some((s) => s.includes(\"claude-3-7-sonnet\"))) return true;\n\t// Claude 3.5 Haiku\n\tif (candidates.some((s) => s.includes(\"claude-3-5-haiku\"))) return true;\n\treturn false;\n}\n\n/**\n * Check if the model supports thinking signatures in reasoningContent.\n * Only Anthropic Claude models support the signature field.\n * Other models (OpenAI, Qwen, Minimax, Moonshot, etc.) reject it with:\n * \"This model doesn't support the reasoningContent.reasoningText.signature field\"\n *\n * Checks both model ID and model name to support application inference profiles.\n */\nfunction supportsThinkingSignature(model: Model<\"bedrock-converse-stream\">): boolean {\n\treturn isAnthropicClaudeModel(model);\n}\n\nfunction buildSystemPrompt(\n\tsystemPrompt: string | undefined,\n\tmodel: Model<\"bedrock-converse-stream\">,\n\tcacheRetention: CacheRetention,\n\tenv?: ProviderEnv,\n): SystemContentBlock[] | undefined {\n\tif (!systemPrompt) return undefined;\n\n\tconst blocks: SystemContentBlock[] = [{ text: sanitizeSurrogates(systemPrompt) }];\n\n\t// Add cache point for supported Claude models when caching is enabled\n\tif (cacheRetention !== \"none\" && supportsPromptCaching(model, env)) {\n\t\tblocks.push({\n\t\t\tcachePoint: { type: CachePointType.DEFAULT, ...(cacheRetention === \"long\" ? { ttl: CacheTTL.ONE_HOUR } : {}) },\n\t\t});\n\t}\n\n\treturn blocks;\n}\n\nfunction normalizeToolCallId(id: string): string {\n\tconst sanitized = id.replace(/[^a-zA-Z0-9_-]/g, \"_\");\n\treturn sanitized.length > 64 ? sanitized.slice(0, 64) : sanitized;\n}\n\nfunction createNonBlankTextBlock(text: string): ContentBlock.TextMember | undefined {\n\tconst sanitized = sanitizeSurrogates(text);\n\treturn sanitized.trim().length === 0 ? undefined : { text: sanitized };\n}\n\nfunction createRequiredTextBlock(text: string): ContentBlock.TextMember {\n\treturn createNonBlankTextBlock(text) ?? { text: EMPTY_TEXT_PLACEHOLDER };\n}\n\nfunction convertToolResultContent(content: (TextContent | ImageContent)[]): ToolResultContentBlock[] {\n\tconst result: ToolResultContentBlock[] = [];\n\tfor (const c of content) {\n\t\tif (c.type === \"image\") {\n\t\t\tresult.push({ image: createImageBlock(c.mimeType, c.data) });\n\t\t} else {\n\t\t\tconst textBlock = createNonBlankTextBlock(c.text);\n\t\t\tif (textBlock) result.push(textBlock);\n\t\t}\n\t}\n\tif (result.length === 0) result.push({ text: EMPTY_TEXT_PLACEHOLDER });\n\treturn result;\n}\n\nfunction convertMessages(\n\tcontext: Context,\n\tmodel: Model<\"bedrock-converse-stream\">,\n\tcacheRetention: CacheRetention,\n\tenv?: ProviderEnv,\n): Message[] {\n\tconst result: Message[] = [];\n\tconst transformedMessages = transformMessages(context.messages, model, normalizeToolCallId);\n\n\tfor (let i = 0; i < transformedMessages.length; i++) {\n\t\tconst m = transformedMessages[i];\n\n\t\tswitch (m.role) {\n\t\t\tcase \"user\": {\n\t\t\t\tconst content: ContentBlock[] = [];\n\t\t\t\tif (typeof m.content === \"string\") {\n\t\t\t\t\tcontent.push(createRequiredTextBlock(m.content));\n\t\t\t\t} else {\n\t\t\t\t\tfor (const c of m.content) {\n\t\t\t\t\t\tswitch (c.type) {\n\t\t\t\t\t\t\tcase \"text\": {\n\t\t\t\t\t\t\t\tconst textBlock = createNonBlankTextBlock(c.text);\n\t\t\t\t\t\t\t\tif (textBlock) content.push(textBlock);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tcase \"image\":\n\t\t\t\t\t\t\t\tcontent.push({ image: createImageBlock(c.mimeType, c.data) });\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (content.length === 0) content.push({ text: EMPTY_TEXT_PLACEHOLDER });\n\t\t\t\t}\n\t\t\t\tresult.push({\n\t\t\t\t\trole: ConversationRole.USER,\n\t\t\t\t\tcontent,\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"assistant\": {\n\t\t\t\t// Skip assistant messages with empty content (e.g., from aborted requests)\n\t\t\t\t// Bedrock rejects messages with empty content arrays\n\t\t\t\tif (m.content.length === 0) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst contentBlocks: ContentBlock[] = [];\n\t\t\t\tfor (const c of m.content) {\n\t\t\t\t\tswitch (c.type) {\n\t\t\t\t\t\tcase \"text\": {\n\t\t\t\t\t\t\t// Skip empty text blocks\n\t\t\t\t\t\t\tconst textBlock = createNonBlankTextBlock(c.text);\n\t\t\t\t\t\t\tif (!textBlock) continue;\n\t\t\t\t\t\t\tcontentBlocks.push(textBlock);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcase \"toolCall\":\n\t\t\t\t\t\t\tcontentBlocks.push({\n\t\t\t\t\t\t\t\ttoolUse: { toolUseId: c.id, name: c.name, input: c.arguments },\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"thinking\": {\n\t\t\t\t\t\t\t// Skip empty thinking blocks\n\t\t\t\t\t\t\tconst thinking = sanitizeSurrogates(c.thinking);\n\t\t\t\t\t\t\tif (thinking.trim().length === 0) continue;\n\t\t\t\t\t\t\t// Only Anthropic models support the signature field in reasoningText.\n\t\t\t\t\t\t\t// For other models, we omit the signature to avoid errors like:\n\t\t\t\t\t\t\t// \"This model doesn't support the reasoningContent.reasoningText.signature field\"\n\t\t\t\t\t\t\tif (supportsThinkingSignature(model)) {\n\t\t\t\t\t\t\t\t// Signatures arrive after thinking deltas. If a partial or externally\n\t\t\t\t\t\t\t\t// persisted message lacks a signature, Bedrock rejects the replayed\n\t\t\t\t\t\t\t\t// reasoning block. Fall back to plain text, matching Anthropic.\n\t\t\t\t\t\t\t\tif (!c.thinkingSignature || c.thinkingSignature.trim().length === 0) {\n\t\t\t\t\t\t\t\t\tcontentBlocks.push({ text: thinking });\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcontentBlocks.push({\n\t\t\t\t\t\t\t\t\t\treasoningContent: {\n\t\t\t\t\t\t\t\t\t\t\treasoningText: {\n\t\t\t\t\t\t\t\t\t\t\t\ttext: thinking,\n\t\t\t\t\t\t\t\t\t\t\t\tsignature: c.thinkingSignature,\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcontentBlocks.push({\n\t\t\t\t\t\t\t\t\treasoningContent: {\n\t\t\t\t\t\t\t\t\t\treasoningText: { text: thinking },\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// Skip if all content blocks were filtered out\n\t\t\t\tif (contentBlocks.length === 0) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tresult.push({\n\t\t\t\t\trole: ConversationRole.ASSISTANT,\n\t\t\t\t\tcontent: contentBlocks,\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"toolResult\": {\n\t\t\t\t// Collect all consecutive toolResult messages into a single user message\n\t\t\t\t// Bedrock requires all tool results to be in one message\n\t\t\t\tconst toolResults: ContentBlock.ToolResultMember[] = [];\n\n\t\t\t\t// Add current tool result with all content blocks combined\n\t\t\t\ttoolResults.push({\n\t\t\t\t\ttoolResult: {\n\t\t\t\t\t\ttoolUseId: m.toolCallId,\n\t\t\t\t\t\tcontent: convertToolResultContent(m.content),\n\t\t\t\t\t\tstatus: m.isError ? ToolResultStatus.ERROR : ToolResultStatus.SUCCESS,\n\t\t\t\t\t},\n\t\t\t\t});\n\n\t\t\t\t// Look ahead for consecutive toolResult messages\n\t\t\t\tlet j = i + 1;\n\t\t\t\twhile (j < transformedMessages.length && transformedMessages[j].role === \"toolResult\") {\n\t\t\t\t\tconst nextMsg = transformedMessages[j] as ToolResultMessage;\n\t\t\t\t\ttoolResults.push({\n\t\t\t\t\t\ttoolResult: {\n\t\t\t\t\t\t\ttoolUseId: nextMsg.toolCallId,\n\t\t\t\t\t\t\tcontent: convertToolResultContent(nextMsg.content),\n\t\t\t\t\t\t\tstatus: nextMsg.isError ? ToolResultStatus.ERROR : ToolResultStatus.SUCCESS,\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t\tj++;\n\t\t\t\t}\n\n\t\t\t\t// Skip the messages we've already processed\n\t\t\t\ti = j - 1;\n\n\t\t\t\tresult.push({\n\t\t\t\t\trole: ConversationRole.USER,\n\t\t\t\t\tcontent: toolResults,\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tdefault:\n\t\t\t\tcontinue;\n\t\t}\n\t}\n\n\t// Add cache point to the last user message for supported Claude models when caching is enabled\n\tif (cacheRetention !== \"none\" && supportsPromptCaching(model, env) && result.length > 0) {\n\t\tconst lastMessage = result[result.length - 1];\n\t\tif (lastMessage.role === ConversationRole.USER && lastMessage.content) {\n\t\t\t(lastMessage.content as ContentBlock[]).push({\n\t\t\t\tcachePoint: {\n\t\t\t\t\ttype: CachePointType.DEFAULT,\n\t\t\t\t\t...(cacheRetention === \"long\" ? { ttl: CacheTTL.ONE_HOUR } : {}),\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\t}\n\n\treturn result;\n}\n\nfunction convertToolConfig(\n\ttools: Tool[] | undefined,\n\ttoolChoice: BedrockOptions[\"toolChoice\"],\n\tsupportsStrictMode: boolean,\n): ToolConfiguration | undefined {\n\tif (!tools?.length) return undefined;\n\tif (toolChoice === \"none\") return undefined;\n\n\tconst bedrockTools: BedrockTool[] = tools.map((tool) => {\n\t\tconst strict = resolveJsonSchemaStrictSampling(tool, supportsStrictMode);\n\t\treturn {\n\t\t\ttoolSpec: {\n\t\t\t\tname: tool.name,\n\t\t\t\tdescription: tool.description,\n\t\t\t\tinputSchema: { json: tool.parameters as unknown as DocumentType },\n\t\t\t\t...(strict === true ? { strict: true } : {}),\n\t\t\t},\n\t\t};\n\t});\n\n\tlet bedrockToolChoice: ToolChoice | undefined;\n\tswitch (toolChoice) {\n\t\tcase \"auto\":\n\t\t\tbedrockToolChoice = { auto: {} };\n\t\t\tbreak;\n\t\tcase \"any\":\n\t\t\tbedrockToolChoice = { any: {} };\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tif (toolChoice?.type === \"tool\") {\n\t\t\t\tbedrockToolChoice = { tool: { name: toolChoice.name } };\n\t\t\t}\n\t}\n\n\treturn { tools: bedrockTools, toolChoice: bedrockToolChoice };\n}\n\nfunction mapStopReason(reason: string | undefined): { stopReason: StopReason; errorMessage?: string } {\n\tswitch (reason) {\n\t\tcase BedrockStopReason.END_TURN:\n\t\tcase BedrockStopReason.STOP_SEQUENCE:\n\t\t\treturn { stopReason: \"stop\" };\n\t\tcase BedrockStopReason.MAX_TOKENS:\n\t\tcase BedrockStopReason.MODEL_CONTEXT_WINDOW_EXCEEDED:\n\t\t\treturn { stopReason: \"length\" };\n\t\tcase BedrockStopReason.TOOL_USE:\n\t\t\treturn { stopReason: \"toolUse\" };\n\t\tdefault:\n\t\t\treturn reason\n\t\t\t\t? { stopReason: \"error\", errorMessage: `Provider stopped with: ${reason}` }\n\t\t\t\t: { stopReason: \"error\" };\n\t}\n}\n\nfunction getConfiguredBedrockRegion(options: BedrockOptions): string | undefined {\n\treturn (\n\t\toptions.region ||\n\t\tgetProviderEnvValue(\"AWS_REGION\", options.env) ||\n\t\tgetProviderEnvValue(\"AWS_DEFAULT_REGION\", options.env) ||\n\t\tundefined\n\t);\n}\n\nfunction getConfiguredBedrockCredentials(env?: ProviderEnv): BedrockRuntimeClientConfig[\"credentials\"] | undefined {\n\tconst accessKeyId = getProviderEnvValue(\"AWS_ACCESS_KEY_ID\", env);\n\tconst secretAccessKey = getProviderEnvValue(\"AWS_SECRET_ACCESS_KEY\", env);\n\tif (!accessKeyId || !secretAccessKey) {\n\t\treturn undefined;\n\t}\n\tconst sessionToken = getProviderEnvValue(\"AWS_SESSION_TOKEN\", env);\n\treturn {\n\t\taccessKeyId,\n\t\tsecretAccessKey,\n\t\t...(sessionToken ? { sessionToken } : {}),\n\t};\n}\n\nfunction getStandardBedrockEndpointRegion(baseUrl: string | undefined): string | undefined {\n\tif (!baseUrl) {\n\t\treturn undefined;\n\t}\n\n\ttry {\n\t\tconst { hostname } = new URL(baseUrl);\n\t\tconst match = hostname.toLowerCase().match(/^bedrock-runtime(?:-fips)?\\.([a-z0-9-]+)\\.amazonaws\\.com(?:\\.cn)?$/);\n\t\treturn match?.[1];\n\t} catch {\n\t\treturn undefined;\n\t}\n}\n\nfunction shouldUseExplicitBedrockEndpoint(\n\tbaseUrl: string,\n\tconfiguredRegion: string | undefined,\n\thasAmbientConfiguredProfile: boolean,\n): boolean {\n\tconst endpointRegion = getStandardBedrockEndpointRegion(baseUrl);\n\tif (!endpointRegion) {\n\t\treturn true;\n\t}\n\n\treturn !configuredRegion && !hasAmbientConfiguredProfile;\n}\n\nfunction isGovCloudBedrockTarget(model: Model<\"bedrock-converse-stream\">, options: BedrockOptions): boolean {\n\tconst region = getConfiguredBedrockRegion(options);\n\tif (region?.toLowerCase().startsWith(\"us-gov-\")) {\n\t\treturn true;\n\t}\n\n\tconst modelId = model.id.toLowerCase();\n\treturn modelId.startsWith(\"us-gov.\") || modelId.startsWith(\"arn:aws-us-gov:\");\n}\n\nfunction buildAdditionalModelRequestFields(\n\tmodel: Model<\"bedrock-converse-stream\">,\n\toptions: BedrockOptions,\n): Record<string, any> | undefined {\n\tif (!options.reasoning || !model.reasoning) {\n\t\treturn undefined;\n\t}\n\n\tif (isAnthropicClaudeModel(model)) {\n\t\t// GovCloud Bedrock currently rejects the Claude thinking.display field.\n\t\t// Omit it there until the GovCloud Converse schema catches up.\n\t\tconst display = isGovCloudBedrockTarget(model, options) ? undefined : (options.thinkingDisplay ?? \"summarized\");\n\t\tconst result: Record<string, any> = supportsAdaptiveThinking(model.id, model.name)\n\t\t\t? {\n\t\t\t\t\tthinking: { type: \"adaptive\", ...(display !== undefined ? { display } : {}) },\n\t\t\t\t\toutput_config: { effort: mapThinkingLevelToEffort(model, options.reasoning) },\n\t\t\t\t}\n\t\t\t: (() => {\n\t\t\t\t\tconst defaultBudgets: Record<ThinkingLevel, number> = {\n\t\t\t\t\t\tminimal: 1024,\n\t\t\t\t\t\tlow: 2048,\n\t\t\t\t\t\tmedium: 8192,\n\t\t\t\t\t\thigh: 16384,\n\t\t\t\t\t\txhigh: 16384, // Claude doesn't support xhigh, clamp to high\n\t\t\t\t\t\tmax: 16384, // Claude doesn't support max, clamp to high\n\t\t\t\t\t};\n\n\t\t\t\t\t// Custom budgets override defaults (xhigh/max not in ThinkingBudgets, use high)\n\t\t\t\t\tconst level = options.reasoning === \"xhigh\" || options.reasoning === \"max\" ? \"high\" : options.reasoning;\n\t\t\t\t\tconst budget = options.thinkingBudgets?.[level] ?? defaultBudgets[options.reasoning];\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tthinking: {\n\t\t\t\t\t\t\ttype: \"enabled\",\n\t\t\t\t\t\t\tbudget_tokens: budget,\n\t\t\t\t\t\t\t...(display !== undefined ? { display } : {}),\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t})();\n\n\t\tif (!supportsAdaptiveThinking(model.id, model.name) && (options.interleavedThinking ?? true)) {\n\t\t\tresult.anthropic_beta = [\"interleaved-thinking-2025-05-14\"];\n\t\t}\n\n\t\treturn result;\n\t}\n\n\treturn undefined;\n}\n\nfunction createImageBlock(mimeType: string, data: string) {\n\tlet format: ImageFormat;\n\tswitch (mimeType) {\n\t\tcase \"image/jpeg\":\n\t\tcase \"image/jpg\":\n\t\t\tformat = ImageFormat.JPEG;\n\t\t\tbreak;\n\t\tcase \"image/png\":\n\t\t\tformat = ImageFormat.PNG;\n\t\t\tbreak;\n\t\tcase \"image/gif\":\n\t\t\tformat = ImageFormat.GIF;\n\t\t\tbreak;\n\t\tcase \"image/webp\":\n\t\t\tformat = ImageFormat.WEBP;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tthrow new Error(`Unknown image type: ${mimeType}`);\n\t}\n\n\tconst binaryString = atob(data);\n\tconst bytes = new Uint8Array(binaryString.length);\n\tfor (let i = 0; i < binaryString.length; i++) {\n\t\tbytes[i] = binaryString.charCodeAt(i);\n\t}\n\n\treturn { source: { bytes }, format };\n}\n"]}
@@ -0,0 +1,17 @@
1
+ import type { Tool } from "../types.ts";
2
+ export interface GrammarConstrainedSampling {
3
+ format: "lark" | "regex";
4
+ definition: string;
5
+ inputProperty: string;
6
+ }
7
+ export interface GrammarToolInputJsonBuffer {
8
+ input: string;
9
+ started: boolean;
10
+ closed: boolean;
11
+ }
12
+ export declare function getGrammarToolInput(toolName: string, arguments_: Record<string, unknown>, inputProperty: string): string;
13
+ export declare function appendGrammarToolInputJsonDelta(buffer: GrammarToolInputJsonBuffer, inputProperty: string, nextInput: string, close: boolean): string | undefined;
14
+ export declare function resolveJsonSchemaStrictSampling(tool: Tool, supportsStrictMode: boolean): boolean | undefined;
15
+ export declare function resolveGrammarConstrainedSampling(tool: Tool, supportsOpenAIGrammarTools: boolean): GrammarConstrainedSampling | undefined;
16
+ export declare function createGrammarToolInputProperties(tools: Tool[] | undefined, supportsOpenAIGrammarTools: boolean): ReadonlyMap<string, string>;
17
+ //# sourceMappingURL=constrained-sampling.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constrained-sampling.d.ts","sourceRoot":"","sources":["../../src/api/constrained-sampling.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAQxC,MAAM,WAAW,0BAA0B;IAC1C,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,0BAA0B;IAC1C,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;CAChB;AAED,wBAAgB,mBAAmB,CAClC,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACnC,aAAa,EAAE,MAAM,GACnB,MAAM,CAMR;AAED,wBAAgB,+BAA+B,CAC9C,MAAM,EAAE,0BAA0B,EAClC,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,OAAO,GACZ,MAAM,GAAG,SAAS,CAyBpB;AAqBD,wBAAgB,+BAA+B,CAAC,IAAI,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS,CAe5G;AAED,wBAAgB,iCAAiC,CAChD,IAAI,EAAE,IAAI,EACV,0BAA0B,EAAE,OAAO,GACjC,0BAA0B,GAAG,SAAS,CA8BxC;AAED,wBAAgB,gCAAgC,CAC/C,KAAK,EAAE,IAAI,EAAE,GAAG,SAAS,EACzB,0BAA0B,EAAE,OAAO,GACjC,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAS7B"}