@panticonic/pi-ai 0.99.2-vibestudio.0

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 (815) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +1938 -0
  3. package/SOURCE.json +8858 -0
  4. package/dist/api/anthropic-messages.d.ts +71 -0
  5. package/dist/api/anthropic-messages.d.ts.map +1 -0
  6. package/dist/api/anthropic-messages.js +1309 -0
  7. package/dist/api/anthropic-messages.js.map +1 -0
  8. package/dist/api/anthropic-messages.lazy.d.ts +3 -0
  9. package/dist/api/anthropic-messages.lazy.d.ts.map +1 -0
  10. package/dist/api/anthropic-messages.lazy.js +3 -0
  11. package/dist/api/anthropic-messages.lazy.js.map +1 -0
  12. package/dist/api/azure-openai-responses.d.ts +17 -0
  13. package/dist/api/azure-openai-responses.d.ts.map +1 -0
  14. package/dist/api/azure-openai-responses.js +262 -0
  15. package/dist/api/azure-openai-responses.js.map +1 -0
  16. package/dist/api/azure-openai-responses.lazy.d.ts +3 -0
  17. package/dist/api/azure-openai-responses.lazy.d.ts.map +1 -0
  18. package/dist/api/azure-openai-responses.lazy.js +3 -0
  19. package/dist/api/azure-openai-responses.lazy.js.map +1 -0
  20. package/dist/api/bedrock-converse-stream.d.ts +38 -0
  21. package/dist/api/bedrock-converse-stream.d.ts.map +1 -0
  22. package/dist/api/bedrock-converse-stream.js +1093 -0
  23. package/dist/api/bedrock-converse-stream.js.map +1 -0
  24. package/dist/api/bedrock-converse-stream.lazy.d.ts +9 -0
  25. package/dist/api/bedrock-converse-stream.lazy.d.ts.map +1 -0
  26. package/dist/api/bedrock-converse-stream.lazy.js +30 -0
  27. package/dist/api/bedrock-converse-stream.lazy.js.map +1 -0
  28. package/dist/api/cloudflare-ai-binding.d.ts +77 -0
  29. package/dist/api/cloudflare-ai-binding.d.ts.map +1 -0
  30. package/dist/api/cloudflare-ai-binding.js +72 -0
  31. package/dist/api/cloudflare-ai-binding.js.map +1 -0
  32. package/dist/api/cloudflare-workers-ai-system-one.d.ts +4 -0
  33. package/dist/api/cloudflare-workers-ai-system-one.d.ts.map +1 -0
  34. package/dist/api/cloudflare-workers-ai-system-one.js +43 -0
  35. package/dist/api/cloudflare-workers-ai-system-one.js.map +1 -0
  36. package/dist/api/cloudflare-workers-ai-system-one.lazy.d.ts +3 -0
  37. package/dist/api/cloudflare-workers-ai-system-one.lazy.d.ts.map +1 -0
  38. package/dist/api/cloudflare-workers-ai-system-one.lazy.js +4 -0
  39. package/dist/api/cloudflare-workers-ai-system-one.lazy.js.map +1 -0
  40. package/dist/api/cloudflare.d.ts +11 -0
  41. package/dist/api/cloudflare.d.ts.map +1 -0
  42. package/dist/api/cloudflare.js +11 -0
  43. package/dist/api/cloudflare.js.map +1 -0
  44. package/dist/api/constrained-sampling.d.ts +26 -0
  45. package/dist/api/constrained-sampling.d.ts.map +1 -0
  46. package/dist/api/constrained-sampling.js +233 -0
  47. package/dist/api/constrained-sampling.js.map +1 -0
  48. package/dist/api/github-copilot-headers.d.ts +8 -0
  49. package/dist/api/github-copilot-headers.d.ts.map +1 -0
  50. package/dist/api/github-copilot-headers.js +29 -0
  51. package/dist/api/github-copilot-headers.js.map +1 -0
  52. package/dist/api/google-generative-ai.d.ts +13 -0
  53. package/dist/api/google-generative-ai.d.ts.map +1 -0
  54. package/dist/api/google-generative-ai.js +370 -0
  55. package/dist/api/google-generative-ai.js.map +1 -0
  56. package/dist/api/google-generative-ai.lazy.d.ts +3 -0
  57. package/dist/api/google-generative-ai.lazy.d.ts.map +1 -0
  58. package/dist/api/google-generative-ai.lazy.js +3 -0
  59. package/dist/api/google-generative-ai.lazy.js.map +1 -0
  60. package/dist/api/google-shared.d.ts +93 -0
  61. package/dist/api/google-shared.d.ts.map +1 -0
  62. package/dist/api/google-shared.js +451 -0
  63. package/dist/api/google-shared.js.map +1 -0
  64. package/dist/api/google-vertex.d.ts +15 -0
  65. package/dist/api/google-vertex.d.ts.map +1 -0
  66. package/dist/api/google-vertex.js +431 -0
  67. package/dist/api/google-vertex.js.map +1 -0
  68. package/dist/api/google-vertex.lazy.d.ts +3 -0
  69. package/dist/api/google-vertex.lazy.d.ts.map +1 -0
  70. package/dist/api/google-vertex.lazy.js +3 -0
  71. package/dist/api/google-vertex.lazy.js.map +1 -0
  72. package/dist/api/lazy.d.ts +19 -0
  73. package/dist/api/lazy.d.ts.map +1 -0
  74. package/dist/api/lazy.js +70 -0
  75. package/dist/api/lazy.js.map +1 -0
  76. package/dist/api/llama-cpp-classify.d.ts +33 -0
  77. package/dist/api/llama-cpp-classify.d.ts.map +1 -0
  78. package/dist/api/llama-cpp-classify.js +365 -0
  79. package/dist/api/llama-cpp-classify.js.map +1 -0
  80. package/dist/api/llama-cpp-classify.lazy.d.ts +3 -0
  81. package/dist/api/llama-cpp-classify.lazy.d.ts.map +1 -0
  82. package/dist/api/llama-cpp-classify.lazy.js +4 -0
  83. package/dist/api/llama-cpp-classify.lazy.js.map +1 -0
  84. package/dist/api/mistral-conversations.d.ts +25 -0
  85. package/dist/api/mistral-conversations.d.ts.map +1 -0
  86. package/dist/api/mistral-conversations.js +749 -0
  87. package/dist/api/mistral-conversations.js.map +1 -0
  88. package/dist/api/mistral-conversations.lazy.d.ts +3 -0
  89. package/dist/api/mistral-conversations.lazy.d.ts.map +1 -0
  90. package/dist/api/mistral-conversations.lazy.js +3 -0
  91. package/dist/api/mistral-conversations.lazy.js.map +1 -0
  92. package/dist/api/openai-codex-responses.d.ts +32 -0
  93. package/dist/api/openai-codex-responses.d.ts.map +1 -0
  94. package/dist/api/openai-codex-responses.js +1374 -0
  95. package/dist/api/openai-codex-responses.js.map +1 -0
  96. package/dist/api/openai-codex-responses.lazy.d.ts +3 -0
  97. package/dist/api/openai-codex-responses.lazy.d.ts.map +1 -0
  98. package/dist/api/openai-codex-responses.lazy.js +3 -0
  99. package/dist/api/openai-codex-responses.lazy.js.map +1 -0
  100. package/dist/api/openai-completions.d.ts +26 -0
  101. package/dist/api/openai-completions.d.ts.map +1 -0
  102. package/dist/api/openai-completions.js +1380 -0
  103. package/dist/api/openai-completions.js.map +1 -0
  104. package/dist/api/openai-completions.lazy.d.ts +3 -0
  105. package/dist/api/openai-completions.lazy.d.ts.map +1 -0
  106. package/dist/api/openai-completions.lazy.js +3 -0
  107. package/dist/api/openai-completions.lazy.js.map +1 -0
  108. package/dist/api/openai-prompt-cache.d.ts +3 -0
  109. package/dist/api/openai-prompt-cache.d.ts.map +1 -0
  110. package/dist/api/openai-prompt-cache.js +10 -0
  111. package/dist/api/openai-prompt-cache.js.map +1 -0
  112. package/dist/api/openai-responses-shared.d.ts +29 -0
  113. package/dist/api/openai-responses-shared.d.ts.map +1 -0
  114. package/dist/api/openai-responses-shared.js +703 -0
  115. package/dist/api/openai-responses-shared.js.map +1 -0
  116. package/dist/api/openai-responses.d.ts +14 -0
  117. package/dist/api/openai-responses.d.ts.map +1 -0
  118. package/dist/api/openai-responses.js +310 -0
  119. package/dist/api/openai-responses.js.map +1 -0
  120. package/dist/api/openai-responses.lazy.d.ts +3 -0
  121. package/dist/api/openai-responses.lazy.d.ts.map +1 -0
  122. package/dist/api/openai-responses.lazy.js +3 -0
  123. package/dist/api/openai-responses.lazy.js.map +1 -0
  124. package/dist/api/openrouter-images.d.ts +4 -0
  125. package/dist/api/openrouter-images.d.ts.map +1 -0
  126. package/dist/api/openrouter-images.js +133 -0
  127. package/dist/api/openrouter-images.js.map +1 -0
  128. package/dist/api/openrouter-images.lazy.d.ts +3 -0
  129. package/dist/api/openrouter-images.lazy.d.ts.map +1 -0
  130. package/dist/api/openrouter-images.lazy.js +4 -0
  131. package/dist/api/openrouter-images.lazy.js.map +1 -0
  132. package/dist/api/pi-messages.d.ts +99 -0
  133. package/dist/api/pi-messages.d.ts.map +1 -0
  134. package/dist/api/pi-messages.js +314 -0
  135. package/dist/api/pi-messages.js.map +1 -0
  136. package/dist/api/pi-messages.lazy.d.ts +3 -0
  137. package/dist/api/pi-messages.lazy.d.ts.map +1 -0
  138. package/dist/api/pi-messages.lazy.js +3 -0
  139. package/dist/api/pi-messages.lazy.js.map +1 -0
  140. package/dist/api/simple-options.d.ts +15 -0
  141. package/dist/api/simple-options.d.ts.map +1 -0
  142. package/dist/api/simple-options.js +66 -0
  143. package/dist/api/simple-options.js.map +1 -0
  144. package/dist/api/system-one-shared.d.ts +23 -0
  145. package/dist/api/system-one-shared.d.ts.map +1 -0
  146. package/dist/api/system-one-shared.js +183 -0
  147. package/dist/api/system-one-shared.js.map +1 -0
  148. package/dist/api/transform-messages.d.ts +8 -0
  149. package/dist/api/transform-messages.d.ts.map +1 -0
  150. package/dist/api/transform-messages.js +201 -0
  151. package/dist/api/transform-messages.js.map +1 -0
  152. package/dist/api/typesafe-system-one.d.ts +4 -0
  153. package/dist/api/typesafe-system-one.d.ts.map +1 -0
  154. package/dist/api/typesafe-system-one.js +19 -0
  155. package/dist/api/typesafe-system-one.js.map +1 -0
  156. package/dist/api/typesafe-system-one.lazy.d.ts +3 -0
  157. package/dist/api/typesafe-system-one.lazy.d.ts.map +1 -0
  158. package/dist/api/typesafe-system-one.lazy.js +4 -0
  159. package/dist/api/typesafe-system-one.lazy.js.map +1 -0
  160. package/dist/auth/context.d.ts +7 -0
  161. package/dist/auth/context.d.ts.map +1 -0
  162. package/dist/auth/context.js +42 -0
  163. package/dist/auth/context.js.map +1 -0
  164. package/dist/auth/credential-store.d.ts +17 -0
  165. package/dist/auth/credential-store.d.ts.map +1 -0
  166. package/dist/auth/credential-store.js +51 -0
  167. package/dist/auth/credential-store.js.map +1 -0
  168. package/dist/auth/helpers.d.ts +22 -0
  169. package/dist/auth/helpers.d.ts.map +1 -0
  170. package/dist/auth/helpers.js +53 -0
  171. package/dist/auth/helpers.js.map +1 -0
  172. package/dist/auth/oauth/anthropic.d.ts +9 -0
  173. package/dist/auth/oauth/anthropic.d.ts.map +1 -0
  174. package/dist/auth/oauth/anthropic.js +249 -0
  175. package/dist/auth/oauth/anthropic.js.map +1 -0
  176. package/dist/auth/oauth/callback-server.d.ts +55 -0
  177. package/dist/auth/oauth/callback-server.d.ts.map +1 -0
  178. package/dist/auth/oauth/callback-server.js +146 -0
  179. package/dist/auth/oauth/callback-server.js.map +1 -0
  180. package/dist/auth/oauth/device-code.d.ts +24 -0
  181. package/dist/auth/oauth/device-code.d.ts.map +1 -0
  182. package/dist/auth/oauth/device-code.js +69 -0
  183. package/dist/auth/oauth/device-code.js.map +1 -0
  184. package/dist/auth/oauth/github-copilot.d.ts +6 -0
  185. package/dist/auth/oauth/github-copilot.d.ts.map +1 -0
  186. package/dist/auth/oauth/github-copilot.js +392 -0
  187. package/dist/auth/oauth/github-copilot.js.map +1 -0
  188. package/dist/auth/oauth/kimi-coding.d.ts +10 -0
  189. package/dist/auth/oauth/kimi-coding.d.ts.map +1 -0
  190. package/dist/auth/oauth/kimi-coding.js +248 -0
  191. package/dist/auth/oauth/kimi-coding.js.map +1 -0
  192. package/dist/auth/oauth/load.d.ts +31 -0
  193. package/dist/auth/oauth/load.d.ts.map +1 -0
  194. package/dist/auth/oauth/load.js +69 -0
  195. package/dist/auth/oauth/load.js.map +1 -0
  196. package/dist/auth/oauth/meta.d.ts +17 -0
  197. package/dist/auth/oauth/meta.d.ts.map +1 -0
  198. package/dist/auth/oauth/meta.js +190 -0
  199. package/dist/auth/oauth/meta.js.map +1 -0
  200. package/dist/auth/oauth/openai-chatgpt.d.ts +9 -0
  201. package/dist/auth/oauth/openai-chatgpt.d.ts.map +1 -0
  202. package/dist/auth/oauth/openai-chatgpt.js +266 -0
  203. package/dist/auth/oauth/openai-chatgpt.js.map +1 -0
  204. package/dist/auth/oauth/openai-codex.d.ts +9 -0
  205. package/dist/auth/oauth/openai-codex.d.ts.map +1 -0
  206. package/dist/auth/oauth/openai-codex.js +346 -0
  207. package/dist/auth/oauth/openai-codex.js.map +1 -0
  208. package/dist/auth/oauth/openrouter.d.ts +15 -0
  209. package/dist/auth/oauth/openrouter.d.ts.map +1 -0
  210. package/dist/auth/oauth/openrouter.js +158 -0
  211. package/dist/auth/oauth/openrouter.js.map +1 -0
  212. package/dist/auth/oauth/pkce.d.ts +13 -0
  213. package/dist/auth/oauth/pkce.d.ts.map +1 -0
  214. package/dist/auth/oauth/pkce.js +31 -0
  215. package/dist/auth/oauth/pkce.js.map +1 -0
  216. package/dist/auth/oauth/radius.d.ts +17 -0
  217. package/dist/auth/oauth/radius.d.ts.map +1 -0
  218. package/dist/auth/oauth/radius.js +253 -0
  219. package/dist/auth/oauth/radius.js.map +1 -0
  220. package/dist/auth/oauth/xai.d.ts +6 -0
  221. package/dist/auth/oauth/xai.d.ts.map +1 -0
  222. package/dist/auth/oauth/xai.js +190 -0
  223. package/dist/auth/oauth/xai.js.map +1 -0
  224. package/dist/auth/resolve.d.ts +21 -0
  225. package/dist/auth/resolve.d.ts.map +1 -0
  226. package/dist/auth/resolve.js +116 -0
  227. package/dist/auth/resolve.js.map +1 -0
  228. package/dist/auth/types.d.ts +240 -0
  229. package/dist/auth/types.d.ts.map +1 -0
  230. package/dist/auth/types.js +2 -0
  231. package/dist/auth/types.js.map +1 -0
  232. package/dist/bedrock-provider.d.ts +5 -0
  233. package/dist/bedrock-provider.d.ts.map +1 -0
  234. package/dist/bedrock-provider.js +6 -0
  235. package/dist/bedrock-provider.js.map +1 -0
  236. package/dist/bun-oauth.d.ts +3 -0
  237. package/dist/bun-oauth.d.ts.map +1 -0
  238. package/dist/bun-oauth.js +25 -0
  239. package/dist/bun-oauth.js.map +1 -0
  240. package/dist/cli.d.ts +3 -0
  241. package/dist/cli.d.ts.map +1 -0
  242. package/dist/cli.js +115 -0
  243. package/dist/cli.js.map +1 -0
  244. package/dist/compat/extension-oauth-types.d.ts +39 -0
  245. package/dist/compat/extension-oauth-types.d.ts.map +1 -0
  246. package/dist/compat/extension-oauth-types.js +2 -0
  247. package/dist/compat/extension-oauth-types.js.map +1 -0
  248. package/dist/compat.d.ts +67 -0
  249. package/dist/compat.d.ts.map +1 -0
  250. package/dist/compat.js +202 -0
  251. package/dist/compat.js.map +1 -0
  252. package/dist/env-api-keys.d.ts +26 -0
  253. package/dist/env-api-keys.d.ts.map +1 -0
  254. package/dist/env-api-keys.js +163 -0
  255. package/dist/env-api-keys.js.map +1 -0
  256. package/dist/image-models.d.ts +21 -0
  257. package/dist/image-models.d.ts.map +1 -0
  258. package/dist/image-models.js +24 -0
  259. package/dist/image-models.js.map +1 -0
  260. package/dist/images-api-registry.d.ts +14 -0
  261. package/dist/images-api-registry.d.ts.map +1 -0
  262. package/dist/images-api-registry.js +22 -0
  263. package/dist/images-api-registry.js.map +1 -0
  264. package/dist/images.d.ts +9 -0
  265. package/dist/images.d.ts.map +1 -0
  266. package/dist/images.js +19 -0
  267. package/dist/images.js.map +1 -0
  268. package/dist/index.d.ts +36 -0
  269. package/dist/index.d.ts.map +1 -0
  270. package/dist/index.js +23 -0
  271. package/dist/index.js.map +1 -0
  272. package/dist/legacy-api-aliases.d.ts +42 -0
  273. package/dist/legacy-api-aliases.d.ts.map +1 -0
  274. package/dist/legacy-api-aliases.js +49 -0
  275. package/dist/legacy-api-aliases.js.map +1 -0
  276. package/dist/model-catalog.d.ts +33 -0
  277. package/dist/model-catalog.d.ts.map +1 -0
  278. package/dist/model-catalog.js +16 -0
  279. package/dist/model-catalog.js.map +1 -0
  280. package/dist/models-store.d.ts +30 -0
  281. package/dist/models-store.d.ts.map +1 -0
  282. package/dist/models-store.js +17 -0
  283. package/dist/models-store.js.map +1 -0
  284. package/dist/models.d.ts +269 -0
  285. package/dist/models.d.ts.map +1 -0
  286. package/dist/models.generated.d.ts +175 -0
  287. package/dist/models.generated.d.ts.map +1 -0
  288. package/dist/models.generated.js +177 -0
  289. package/dist/models.generated.js.map +1 -0
  290. package/dist/models.js +721 -0
  291. package/dist/models.js.map +1 -0
  292. package/dist/oauth.d.ts +3 -0
  293. package/dist/oauth.d.ts.map +1 -0
  294. package/dist/oauth.js +2 -0
  295. package/dist/oauth.js.map +1 -0
  296. package/dist/providers/all.d.ts +34 -0
  297. package/dist/providers/all.d.ts.map +1 -0
  298. package/dist/providers/all.js +137 -0
  299. package/dist/providers/all.js.map +1 -0
  300. package/dist/providers/amazon-bedrock.d.ts +3 -0
  301. package/dist/providers/amazon-bedrock.d.ts.map +1 -0
  302. package/dist/providers/amazon-bedrock.js +93 -0
  303. package/dist/providers/amazon-bedrock.js.map +1 -0
  304. package/dist/providers/amazon-bedrock.models.d.ts +6 -0
  305. package/dist/providers/amazon-bedrock.models.d.ts.map +1 -0
  306. package/dist/providers/amazon-bedrock.models.js +8 -0
  307. package/dist/providers/amazon-bedrock.models.js.map +1 -0
  308. package/dist/providers/ant-ling.d.ts +3 -0
  309. package/dist/providers/ant-ling.d.ts.map +1 -0
  310. package/dist/providers/ant-ling.js +15 -0
  311. package/dist/providers/ant-ling.js.map +1 -0
  312. package/dist/providers/ant-ling.models.d.ts +6 -0
  313. package/dist/providers/ant-ling.models.d.ts.map +1 -0
  314. package/dist/providers/ant-ling.models.js +8 -0
  315. package/dist/providers/ant-ling.models.js.map +1 -0
  316. package/dist/providers/anthropic.d.ts +3 -0
  317. package/dist/providers/anthropic.d.ts.map +1 -0
  318. package/dist/providers/anthropic.js +78 -0
  319. package/dist/providers/anthropic.js.map +1 -0
  320. package/dist/providers/anthropic.models.d.ts +6 -0
  321. package/dist/providers/anthropic.models.d.ts.map +1 -0
  322. package/dist/providers/anthropic.models.js +8 -0
  323. package/dist/providers/anthropic.models.js.map +1 -0
  324. package/dist/providers/azure-openai-responses.d.ts +3 -0
  325. package/dist/providers/azure-openai-responses.d.ts.map +1 -0
  326. package/dist/providers/azure-openai-responses.js +14 -0
  327. package/dist/providers/azure-openai-responses.js.map +1 -0
  328. package/dist/providers/azure-openai-responses.models.d.ts +6 -0
  329. package/dist/providers/azure-openai-responses.models.d.ts.map +1 -0
  330. package/dist/providers/azure-openai-responses.models.js +8 -0
  331. package/dist/providers/azure-openai-responses.models.js.map +1 -0
  332. package/dist/providers/baseten.d.ts +3 -0
  333. package/dist/providers/baseten.d.ts.map +1 -0
  334. package/dist/providers/baseten.js +15 -0
  335. package/dist/providers/baseten.js.map +1 -0
  336. package/dist/providers/baseten.models.d.ts +6 -0
  337. package/dist/providers/baseten.models.d.ts.map +1 -0
  338. package/dist/providers/baseten.models.js +8 -0
  339. package/dist/providers/baseten.models.js.map +1 -0
  340. package/dist/providers/cerebras.d.ts +3 -0
  341. package/dist/providers/cerebras.d.ts.map +1 -0
  342. package/dist/providers/cerebras.js +15 -0
  343. package/dist/providers/cerebras.js.map +1 -0
  344. package/dist/providers/cerebras.models.d.ts +6 -0
  345. package/dist/providers/cerebras.models.d.ts.map +1 -0
  346. package/dist/providers/cerebras.models.js +8 -0
  347. package/dist/providers/cerebras.models.js.map +1 -0
  348. package/dist/providers/cloudflare-ai-gateway.d.ts +5 -0
  349. package/dist/providers/cloudflare-ai-gateway.d.ts.map +1 -0
  350. package/dist/providers/cloudflare-ai-gateway.js +25 -0
  351. package/dist/providers/cloudflare-ai-gateway.js.map +1 -0
  352. package/dist/providers/cloudflare-ai-gateway.models.d.ts +6 -0
  353. package/dist/providers/cloudflare-ai-gateway.models.d.ts.map +1 -0
  354. package/dist/providers/cloudflare-ai-gateway.models.js +8 -0
  355. package/dist/providers/cloudflare-ai-gateway.models.js.map +1 -0
  356. package/dist/providers/cloudflare-auth.d.ts +4 -0
  357. package/dist/providers/cloudflare-auth.d.ts.map +1 -0
  358. package/dist/providers/cloudflare-auth.js +86 -0
  359. package/dist/providers/cloudflare-auth.js.map +1 -0
  360. package/dist/providers/cloudflare-stream.d.ts +12 -0
  361. package/dist/providers/cloudflare-stream.d.ts.map +1 -0
  362. package/dist/providers/cloudflare-stream.js +27 -0
  363. package/dist/providers/cloudflare-stream.js.map +1 -0
  364. package/dist/providers/cloudflare-workers-ai.d.ts +3 -0
  365. package/dist/providers/cloudflare-workers-ai.d.ts.map +1 -0
  366. package/dist/providers/cloudflare-workers-ai.js +22 -0
  367. package/dist/providers/cloudflare-workers-ai.js.map +1 -0
  368. package/dist/providers/cloudflare-workers-ai.models.d.ts +6 -0
  369. package/dist/providers/cloudflare-workers-ai.models.d.ts.map +1 -0
  370. package/dist/providers/cloudflare-workers-ai.models.js +8 -0
  371. package/dist/providers/cloudflare-workers-ai.models.js.map +1 -0
  372. package/dist/providers/data/.manifest.json +1 -0
  373. package/dist/providers/data/amazon-bedrock.json +1 -0
  374. package/dist/providers/data/ant-ling.json +1 -0
  375. package/dist/providers/data/anthropic.json +1 -0
  376. package/dist/providers/data/azure-openai-responses.json +1 -0
  377. package/dist/providers/data/baseten.json +1 -0
  378. package/dist/providers/data/cerebras.json +1 -0
  379. package/dist/providers/data/cloudflare-ai-gateway.json +1 -0
  380. package/dist/providers/data/cloudflare-workers-ai.json +1 -0
  381. package/dist/providers/data/deepseek.json +1 -0
  382. package/dist/providers/data/fireworks.json +1 -0
  383. package/dist/providers/data/github-copilot.json +1 -0
  384. package/dist/providers/data/google-vertex.json +1 -0
  385. package/dist/providers/data/google.json +1 -0
  386. package/dist/providers/data/groq.json +1 -0
  387. package/dist/providers/data/huggingface.json +1 -0
  388. package/dist/providers/data/kimi-coding.json +1 -0
  389. package/dist/providers/data/meta.json +1 -0
  390. package/dist/providers/data/minimax-cn.json +1 -0
  391. package/dist/providers/data/minimax.json +1 -0
  392. package/dist/providers/data/mistral.json +1 -0
  393. package/dist/providers/data/moonshotai-cn.json +1 -0
  394. package/dist/providers/data/moonshotai.json +1 -0
  395. package/dist/providers/data/nvidia.json +1 -0
  396. package/dist/providers/data/openai-codex.json +1 -0
  397. package/dist/providers/data/openai.json +1 -0
  398. package/dist/providers/data/opencode-go.json +1 -0
  399. package/dist/providers/data/opencode.json +1 -0
  400. package/dist/providers/data/openrouter.json +1 -0
  401. package/dist/providers/data/qwen-token-plan-cn.json +1 -0
  402. package/dist/providers/data/qwen-token-plan-individual.json +1 -0
  403. package/dist/providers/data/qwen-token-plan.json +1 -0
  404. package/dist/providers/data/radius.json +1 -0
  405. package/dist/providers/data/together.json +1 -0
  406. package/dist/providers/data/typesafe.json +1 -0
  407. package/dist/providers/data/vercel-ai-gateway.json +1 -0
  408. package/dist/providers/data/xai.json +1 -0
  409. package/dist/providers/data/xiaomi-token-plan-ams.json +1 -0
  410. package/dist/providers/data/xiaomi-token-plan-cn.json +1 -0
  411. package/dist/providers/data/xiaomi-token-plan-sgp.json +1 -0
  412. package/dist/providers/data/xiaomi.json +1 -0
  413. package/dist/providers/data/zai-coding-cn.json +1 -0
  414. package/dist/providers/data/zai.json +1 -0
  415. package/dist/providers/deepseek.d.ts +3 -0
  416. package/dist/providers/deepseek.d.ts.map +1 -0
  417. package/dist/providers/deepseek.js +15 -0
  418. package/dist/providers/deepseek.js.map +1 -0
  419. package/dist/providers/deepseek.models.d.ts +6 -0
  420. package/dist/providers/deepseek.models.d.ts.map +1 -0
  421. package/dist/providers/deepseek.models.js +8 -0
  422. package/dist/providers/deepseek.models.js.map +1 -0
  423. package/dist/providers/faux.d.ts +103 -0
  424. package/dist/providers/faux.d.ts.map +1 -0
  425. package/dist/providers/faux.js +489 -0
  426. package/dist/providers/faux.js.map +1 -0
  427. package/dist/providers/fireworks.d.ts +3 -0
  428. package/dist/providers/fireworks.d.ts.map +1 -0
  429. package/dist/providers/fireworks.js +19 -0
  430. package/dist/providers/fireworks.js.map +1 -0
  431. package/dist/providers/fireworks.models.d.ts +6 -0
  432. package/dist/providers/fireworks.models.d.ts.map +1 -0
  433. package/dist/providers/fireworks.models.js +8 -0
  434. package/dist/providers/fireworks.models.js.map +1 -0
  435. package/dist/providers/github-copilot.d.ts +3 -0
  436. package/dist/providers/github-copilot.d.ts.map +1 -0
  437. package/dist/providers/github-copilot.js +35 -0
  438. package/dist/providers/github-copilot.js.map +1 -0
  439. package/dist/providers/github-copilot.models.d.ts +6 -0
  440. package/dist/providers/github-copilot.models.d.ts.map +1 -0
  441. package/dist/providers/github-copilot.models.js +8 -0
  442. package/dist/providers/github-copilot.models.js.map +1 -0
  443. package/dist/providers/google-vertex.d.ts +3 -0
  444. package/dist/providers/google-vertex.d.ts.map +1 -0
  445. package/dist/providers/google-vertex.js +94 -0
  446. package/dist/providers/google-vertex.js.map +1 -0
  447. package/dist/providers/google-vertex.models.d.ts +6 -0
  448. package/dist/providers/google-vertex.models.d.ts.map +1 -0
  449. package/dist/providers/google-vertex.models.js +8 -0
  450. package/dist/providers/google-vertex.models.js.map +1 -0
  451. package/dist/providers/google.d.ts +3 -0
  452. package/dist/providers/google.d.ts.map +1 -0
  453. package/dist/providers/google.js +15 -0
  454. package/dist/providers/google.js.map +1 -0
  455. package/dist/providers/google.models.d.ts +6 -0
  456. package/dist/providers/google.models.d.ts.map +1 -0
  457. package/dist/providers/google.models.js +8 -0
  458. package/dist/providers/google.models.js.map +1 -0
  459. package/dist/providers/groq.d.ts +3 -0
  460. package/dist/providers/groq.d.ts.map +1 -0
  461. package/dist/providers/groq.js +15 -0
  462. package/dist/providers/groq.js.map +1 -0
  463. package/dist/providers/groq.models.d.ts +6 -0
  464. package/dist/providers/groq.models.d.ts.map +1 -0
  465. package/dist/providers/groq.models.js +8 -0
  466. package/dist/providers/groq.models.js.map +1 -0
  467. package/dist/providers/huggingface.d.ts +3 -0
  468. package/dist/providers/huggingface.d.ts.map +1 -0
  469. package/dist/providers/huggingface.js +15 -0
  470. package/dist/providers/huggingface.js.map +1 -0
  471. package/dist/providers/huggingface.models.d.ts +6 -0
  472. package/dist/providers/huggingface.models.d.ts.map +1 -0
  473. package/dist/providers/huggingface.models.js +8 -0
  474. package/dist/providers/huggingface.models.js.map +1 -0
  475. package/dist/providers/images/register-builtins.d.ts +4 -0
  476. package/dist/providers/images/register-builtins.d.ts.map +1 -0
  477. package/dist/providers/images/register-builtins.js +34 -0
  478. package/dist/providers/images/register-builtins.js.map +1 -0
  479. package/dist/providers/kimi-coding.d.ts +3 -0
  480. package/dist/providers/kimi-coding.d.ts.map +1 -0
  481. package/dist/providers/kimi-coding.js +24 -0
  482. package/dist/providers/kimi-coding.js.map +1 -0
  483. package/dist/providers/kimi-coding.models.d.ts +6 -0
  484. package/dist/providers/kimi-coding.models.d.ts.map +1 -0
  485. package/dist/providers/kimi-coding.models.js +8 -0
  486. package/dist/providers/kimi-coding.models.js.map +1 -0
  487. package/dist/providers/meta.d.ts +3 -0
  488. package/dist/providers/meta.d.ts.map +1 -0
  489. package/dist/providers/meta.js +24 -0
  490. package/dist/providers/meta.js.map +1 -0
  491. package/dist/providers/meta.models.d.ts +6 -0
  492. package/dist/providers/meta.models.d.ts.map +1 -0
  493. package/dist/providers/meta.models.js +8 -0
  494. package/dist/providers/meta.models.js.map +1 -0
  495. package/dist/providers/minimax-cn.d.ts +3 -0
  496. package/dist/providers/minimax-cn.d.ts.map +1 -0
  497. package/dist/providers/minimax-cn.js +15 -0
  498. package/dist/providers/minimax-cn.js.map +1 -0
  499. package/dist/providers/minimax-cn.models.d.ts +6 -0
  500. package/dist/providers/minimax-cn.models.d.ts.map +1 -0
  501. package/dist/providers/minimax-cn.models.js +8 -0
  502. package/dist/providers/minimax-cn.models.js.map +1 -0
  503. package/dist/providers/minimax.d.ts +3 -0
  504. package/dist/providers/minimax.d.ts.map +1 -0
  505. package/dist/providers/minimax.js +15 -0
  506. package/dist/providers/minimax.js.map +1 -0
  507. package/dist/providers/minimax.models.d.ts +6 -0
  508. package/dist/providers/minimax.models.d.ts.map +1 -0
  509. package/dist/providers/minimax.models.js +8 -0
  510. package/dist/providers/minimax.models.js.map +1 -0
  511. package/dist/providers/mistral.d.ts +3 -0
  512. package/dist/providers/mistral.d.ts.map +1 -0
  513. package/dist/providers/mistral.js +15 -0
  514. package/dist/providers/mistral.js.map +1 -0
  515. package/dist/providers/mistral.models.d.ts +6 -0
  516. package/dist/providers/mistral.models.d.ts.map +1 -0
  517. package/dist/providers/mistral.models.js +8 -0
  518. package/dist/providers/mistral.models.js.map +1 -0
  519. package/dist/providers/moonshotai-cn.d.ts +3 -0
  520. package/dist/providers/moonshotai-cn.d.ts.map +1 -0
  521. package/dist/providers/moonshotai-cn.js +15 -0
  522. package/dist/providers/moonshotai-cn.js.map +1 -0
  523. package/dist/providers/moonshotai-cn.models.d.ts +6 -0
  524. package/dist/providers/moonshotai-cn.models.d.ts.map +1 -0
  525. package/dist/providers/moonshotai-cn.models.js +8 -0
  526. package/dist/providers/moonshotai-cn.models.js.map +1 -0
  527. package/dist/providers/moonshotai.d.ts +3 -0
  528. package/dist/providers/moonshotai.d.ts.map +1 -0
  529. package/dist/providers/moonshotai.js +15 -0
  530. package/dist/providers/moonshotai.js.map +1 -0
  531. package/dist/providers/moonshotai.models.d.ts +6 -0
  532. package/dist/providers/moonshotai.models.d.ts.map +1 -0
  533. package/dist/providers/moonshotai.models.js +8 -0
  534. package/dist/providers/moonshotai.models.js.map +1 -0
  535. package/dist/providers/nvidia.d.ts +3 -0
  536. package/dist/providers/nvidia.d.ts.map +1 -0
  537. package/dist/providers/nvidia.js +15 -0
  538. package/dist/providers/nvidia.js.map +1 -0
  539. package/dist/providers/nvidia.models.d.ts +6 -0
  540. package/dist/providers/nvidia.models.d.ts.map +1 -0
  541. package/dist/providers/nvidia.models.js +8 -0
  542. package/dist/providers/nvidia.models.js.map +1 -0
  543. package/dist/providers/openai-codex.d.ts +3 -0
  544. package/dist/providers/openai-codex.d.ts.map +1 -0
  545. package/dist/providers/openai-codex.js +22 -0
  546. package/dist/providers/openai-codex.js.map +1 -0
  547. package/dist/providers/openai-codex.models.d.ts +6 -0
  548. package/dist/providers/openai-codex.models.d.ts.map +1 -0
  549. package/dist/providers/openai-codex.models.js +8 -0
  550. package/dist/providers/openai-codex.models.js.map +1 -0
  551. package/dist/providers/openai.d.ts +3 -0
  552. package/dist/providers/openai.d.ts.map +1 -0
  553. package/dist/providers/openai.js +24 -0
  554. package/dist/providers/openai.js.map +1 -0
  555. package/dist/providers/openai.models.d.ts +6 -0
  556. package/dist/providers/openai.models.d.ts.map +1 -0
  557. package/dist/providers/openai.models.js +8 -0
  558. package/dist/providers/openai.models.js.map +1 -0
  559. package/dist/providers/opencode-go.d.ts +3 -0
  560. package/dist/providers/opencode-go.d.ts.map +1 -0
  561. package/dist/providers/opencode-go.js +21 -0
  562. package/dist/providers/opencode-go.js.map +1 -0
  563. package/dist/providers/opencode-go.models.d.ts +6 -0
  564. package/dist/providers/opencode-go.models.d.ts.map +1 -0
  565. package/dist/providers/opencode-go.models.js +8 -0
  566. package/dist/providers/opencode-go.models.js.map +1 -0
  567. package/dist/providers/opencode-headers.d.ts +4 -0
  568. package/dist/providers/opencode-headers.d.ts.map +1 -0
  569. package/dist/providers/opencode-headers.js +22 -0
  570. package/dist/providers/opencode-headers.js.map +1 -0
  571. package/dist/providers/opencode.d.ts +5 -0
  572. package/dist/providers/opencode.d.ts.map +1 -0
  573. package/dist/providers/opencode.js +26 -0
  574. package/dist/providers/opencode.js.map +1 -0
  575. package/dist/providers/opencode.models.d.ts +6 -0
  576. package/dist/providers/opencode.models.d.ts.map +1 -0
  577. package/dist/providers/opencode.models.js +8 -0
  578. package/dist/providers/opencode.models.js.map +1 -0
  579. package/dist/providers/openrouter.d.ts +3 -0
  580. package/dist/providers/openrouter.d.ts.map +1 -0
  581. package/dist/providers/openrouter.js +36 -0
  582. package/dist/providers/openrouter.js.map +1 -0
  583. package/dist/providers/openrouter.models.d.ts +6 -0
  584. package/dist/providers/openrouter.models.d.ts.map +1 -0
  585. package/dist/providers/openrouter.models.js +8 -0
  586. package/dist/providers/openrouter.models.js.map +1 -0
  587. package/dist/providers/qwen-token-plan-cn.d.ts +3 -0
  588. package/dist/providers/qwen-token-plan-cn.d.ts.map +1 -0
  589. package/dist/providers/qwen-token-plan-cn.js +15 -0
  590. package/dist/providers/qwen-token-plan-cn.js.map +1 -0
  591. package/dist/providers/qwen-token-plan-cn.models.d.ts +6 -0
  592. package/dist/providers/qwen-token-plan-cn.models.d.ts.map +1 -0
  593. package/dist/providers/qwen-token-plan-cn.models.js +8 -0
  594. package/dist/providers/qwen-token-plan-cn.models.js.map +1 -0
  595. package/dist/providers/qwen-token-plan-individual.d.ts +3 -0
  596. package/dist/providers/qwen-token-plan-individual.d.ts.map +1 -0
  597. package/dist/providers/qwen-token-plan-individual.js +15 -0
  598. package/dist/providers/qwen-token-plan-individual.js.map +1 -0
  599. package/dist/providers/qwen-token-plan-individual.models.d.ts +6 -0
  600. package/dist/providers/qwen-token-plan-individual.models.d.ts.map +1 -0
  601. package/dist/providers/qwen-token-plan-individual.models.js +8 -0
  602. package/dist/providers/qwen-token-plan-individual.models.js.map +1 -0
  603. package/dist/providers/qwen-token-plan.d.ts +3 -0
  604. package/dist/providers/qwen-token-plan.d.ts.map +1 -0
  605. package/dist/providers/qwen-token-plan.js +15 -0
  606. package/dist/providers/qwen-token-plan.js.map +1 -0
  607. package/dist/providers/qwen-token-plan.models.d.ts +6 -0
  608. package/dist/providers/qwen-token-plan.models.d.ts.map +1 -0
  609. package/dist/providers/qwen-token-plan.models.js +8 -0
  610. package/dist/providers/qwen-token-plan.models.js.map +1 -0
  611. package/dist/providers/radius-config.d.ts +26 -0
  612. package/dist/providers/radius-config.d.ts.map +1 -0
  613. package/dist/providers/radius-config.js +63 -0
  614. package/dist/providers/radius-config.js.map +1 -0
  615. package/dist/providers/radius.d.ts +9 -0
  616. package/dist/providers/radius.d.ts.map +1 -0
  617. package/dist/providers/radius.js +78 -0
  618. package/dist/providers/radius.js.map +1 -0
  619. package/dist/providers/radius.models.d.ts +6 -0
  620. package/dist/providers/radius.models.d.ts.map +1 -0
  621. package/dist/providers/radius.models.js +8 -0
  622. package/dist/providers/radius.models.js.map +1 -0
  623. package/dist/providers/together.d.ts +3 -0
  624. package/dist/providers/together.d.ts.map +1 -0
  625. package/dist/providers/together.js +15 -0
  626. package/dist/providers/together.js.map +1 -0
  627. package/dist/providers/together.models.d.ts +6 -0
  628. package/dist/providers/together.models.d.ts.map +1 -0
  629. package/dist/providers/together.models.js +8 -0
  630. package/dist/providers/together.models.js.map +1 -0
  631. package/dist/providers/typesafe.d.ts +3 -0
  632. package/dist/providers/typesafe.d.ts.map +1 -0
  633. package/dist/providers/typesafe.js +18 -0
  634. package/dist/providers/typesafe.js.map +1 -0
  635. package/dist/providers/typesafe.models.d.ts +6 -0
  636. package/dist/providers/typesafe.models.d.ts.map +1 -0
  637. package/dist/providers/typesafe.models.js +8 -0
  638. package/dist/providers/typesafe.models.js.map +1 -0
  639. package/dist/providers/vercel-ai-gateway.d.ts +3 -0
  640. package/dist/providers/vercel-ai-gateway.d.ts.map +1 -0
  641. package/dist/providers/vercel-ai-gateway.js +18 -0
  642. package/dist/providers/vercel-ai-gateway.js.map +1 -0
  643. package/dist/providers/vercel-ai-gateway.models.d.ts +6 -0
  644. package/dist/providers/vercel-ai-gateway.models.d.ts.map +1 -0
  645. package/dist/providers/vercel-ai-gateway.models.js +8 -0
  646. package/dist/providers/vercel-ai-gateway.models.js.map +1 -0
  647. package/dist/providers/xai.d.ts +3 -0
  648. package/dist/providers/xai.d.ts.map +1 -0
  649. package/dist/providers/xai.js +24 -0
  650. package/dist/providers/xai.js.map +1 -0
  651. package/dist/providers/xai.models.d.ts +6 -0
  652. package/dist/providers/xai.models.d.ts.map +1 -0
  653. package/dist/providers/xai.models.js +8 -0
  654. package/dist/providers/xai.models.js.map +1 -0
  655. package/dist/providers/xiaomi-token-plan-ams.d.ts +3 -0
  656. package/dist/providers/xiaomi-token-plan-ams.d.ts.map +1 -0
  657. package/dist/providers/xiaomi-token-plan-ams.js +15 -0
  658. package/dist/providers/xiaomi-token-plan-ams.js.map +1 -0
  659. package/dist/providers/xiaomi-token-plan-ams.models.d.ts +6 -0
  660. package/dist/providers/xiaomi-token-plan-ams.models.d.ts.map +1 -0
  661. package/dist/providers/xiaomi-token-plan-ams.models.js +8 -0
  662. package/dist/providers/xiaomi-token-plan-ams.models.js.map +1 -0
  663. package/dist/providers/xiaomi-token-plan-cn.d.ts +3 -0
  664. package/dist/providers/xiaomi-token-plan-cn.d.ts.map +1 -0
  665. package/dist/providers/xiaomi-token-plan-cn.js +15 -0
  666. package/dist/providers/xiaomi-token-plan-cn.js.map +1 -0
  667. package/dist/providers/xiaomi-token-plan-cn.models.d.ts +6 -0
  668. package/dist/providers/xiaomi-token-plan-cn.models.d.ts.map +1 -0
  669. package/dist/providers/xiaomi-token-plan-cn.models.js +8 -0
  670. package/dist/providers/xiaomi-token-plan-cn.models.js.map +1 -0
  671. package/dist/providers/xiaomi-token-plan-sgp.d.ts +3 -0
  672. package/dist/providers/xiaomi-token-plan-sgp.d.ts.map +1 -0
  673. package/dist/providers/xiaomi-token-plan-sgp.js +15 -0
  674. package/dist/providers/xiaomi-token-plan-sgp.js.map +1 -0
  675. package/dist/providers/xiaomi-token-plan-sgp.models.d.ts +6 -0
  676. package/dist/providers/xiaomi-token-plan-sgp.models.d.ts.map +1 -0
  677. package/dist/providers/xiaomi-token-plan-sgp.models.js +8 -0
  678. package/dist/providers/xiaomi-token-plan-sgp.models.js.map +1 -0
  679. package/dist/providers/xiaomi.d.ts +3 -0
  680. package/dist/providers/xiaomi.d.ts.map +1 -0
  681. package/dist/providers/xiaomi.js +15 -0
  682. package/dist/providers/xiaomi.js.map +1 -0
  683. package/dist/providers/xiaomi.models.d.ts +6 -0
  684. package/dist/providers/xiaomi.models.d.ts.map +1 -0
  685. package/dist/providers/xiaomi.models.js +8 -0
  686. package/dist/providers/xiaomi.models.js.map +1 -0
  687. package/dist/providers/zai-coding-cn.d.ts +3 -0
  688. package/dist/providers/zai-coding-cn.d.ts.map +1 -0
  689. package/dist/providers/zai-coding-cn.js +15 -0
  690. package/dist/providers/zai-coding-cn.js.map +1 -0
  691. package/dist/providers/zai-coding-cn.models.d.ts +6 -0
  692. package/dist/providers/zai-coding-cn.models.d.ts.map +1 -0
  693. package/dist/providers/zai-coding-cn.models.js +8 -0
  694. package/dist/providers/zai-coding-cn.models.js.map +1 -0
  695. package/dist/providers/zai.d.ts +3 -0
  696. package/dist/providers/zai.d.ts.map +1 -0
  697. package/dist/providers/zai.js +15 -0
  698. package/dist/providers/zai.js.map +1 -0
  699. package/dist/providers/zai.models.d.ts +6 -0
  700. package/dist/providers/zai.models.d.ts.map +1 -0
  701. package/dist/providers/zai.models.js +8 -0
  702. package/dist/providers/zai.models.js.map +1 -0
  703. package/dist/session-resources.d.ts +4 -0
  704. package/dist/session-resources.d.ts.map +1 -0
  705. package/dist/session-resources.js +22 -0
  706. package/dist/session-resources.js.map +1 -0
  707. package/dist/types.d.ts +982 -0
  708. package/dist/types.d.ts.map +1 -0
  709. package/dist/types.js +2 -0
  710. package/dist/types.js.map +1 -0
  711. package/dist/utils/abort-signals.d.ts +6 -0
  712. package/dist/utils/abort-signals.d.ts.map +1 -0
  713. package/dist/utils/abort-signals.js +34 -0
  714. package/dist/utils/abort-signals.js.map +1 -0
  715. package/dist/utils/abort.d.ts +8 -0
  716. package/dist/utils/abort.d.ts.map +1 -0
  717. package/dist/utils/abort.js +49 -0
  718. package/dist/utils/abort.js.map +1 -0
  719. package/dist/utils/assistant-message-frame.d.ts +82 -0
  720. package/dist/utils/assistant-message-frame.d.ts.map +1 -0
  721. package/dist/utils/assistant-message-frame.js +430 -0
  722. package/dist/utils/assistant-message-frame.js.map +1 -0
  723. package/dist/utils/diagnostics.d.ts +20 -0
  724. package/dist/utils/diagnostics.d.ts.map +1 -0
  725. package/dist/utils/diagnostics.js +25 -0
  726. package/dist/utils/diagnostics.js.map +1 -0
  727. package/dist/utils/error-body.d.ts +25 -0
  728. package/dist/utils/error-body.d.ts.map +1 -0
  729. package/dist/utils/error-body.js +133 -0
  730. package/dist/utils/error-body.js.map +1 -0
  731. package/dist/utils/estimate.d.ts +17 -0
  732. package/dist/utils/estimate.d.ts.map +1 -0
  733. package/dist/utils/estimate.js +95 -0
  734. package/dist/utils/estimate.js.map +1 -0
  735. package/dist/utils/event-stream.d.ts +21 -0
  736. package/dist/utils/event-stream.d.ts.map +1 -0
  737. package/dist/utils/event-stream.js +99 -0
  738. package/dist/utils/event-stream.js.map +1 -0
  739. package/dist/utils/hash.d.ts +3 -0
  740. package/dist/utils/hash.d.ts.map +1 -0
  741. package/dist/utils/hash.js +14 -0
  742. package/dist/utils/hash.js.map +1 -0
  743. package/dist/utils/headers.d.ts +4 -0
  744. package/dist/utils/headers.d.ts.map +1 -0
  745. package/dist/utils/headers.js +20 -0
  746. package/dist/utils/headers.js.map +1 -0
  747. package/dist/utils/json-parse.d.ts +16 -0
  748. package/dist/utils/json-parse.d.ts.map +1 -0
  749. package/dist/utils/json-parse.js +113 -0
  750. package/dist/utils/json-parse.js.map +1 -0
  751. package/dist/utils/model-operations.d.ts +11 -0
  752. package/dist/utils/model-operations.d.ts.map +1 -0
  753. package/dist/utils/model-operations.js +47 -0
  754. package/dist/utils/model-operations.js.map +1 -0
  755. package/dist/utils/models-error.d.ts +8 -0
  756. package/dist/utils/models-error.d.ts.map +1 -0
  757. package/dist/utils/models-error.js +19 -0
  758. package/dist/utils/models-error.js.map +1 -0
  759. package/dist/utils/node-http-proxy.d.ts +4 -0
  760. package/dist/utils/node-http-proxy.d.ts.map +1 -0
  761. package/dist/utils/node-http-proxy.js +133 -0
  762. package/dist/utils/node-http-proxy.js.map +1 -0
  763. package/dist/utils/oauth-page.d.ts +3 -0
  764. package/dist/utils/oauth-page.d.ts.map +1 -0
  765. package/dist/utils/oauth-page.js +105 -0
  766. package/dist/utils/oauth-page.js.map +1 -0
  767. package/dist/utils/overflow.d.ts +69 -0
  768. package/dist/utils/overflow.d.ts.map +1 -0
  769. package/dist/utils/overflow.js +179 -0
  770. package/dist/utils/overflow.js.map +1 -0
  771. package/dist/utils/pi-user-agent.d.ts +2 -0
  772. package/dist/utils/pi-user-agent.d.ts.map +1 -0
  773. package/dist/utils/pi-user-agent.js +12 -0
  774. package/dist/utils/pi-user-agent.js.map +1 -0
  775. package/dist/utils/provider-env.d.ts +7 -0
  776. package/dist/utils/provider-env.d.ts.map +1 -0
  777. package/dist/utils/provider-env.js +44 -0
  778. package/dist/utils/provider-env.js.map +1 -0
  779. package/dist/utils/provider-retry.d.ts +16 -0
  780. package/dist/utils/provider-retry.d.ts.map +1 -0
  781. package/dist/utils/provider-retry.js +95 -0
  782. package/dist/utils/provider-retry.js.map +1 -0
  783. package/dist/utils/retry.d.ts +58 -0
  784. package/dist/utils/retry.d.ts.map +1 -0
  785. package/dist/utils/retry.js +190 -0
  786. package/dist/utils/retry.js.map +1 -0
  787. package/dist/utils/sanitize-unicode.d.ts +22 -0
  788. package/dist/utils/sanitize-unicode.d.ts.map +1 -0
  789. package/dist/utils/sanitize-unicode.js +26 -0
  790. package/dist/utils/sanitize-unicode.js.map +1 -0
  791. package/dist/utils/sleep.d.ts +2 -0
  792. package/dist/utils/sleep.d.ts.map +1 -0
  793. package/dist/utils/sleep.js +15 -0
  794. package/dist/utils/sleep.js.map +1 -0
  795. package/dist/utils/text.d.ts +14 -0
  796. package/dist/utils/text.d.ts.map +1 -0
  797. package/dist/utils/text.js +36 -0
  798. package/dist/utils/text.js.map +1 -0
  799. package/dist/utils/transcript.d.ts +84 -0
  800. package/dist/utils/transcript.d.ts.map +1 -0
  801. package/dist/utils/transcript.js +204 -0
  802. package/dist/utils/transcript.js.map +1 -0
  803. package/dist/utils/typebox-helpers.d.ts +17 -0
  804. package/dist/utils/typebox-helpers.d.ts.map +1 -0
  805. package/dist/utils/typebox-helpers.js +21 -0
  806. package/dist/utils/typebox-helpers.js.map +1 -0
  807. package/dist/utils/uuid.d.ts +3 -0
  808. package/dist/utils/uuid.d.ts.map +1 -0
  809. package/dist/utils/uuid.js +42 -0
  810. package/dist/utils/uuid.js.map +1 -0
  811. package/dist/utils/validation.d.ts +18 -0
  812. package/dist/utils/validation.d.ts.map +1 -0
  813. package/dist/utils/validation.js +309 -0
  814. package/dist/utils/validation.js.map +1 -0
  815. package/package.json +96 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bedrock-converse-stream.js","sourceRoot":"","sources":["../../src/api/bedrock-converse-stream.ts"],"names":[],"mappings":"AACA,OAAO,EACN,oBAAoB,EAEpB,8BAA8B,EAC9B,UAAU,IAAI,iBAAiB,EAE/B,cAAc,EACd,QAAQ,EAKR,gBAAgB,EAChB,qBAAqB,EAErB,WAAW,EAMX,gBAAgB,GAChB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAE5D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAuB7C,OAAO,EAAE,gCAAgC,EAAE,MAAM,yBAAyB,CAAC;AAC3E,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAC;AACvE,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,4BAA4B,EAAE,MAAM,6BAA6B,CAAC;AAC3E,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EACN,sBAAsB,EACtB,eAAe,EACf,uBAAuB,EAEvB,2BAA2B,GAC3B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,2BAA2B,EAAE,+BAA+B,EAAE,MAAM,2BAA2B,CAAC;AACzG,OAAO,EACN,0BAA0B,EAC1B,gBAAgB,EAChB,uBAAuB,EACvB,cAAc,GACd,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AA6C5D,MAAM,sBAAsB,GAAG,SAAS,CAAC;AAEzC,iFAAiF;AACjF,MAAM,6BAA6B,GAAG,sBAAsB,CAAC;AAE7D,MAAM,CAAC,MAAM,MAAM,GAA8D,CAChF,KAAuC,EACvC,OAA0B,EAC1B,OAAO,GAAmB,EAAE,EACE,EAAE;IAChC,MAAM,MAAM,GAAG,IAAI,2BAA2B,EAAE,CAAC;IACjD,sFAAsF;IACtF,MAAM,iBAAiB,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC;IAE1D,CAAC,KAAK,IAAI,EAAE;QACX,MAAM,MAAM,GAAqB;YAChC,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,EAAE;YACX,GAAG,EAAE,yBAAgC;YACrC,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,KAAK,EAAE,KAAK,CAAC,EAAE;YACf,KAAK,EAAE;gBACN,KAAK,EAAE,CAAC;gBACR,MAAM,EAAE,CAAC;gBACT,SAAS,EAAE,CAAC;gBACZ,UAAU,EAAE,CAAC;gBACb,WAAW,EAAE,CAAC;gBACd,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE;aACpE;YACD,UAAU,EAAE,SAAS;YACrB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACrB,CAAC;QAEF,MAAM,MAAM,GAAG,MAAM,CAAC,OAAkB,CAAC;QAEzC,wEAAwE;QACxE,0EAA0E;QAC1E,wEAAwE;QACxE,0EAA0E;QAC1E,4DAA4D;QAC5D,MAAM,cAAc,GAAG,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,EAAE,WAAW,CAAC;QACnE,MAAM,MAAM,GAA+B;YAC1C,OAAO,EAAE,cAAc,IAAI,mBAAmB,CAAC,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC;SAC1E,CAAC;QACF,MAAM,gBAAgB,GAAG,0BAA0B,CAAC,OAAO,CAAC,CAAC;QAC7D,MAAM,2BAA2B,GAAG,OAAO,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC,CAAC;QAChF,MAAM,cAAc,GAAG,gCAAgC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACvE,MAAM,mBAAmB,GAAG,gCAAgC,CAC3D,KAAK,CAAC,OAAO,EACb,gBAAgB,EAChB,2BAA2B,CAC3B,CAAC;QAEF,uGAAuG;QACvG,kFAAkF;QAClF,yEAAyE;QACzE,IAAI,mBAAmB,EAAE,CAAC;YACzB,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC;QACjC,CAAC;QAED,iDAAiD;QACjD,MAAM,QAAQ,GAAG,mBAAmB,CAAC,uBAAuB,EAAE,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC;QACnF,MAAM,WAAW,GAChB,OAAO,CAAC,WAAW;YACnB,OAAO,CAAC,MAAM;YACd,mBAAmB,CAAC,0BAA0B,EAAE,OAAO,CAAC,GAAG,CAAC;YAC5D,SAAS,CAAC;QACX,MAAM,cAAc,GAAG,WAAW,KAAK,SAAS,IAAI,CAAC,QAAQ,CAAC;QAE9D,kCAAkC;QAClC,IAAI,OAAO,OAAO,KAAK,WAAW,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,IAAI,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC;YACzF,oFAAoF;YACpF,6EAA6E;YAC7E,gEAAgE;YAChE,MAAM,cAAc,GAAG,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC;YACxF,IAAI,cAAc,EAAE,CAAC;gBACpB,MAAM,CAAC,MAAM,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;YACnC,CAAC;iBAAM,IAAI,gBAAgB,EAAE,CAAC;gBAC7B,MAAM,CAAC,MAAM,GAAG,gBAAgB,CAAC;YAClC,CAAC;iBAAM,IAAI,cAAc,IAAI,mBAAmB,EAAE,CAAC;gBAClD,MAAM,CAAC,MAAM,GAAG,cAAc,CAAC;YAChC,CAAC;iBAAM,IAAI,CAAC,2BAA2B,EAAE,CAAC;gBACzC,MAAM,CAAC,MAAM,GAAG,WAAW,CAAC;YAC7B,CAAC;YAED,iDAAiD;YACjD,IAAI,QAAQ,EAAE,CAAC;gBACd,MAAM,CAAC,WAAW,GAAG;oBACpB,WAAW,EAAE,kBAAkB;oBAC/B,eAAe,EAAE,kBAAkB;iBACnC,CAAC;YACH,CAAC;YAED,MAAM,WAAW,GAAG,+BAA+B,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACjE,IAAI,CAAC,QAAQ,IAAI,WAAW,IAAI,CAAC,cAAc,EAAE,CAAC;gBACjD,MAAM,CAAC,WAAW,GAAG,WAAW,CAAC;YAClC,CAAC;YAED,MAAM,QAAQ,GAAG,4BAA4B,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;YAC1E,IAAI,QAAQ,EAAE,CAAC;gBACd,kFAAkF;gBAClF,uDAAuD;gBACvD,uDAAuD;gBACvD,MAAM,CAAC,cAAc,GAAG,IAAI,eAAe,CAAC;oBAC3C,SAAS,EAAE,IAAI,cAAc,CAAC,QAAQ,CAAC;oBACvC,UAAU,EAAE,IAAI,eAAe,CAAC,QAAQ,CAA0B;iBAClE,CAAC,CAAC;YACJ,CAAC;iBAAM,IAAI,mBAAmB,CAAC,yBAAyB,EAAE,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,EAAE,CAAC;gBAChF,2DAA2D;gBAC3D,MAAM,CAAC,cAAc,GAAG,IAAI,eAAe,EAAE,CAAC;YAC/C,CAAC;QACF,CAAC;aAAM,CAAC;YACP,+DAA+D;YAC/D,+CAA+C;YAC/C,MAAM,CAAC,MAAM;gBACZ,gBAAgB,IAAI,CAAC,cAAc,IAAI,mBAAmB,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,WAAW,CAAC;QAC1G,CAAC;QAED,IAAI,cAAc,EAAE,CAAC;YACpB,MAAM,CAAC,KAAK,GAAG,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;YACtC,MAAM,CAAC,oBAAoB,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAClD,CAAC;QAED,8EAA8E;QAC9E,6EAA6E;QAC7E,IAAI,iBAAqC,CAAC;QAE1C,IAAI,CAAC;YACJ,MAAM,kBAAkB,GAAG,KAAK,CAAC,MAAM,EAAE,kBAAkB,IAAI,KAAK,CAAC;YACrE,MAAM,MAAM,GAAG,IAAI,oBAAoB,CAAC,MAAM,CAAC,CAAC;YAChD,IAAI,mBAAmB,GAAG,KAAK,CAAC;YAChC,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;gBACxB,4BAA4B,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE;oBACpE,mBAAmB,GAAG,IAAI,CAAC;gBAC5B,CAAC,CAAC,CAAC;YACJ,CAAC;YACD,MAAM,aAAa,GAAG,uBAAuB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAC/D,IAAI,aAAa,EAAE,CAAC;gBACnB,0BAA0B,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;YACnD,CAAC;YACD,MAAM,cAAc,GAAG,qBAAqB,CAAC,OAAO,CAAC,cAAc,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;YAClF,MAAM,kBAAkB,GAAG,OAAO,CAAC,SAAS,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YAC9G,MAAM,oBAAoB,GAAG,uBAAuB,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;YACjF,MAAM,mBAAmB,GAAG,oBAAoB,CAAC,CAAC,CAAC,oBAAoB,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAC1G,IAAI,YAAY,GAAG;gBAClB,OAAO,EAAE,KAAK,CAAC,EAAE;gBACjB,QAAQ,EAAE,eAAe,CAAC,iBAAiB,EAAE,KAAK,EAAE,cAAc,EAAE,OAAO,CAAC,GAAG,CAAC;gBAChF,MAAM,EAAE,iBAAiB,CAAC,mBAAmB,EAAE,KAAK,EAAE,cAAc,EAAE,OAAO,CAAC,GAAG,CAAC;gBAClF,eAAe,EAAE;oBAChB,GAAG,CAAC,kBAAkB,KAAK,SAAS,IAAI,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC;oBAC1E,GAAG,CAAC,OAAO,CAAC,WAAW,KAAK,SAAS,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC;iBAC9E;gBACD,UAAU,EAAE,iBAAiB,CAC5B,eAAe,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAC3C,OAAO,CAAC,UAAU,EAClB,kBAAkB,CAClB;gBACD,4BAA4B,EAAE,iCAAiC,CAAC,KAAK,EAAE,OAAO,CAAC;gBAC/E,GAAG,CAAC,OAAO,CAAC,eAAe,KAAK,SAAS,IAAI,EAAE,eAAe,EAAE,OAAO,CAAC,eAAe,EAAE,CAAC;aAC1F,CAAC;YACF,MAAM,gBAAgB,GAAG,MAAM,OAAO,EAAE,SAAS,EAAE,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;YACzE,IAAI,gBAAgB,KAAK,SAAS,EAAE,CAAC;gBACpC,YAAY,GAAG,gBAAuC,CAAC;YACxD,CAAC;YACD,MAAM,OAAO,GAAG,IAAI,qBAAqB,CAAC,YAAY,CAAC,CAAC;YAExD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;YAC7E,iBAAiB,GAAG,wBAAwB,CAAC,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;YAC3E,IAAI,CAAC,mBAAmB,IAAI,QAAQ,CAAC,SAAS,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;gBAC7E,MAAM,eAAe,GAA2B,EAAE,CAAC;gBACnD,IAAI,QAAQ,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;oBAClC,eAAe,CAAC,kBAAkB,CAAC,GAAG,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC;gBACpE,CAAC;gBACD,MAAM,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,SAAS,CAAC,cAAc,EAAE,OAAO,EAAE,eAAe,EAAE,EAAE,KAAK,CAAC,CAAC;YAC7G,CAAC;YAED,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,QAAQ,CAAC,MAAO,EAAE,CAAC;gBAC3C,MAAM,OAAO,CAAC,qBAAqB,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBACnD,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;oBACvB,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,KAAK,gBAAgB,CAAC,SAAS,EAAE,CAAC;wBAC3D,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAC;oBAC1F,CAAC;oBACD,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;gBACjD,CAAC;qBAAM,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;oBACnC,uBAAuB,CAAC,IAAI,CAAC,iBAAiB,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;gBACzE,CAAC;qBAAM,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;oBACnC,uBAAuB,CAAC,IAAI,CAAC,iBAAiB,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;gBACzE,CAAC;qBAAM,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;oBAClC,sBAAsB,CAAC,IAAI,CAAC,gBAAgB,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;gBACvE,CAAC;qBAAM,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;oBAC7B,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC;oBACnD,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,GAAG,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;oBAChF,MAAM,CAAC,UAAU,GAAG,UAAU,CAAC;oBAC/B,IAAI,YAAY,EAAE,CAAC;wBAClB,MAAM,CAAC,YAAY,GAAG,YAAY,CAAC;oBACpC,CAAC;gBACF,CAAC;qBAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;oBAC1B,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;gBAC9C,CAAC;qBAAM,IAAI,IAAI,CAAC,uBAAuB,EAAE,CAAC;oBACzC,MAAM,IAAI,CAAC,uBAAuB,CAAC;gBACpC,CAAC;qBAAM,IAAI,IAAI,CAAC,yBAAyB,EAAE,CAAC;oBAC3C,MAAM,IAAI,CAAC,yBAAyB,CAAC;gBACtC,CAAC;qBAAM,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;oBACrC,MAAM,IAAI,CAAC,mBAAmB,CAAC;gBAChC,CAAC;qBAAM,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;oBACrC,MAAM,IAAI,CAAC,mBAAmB,CAAC;gBAChC,CAAC;qBAAM,IAAI,IAAI,CAAC,2BAA2B,EAAE,CAAC;oBAC7C,MAAM,IAAI,CAAC,2BAA2B,CAAC;gBACxC,CAAC;YACF,CAAC;YAED,IAAI,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;gBAC7B,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;YACxC,CAAC;YAED,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;gBACrC,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;YAC/D,CAAC;YACD,IAAI,MAAM,CAAC,UAAU,KAAK,OAAO,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;gBACtE,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,YAAY,IAAI,2BAA2B,CAAC,CAAC;YACrE,CAAC;YAED,0EAA0E;YAC1E,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,OAAO;gBAAE,sBAAsB,CAAC,KAAc,CAAC,CAAC;YAC3E,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;YAC1E,MAAM,CAAC,GAAG,EAAE,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpC,sBAAsB,CAAC,KAAc,CAAC,CAAC;YACxC,CAAC;YACD,MAAM,CAAC,UAAU,GAAG,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC;YAClE,MAAM,CAAC,YAAY,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;YAChD,IAAI,MAAM,CAAC,UAAU,KAAK,OAAO,EAAE,CAAC;gBACnC,8BAA8B,CAAC,MAAM,EAAE,KAAK,EAAE,iBAAiB,CAAC,CAAC;YAClE,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;YACzE,MAAM,CAAC,GAAG,EAAE,CAAC;QACd,CAAC;IACF,CAAC,CAAC,EAAE,CAAC;IAEL,OAAO,MAAM,CAAC;AACf,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,sBAAsB,GAA2B;IACtD,uBAAuB,EAAE,uBAAuB;IAChD,yBAAyB,EAAE,oBAAoB;IAC/C,mBAAmB,EAAE,kBAAkB;IACvC,mBAAmB,EAAE,kBAAkB;IACvC,2BAA2B,EAAE,qBAAqB;CAClD,CAAC;AAEF;;;;GAIG;AACH,MAAM,+BAA+B,GAAG,0EAA0E,CAAC;AAEnH;;;;;;GAMG;AACH,SAAS,kBAAkB,CAAC,KAAc;IACzC,MAAM,IAAI,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC;IAC3C,4EAA4E;IAC5E,wEAAwE;IACxE,0DAA0D;IAC1D,MAAM,IAAI,GACT,CAAC,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;QAC/E,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,IAAI,EAAE;QAChC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;IACjB,MAAM,iBAAiB,GAAG,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC;QAC1D,CAAC,CAAC,QAAQ,+BAA+B,sCAAsC;QAC/E,CAAC,CAAC,EAAE,CAAC;IACN,IAAI,KAAK,YAAY,8BAA8B,EAAE,CAAC;QACrD,MAAM,MAAM,GAAG,sBAAsB,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC;QAChE,OAAO,GAAG,MAAM,KAAK,IAAI,GAAG,iBAAiB,EAAE,CAAC;IACjD,CAAC;IACD,OAAO,GAAG,IAAI,GAAG,iBAAiB,EAAE,CAAC;AACtC,CAAC;AAID,6GAA6G;AAC7G,MAAM,kCAAkC,GAAG,GAAG,CAAC;AAE/C,SAAS,wBAAwB,CAAC,KAAc;IAC/C,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAChD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,kCAAkC;QAAE,OAAO,SAAS,CAAC;IAClG,OAAO,OAAO,CAAC;AAChB,CAAC;AAED;;;;GAIG;AACH,SAAS,uBAAuB,CAAC,KAAc;IAC9C,IAAI,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;QAAE,OAAO,SAAS,CAAC;IACrF,OAAO,wBAAwB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC7C,CAAC;AAED;;;;GAIG;AACH,SAAS,8BAA8B,CACtC,MAAwB,EACxB,KAAc,EACd,iBAAqC;IAErC,MAAM,QAAQ,GAAI,KAA0B,EAAE,SAAS,CAAC;IACxD,MAAM,OAAO,GAAe,EAAE,CAAC;IAE/B,IAAI,OAAO,QAAQ,EAAE,cAAc,KAAK,QAAQ;QAAE,OAAO,CAAC,MAAM,GAAG,QAAQ,CAAC,cAAc,CAAC;IAE3F,MAAM,SAAS,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;IACjD,IAAI,SAAS,KAAK,SAAS;QAAE,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;IAE3D,MAAM,SAAS,GAAG,wBAAwB,CAAC,QAAQ,EAAE,SAAS,CAAC,IAAI,iBAAiB,CAAC;IACrF,IAAI,SAAS,KAAK,SAAS;QAAE,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;IAE3D,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAE9C,gCAAgC,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,0BAA0B,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;AAChH,CAAC;AAED;;;;;GAKG;AACH,MAAM,qBAAqB,GAAG,IAAI,GAAG,CAAC,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC,CAAC;AAEjE,SAAS,gBAAgB,CAAC,GAAW;IACpC,MAAM,KAAK,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;IAChC,OAAO,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,qBAAqB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACvE,CAAC;AAED;;;;;;GAMG;AACH,SAAS,0BAA0B,CAAC,MAA4B,EAAE,OAA+B;IAChG,MAAM,UAAU,GAA4C,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACpF,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC7B,IAAI,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,SAAS,IAAI,OAAO,EAAE,CAAC;YACpE,MAAM,cAAc,GAAI,OAA+C,CAAC,OAAO,CAAC;YAChF,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBACpD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC5B,cAAc,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;gBAC7B,CAAC;YACF,CAAC;QACF,CAAC;QACD,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC;IACnB,CAAC,CAAC;IACF,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,sBAAsB,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;AAC1G,CAAC;AAED,SAAS,oBAAoB,CAAC,QAAiB;IAC9C,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5D,MAAM,SAAS,GAAG,QAAiC,CAAC;IACpD,OAAO,OAAO,SAAS,CAAC,UAAU,KAAK,QAAQ,IAAI,CAAC,CAAC,SAAS,CAAC,OAAO,IAAI,OAAO,SAAS,CAAC,OAAO,KAAK,QAAQ,CAAC;AACjH,CAAC;AAED,SAAS,kBAAkB,CAAC,QAAiB;IAC5C,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC;QAAE,OAAO,SAAS,CAAC;IACtD,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,UAAU,EAAE,OAAO,EAAE,EAAE,GAAG,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC;AAC1E,CAAC;AAED;;;;;GAKG;AACH,SAAS,4BAA4B,CACpC,MAA4B,EAC5B,UAAqD,EACrD,KAAuC,EACvC,UAAsB;IAEtB,MAAM,UAAU,GAAkD,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QAC1F,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC;QAChC,MAAM,gBAAgB,GAAG,kBAAkB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC7D,IAAI,gBAAgB,EAAE,CAAC;YACtB,UAAU,EAAE,CAAC;YACb,MAAM,UAAU,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;QAC3C,CAAC;QACD,OAAO,MAAM,CAAC;IACf,CAAC,CAAC;IACF,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,wBAAwB,EAAE,CAAC,CAAC;AACjG,CAAC;AAED,MAAM,CAAC,MAAM,YAAY,GAAmE,CAC3F,KAAuC,EACvC,OAA0B,EAC1B,OAA6B,EACC,EAAE;IAChC,MAAM,IAAI,GAAG;QACZ,GAAG,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC;QACvD,UAAU,EAAE,OAAO,EAAE,UAAU;KACN,CAAC;IAC3B,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC;QACzB,OAAO,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,GAAG,IAAI,EAAE,SAAS,EAAE,SAAS,EAA2B,CAAC,CAAC;IAC3F,CAAC;IAED,IAAI,sBAAsB,CAAC,KAAK,CAAC,EAAE,CAAC;QACnC,IAAI,wBAAwB,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACpD,OAAO,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE;gBAC7B,GAAG,IAAI;gBACP,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,eAAe,EAAE,OAAO,CAAC,eAAe;aACf,CAAC,CAAC;QAC7B,CAAC;QAED,8FAA8F;QAC9F,2FAA2F;QAC3F,MAAM,QAAQ,GAAG,0BAA0B,CAC1C,IAAI,CAAC,SAAS,EACd,KAAK,CAAC,SAAS,EACf,OAAO,CAAC,SAAS,EACjB,OAAO,CAAC,eAAe,CACvB,CAAC;QAEF,MAAM,SAAS,GAAG,uBAAuB,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;QAE9E,OAAO,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE;YAC7B,GAAG,IAAI;YACP,SAAS;YACT,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,eAAe,EAAE;gBAChB,GAAG,CAAC,OAAO,CAAC,eAAe,IAAI,EAAE,CAAC;gBAClC,CAAC,cAAc,CAAC,OAAO,CAAC,SAAS,CAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,cAAc,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC,CAAC;aACtG;SACwB,CAAC,CAAC;IAC7B,CAAC;IAED,OAAO,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE;QAC7B,GAAG,IAAI;QACP,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,eAAe,EAAE,OAAO,CAAC,eAAe;KACf,CAAC,CAAC;AAC7B,CAAC,CAAC;AAEF,SAAS,uBAAuB,CAC/B,KAA6B,EAC7B,MAAe,EACf,MAAwB,EACxB,MAAmC;IAEnC,MAAM,KAAK,GAAG,KAAK,CAAC,iBAAkB,CAAC;IACvC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IAE1B,IAAI,KAAK,EAAE,OAAO,EAAE,CAAC;QACpB,MAAM,KAAK,GAAU;YACpB,IAAI,EAAE,UAAU;YAChB,EAAE,EAAE,KAAK,CAAC,OAAO,CAAC,SAAS,IAAI,EAAE;YACjC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE;YAC9B,SAAS,EAAE,EAAE;YACb,WAAW,EAAE,EAAE;YACf,KAAK;SACL,CAAC;QACF,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3B,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;IAC3F,CAAC;AACF,CAAC;AAED,SAAS,uBAAuB,CAC/B,KAA6B,EAC7B,MAAe,EACf,MAAwB,EACxB,MAAmC;IAEnC,MAAM,iBAAiB,GAAG,KAAK,CAAC,iBAAkB,CAAC;IACnD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IAC1B,IAAI,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,iBAAiB,CAAC,CAAC;IACnE,IAAI,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAE1B,IAAI,KAAK,EAAE,IAAI,KAAK,SAAS,EAAE,CAAC;QAC/B,oGAAoG;QACpG,IAAI,CAAC,KAAK,EAAE,CAAC;YACZ,MAAM,QAAQ,GAAU,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,CAAC;YAC7E,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC9B,KAAK,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;YAC1B,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;YACtB,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;QAC3E,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC3B,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC;YACzB,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;QAC9F,CAAC;IACF,CAAC;SAAM,IAAI,KAAK,EAAE,OAAO,IAAI,KAAK,EAAE,IAAI,KAAK,UAAU,EAAE,CAAC;QACzD,KAAK,CAAC,WAAW,GAAG,CAAC,KAAK,CAAC,WAAW,IAAI,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;QAC5E,KAAK,CAAC,SAAS,GAAG,kBAAkB,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACxD,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;IACjH,CAAC;SAAM,IAAI,KAAK,EAAE,gBAAgB,EAAE,CAAC;QACpC,IAAI,aAAa,GAAG,KAAK,CAAC;QAC1B,IAAI,aAAa,GAAG,KAAK,CAAC;QAE1B,IAAI,CAAC,aAAa,EAAE,CAAC;YACpB,MAAM,QAAQ,GAAU,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,EAAE,iBAAiB,EAAE,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,CAAC;YAC5G,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC9B,aAAa,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;YAClC,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;YACtC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,YAAY,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;QACvF,CAAC;QAED,IAAI,aAAa,EAAE,IAAI,KAAK,UAAU,EAAE,CAAC;YACxC,IAAI,KAAK,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;gBACjC,aAAa,CAAC,QAAQ,IAAI,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC;gBACtD,MAAM,CAAC,IAAI,CAAC;oBACX,IAAI,EAAE,gBAAgB;oBACtB,YAAY,EAAE,aAAa;oBAC3B,KAAK,EAAE,KAAK,CAAC,gBAAgB,CAAC,IAAI;oBAClC,OAAO,EAAE,MAAM;iBACf,CAAC,CAAC;YACJ,CAAC;YACD,gFAAgF;YAChF,0EAA0E;YAC1E,IAAI,KAAK,CAAC,gBAAgB,CAAC,SAAS,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;gBACjE,aAAa,CAAC,iBAAiB;oBAC9B,CAAC,aAAa,CAAC,iBAAiB,IAAI,EAAE,CAAC,GAAG,KAAK,CAAC,gBAAgB,CAAC,SAAS,CAAC;YAC7E,CAAC;YACD,IAAI,KAAK,CAAC,gBAAgB,CAAC,eAAe,EAAE,MAAM,EAAE,CAAC;gBACpD,kFAAkF;gBAClF,gFAAgF;gBAChF,2EAA2E;gBAC3E,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;oBAC7B,aAAa,CAAC,QAAQ,GAAG,IAAI,CAAC;oBAC9B,aAAa,CAAC,iBAAiB,GAAG,EAAE,CAAC;oBACrC,aAAa,CAAC,QAAQ,IAAI,6BAA6B,CAAC;oBACxD,MAAM,CAAC,IAAI,CAAC;wBACX,IAAI,EAAE,gBAAgB;wBACtB,YAAY,EAAE,aAAa;wBAC3B,KAAK,EAAE,6BAA6B;wBACpC,OAAO,EAAE,MAAM;qBACf,CAAC,CAAC;gBACJ,CAAC;gBACD,aAAa,CAAC,cAAc,KAAK,EAAE,CAAC;gBACpC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC;YAC3E,CAAC;QACF,CAAC;IACF,CAAC;AACF,CAAC;AAED;;;;GAIG;AACH,SAAS,oBAAoB,CAAC,KAAY;IACzC,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,KAAK,CAAC,cAAc;QAAE,OAAO;IAC/D,KAAK,CAAC,iBAAiB,GAAG,aAAa,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IAC9D,OAAO,KAAK,CAAC,cAAc,CAAC;AAC7B,CAAC;AAED;;;GAGG;AACH,SAAS,sBAAsB,CAAC,KAAY;IAC3C,OAAO,KAAK,CAAC,KAAK,CAAC;IACnB,oEAAoE;IACpE,OAAO,KAAK,CAAC,WAAW,CAAC;IACzB,oBAAoB,CAAC,KAAK,CAAC,CAAC;AAC7B,CAAC;AAED,SAAS,cAAc,CACtB,KAAkC,EAClC,KAAuC,EACvC,MAAwB;IAExB,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QACjB,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,WAAW,IAAI,CAAC,CAAC;QAClD,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,YAAY,IAAI,CAAC,CAAC;QACpD,MAAM,CAAC,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,oBAAoB,IAAI,CAAC,CAAC;QAC/D,MAAM,CAAC,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,qBAAqB,IAAI,CAAC,CAAC;QACjE,MAAM,CAAC,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,YAAY,EAAE,MAAM,CAC3D,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,GAAG,KAAK,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAC7F,CAAC,CACD,CAAC;QACF,MAAM,CAAC,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,WAAW,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;QAC/F,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;AACF,CAAC;AAED,SAAS,sBAAsB,CAC9B,KAA4B,EAC5B,MAAe,EACf,MAAwB,EACxB,MAAmC;IAEnC,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,iBAAiB,CAAC,CAAC;IAC3E,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC5B,IAAI,CAAC,KAAK;QAAE,OAAO;IACnB,OAAQ,KAAe,CAAC,KAAK,CAAC;IAE9B,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,MAAM;YACV,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;YAC7F,MAAM;QACP,KAAK,UAAU;YACd,oBAAoB,CAAC,KAAK,CAAC,CAAC;YAC5B,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;YACrG,MAAM;QACP,KAAK,UAAU;YACd,KAAK,CAAC,SAAS,GAAG,kBAAkB,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YACxD,gEAAgE;YAChE,4BAA4B;YAC5B,OAAQ,KAAe,CAAC,WAAW,CAAC;YACpC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,YAAY,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;YAC7F,MAAM;IACR,CAAC;AACF,CAAC;AAED;;;;GAIG;AACH,SAAS,uBAAuB,CAAC,OAAe,EAAE,SAAkB;IACnE,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAC5D,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QAC/B,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;QAClC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,wBAAwB,CAAC,OAAe,EAAE,SAAkB;IACpE,MAAM,UAAU,GAAG,uBAAuB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAC/D,OAAO,UAAU,CAAC,IAAI,CACrB,CAAC,CAAC,EAAE,EAAE,CACL,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC;QACtB,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC;QACtB,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC;QACtB,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACpB,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC;QACxB,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC;QACtB,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CACtB,CAAC;AACH,CAAC;AAED,SAAS,yBAAyB,CAAC,KAAuC;IACzE,MAAM,UAAU,GAAG,uBAAuB,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IACjE,OAAO,UAAU,CAAC,IAAI,CACrB,CAAC,CAAC,EAAE,EAAE,CACL,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC;QACtB,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC;QACtB,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACpB,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC;QACtB,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CACtB,CAAC;AACH,CAAC;AAED,SAAS,wBAAwB,CAChC,KAAuC,EACvC,KAAuC;IAEvC,IAAI,KAAK,KAAK,OAAO,IAAI,yBAAyB,CAAC,KAAK,CAAC;QAAE,OAAO,OAAO,CAAC;IAE1E,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACnE,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO,MAAqD,CAAC;IAE7F,QAAQ,KAAK,EAAE,CAAC;QACf,KAAK,SAAS,CAAC;QACf,KAAK,KAAK;YACT,OAAO,KAAK,CAAC;QACd,KAAK,QAAQ;YACZ,OAAO,QAAQ,CAAC;QACjB,KAAK,MAAM;YACV,OAAO,MAAM,CAAC;QACf;YACC,OAAO,MAAM,CAAC;IAChB,CAAC;AACF,CAAC;AAED;;;GAGG;AACH,SAAS,qBAAqB,CAAC,cAA+B,EAAE,GAAiB;IAChF,IAAI,cAAc,EAAE,CAAC;QACpB,OAAO,cAAc,CAAC;IACvB,CAAC;IACD,IAAI,mBAAmB,CAAC,oBAAoB,EAAE,GAAG,CAAC,KAAK,MAAM,EAAE,CAAC;QAC/D,OAAO,MAAM,CAAC;IACf,CAAC;IACD,OAAO,OAAO,CAAC;AAChB,CAAC;AAED;;;;GAIG;AACH,SAAS,sBAAsB,CAAC,KAAuC;IACtE,MAAM,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC;IAClC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;IAC7C,OAAO,CACN,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;QAC/B,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;QAC/B,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC;QACjC,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC;QACjC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CACvB,CAAC;AACH,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAS,qBAAqB,CAAC,KAAuC,EAAE,GAAiB;IACxF,MAAM,UAAU,GAAG,uBAAuB,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IAEjE,MAAM,YAAY,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;IAClE,IAAI,CAAC,YAAY,EAAE,CAAC;QACnB,0EAA0E;QAC1E,8DAA8D;QAC9D,IAAI,mBAAmB,CAAC,yBAAyB,EAAE,GAAG,CAAC,KAAK,GAAG;YAAE,OAAO,IAAI,CAAC;QAC7E,OAAO,KAAK,CAAC;IACd,CAAC;IACD,8CAA8C;IAC9C,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACjH,gDAAgD;IAChD,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAC3D,oBAAoB;IACpB,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACzE,mBAAmB;IACnB,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACxE,OAAO,KAAK,CAAC;AACd,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,yBAAyB,CAAC,KAAuC;IACzE,OAAO,sBAAsB,CAAC,KAAK,CAAC,CAAC;AACtC,CAAC;AAED,SAAS,iBAAiB,CACzB,YAAgC,EAChC,KAAuC,EACvC,cAA8B,EAC9B,GAAiB;IAEjB,IAAI,CAAC,YAAY;QAAE,OAAO,SAAS,CAAC;IAEpC,MAAM,MAAM,GAAyB,CAAC,EAAE,IAAI,EAAE,kBAAkB,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;IAElF,sEAAsE;IACtE,IAAI,cAAc,KAAK,MAAM,IAAI,qBAAqB,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC;QACpE,MAAM,CAAC,IAAI,CAAC;YACX,UAAU,EAAE,EAAE,IAAI,EAAE,cAAc,CAAC,OAAO,EAAE,GAAG,CAAC,cAAc,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;SAC9G,CAAC,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC;AACf,CAAC;AAED,SAAS,mBAAmB,CAAC,EAAU;IACtC,MAAM,SAAS,GAAG,EAAE,CAAC,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;IACrD,OAAO,SAAS,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACnE,CAAC;AAED,SAAS,uBAAuB,CAAC,IAAY;IAC5C,MAAM,SAAS,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAC3C,OAAO,SAAS,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;AACxE,CAAC;AAED,SAAS,uBAAuB,CAAC,IAAY;IAC5C,OAAO,uBAAuB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,sBAAsB,EAAE,CAAC;AAC1E,CAAC;AAED,SAAS,uBAAuB,CAAC,KAAgB;IAChD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,KAAK,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;IAC3C,CAAC;IACD,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACjD,OAAO,MAAM,CAAC,WAAW,CACxB,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;aACnB,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;aACjC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,WAAW,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,uBAAuB,CAAC,WAAW,CAAC,CAAC,CAAC,CAC1E,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACd,CAAC;AAED,SAAS,wBAAwB,CAAC,OAAuC;IACxE,MAAM,MAAM,GAA6B,EAAE,CAAC;IAC5C,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACzB,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YACxB,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC9D,CAAC;aAAM,CAAC;YACP,MAAM,SAAS,GAAG,uBAAuB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAClD,IAAI,SAAS;gBAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACvC,CAAC;IACF,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,sBAAsB,EAAE,CAAC,CAAC;IACvE,OAAO,MAAM,CAAC;AACf,CAAC;AAED,SAAS,eAAe,CACvB,OAA0B,EAC1B,KAAuC,EACvC,cAA8B,EAC9B,GAAiB;IAEjB,MAAM,MAAM,GAAc,EAAE,CAAC;IAC7B,MAAM,mBAAmB,GAAG,iBAAiB,CAC5C,2BAA2B,CAAC,OAAO,CAAC,QAAQ,CAAC,EAC7C,KAAK,EACL,mBAAmB,CACnB,CAAC;IAEF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,mBAAmB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrD,MAAM,CAAC,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC;QAEjC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;YAChB,KAAK,MAAM,EAAE,CAAC;gBACb,MAAM,OAAO,GAAmB,EAAE,CAAC;gBACnC,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;oBACnC,OAAO,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;gBAClD,CAAC;qBAAM,CAAC;oBACP,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;wBAC3B,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;4BAChB,KAAK,MAAM,EAAE,CAAC;gCACb,MAAM,SAAS,GAAG,uBAAuB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gCAClD,IAAI,SAAS;oCAAE,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gCACvC,MAAM;4BACP,CAAC;4BACD,KAAK,OAAO;gCACX,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gCAC9D,MAAM;4BACP;gCACC,SAAS;wBACX,CAAC;oBACF,CAAC;oBACD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;wBAAE,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,sBAAsB,EAAE,CAAC,CAAC;gBAC1E,CAAC;gBACD,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;gBACtD,MAAM;YACP,CAAC;YACD,KAAK,WAAW,EAAE,CAAC;gBAClB,2EAA2E;gBAC3E,qDAAqD;gBACrD,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC5B,SAAS;gBACV,CAAC;gBACD,MAAM,aAAa,GAAmB,EAAE,CAAC;gBACzC,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;oBAC3B,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;wBAChB,KAAK,MAAM,EAAE,CAAC;4BACb,yBAAyB;4BACzB,MAAM,SAAS,GAAG,uBAAuB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;4BAClD,IAAI,CAAC,SAAS;gCAAE,SAAS;4BACzB,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;4BAC9B,MAAM;wBACP,CAAC;wBACD,KAAK,UAAU;4BACd,aAAa,CAAC,IAAI,CAAC;gCAClB,OAAO,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,uBAAuB,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE;6BACvF,CAAC,CAAC;4BACH,MAAM;wBACP,KAAK,UAAU,EAAE,CAAC;4BACjB,kEAAkE;4BAClE,qEAAqE;4BACrE,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;gCAChB,MAAM,eAAe,GAAG,qBAAqB,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC;gCACnE,IAAI,eAAe,EAAE,MAAM,EAAE,CAAC;oCAC7B,aAAa,CAAC,IAAI,CAAC,EAAE,gBAAgB,EAAE,EAAE,eAAe,EAAE,EAAE,CAAC,CAAC;gCAC/D,CAAC;gCACD,SAAS;4BACV,CAAC;4BACD,6BAA6B;4BAC7B,MAAM,QAAQ,GAAG,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;4BAChD,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;gCAAE,SAAS;4BAC3C,sEAAsE;4BACtE,gEAAgE;4BAChE,kFAAkF;4BAClF,IAAI,yBAAyB,CAAC,KAAK,CAAC,EAAE,CAAC;gCACtC,sEAAsE;gCACtE,oEAAoE;gCACpE,gEAAgE;gCAChE,IAAI,CAAC,CAAC,CAAC,iBAAiB,IAAI,CAAC,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oCACrE,aAAa,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;gCACxC,CAAC;qCAAM,CAAC;oCACP,aAAa,CAAC,IAAI,CAAC;wCAClB,gBAAgB,EAAE;4CACjB,aAAa,EAAE;gDACd,IAAI,EAAE,QAAQ;gDACd,SAAS,EAAE,CAAC,CAAC,iBAAiB;6CAC9B;yCACD;qCACD,CAAC,CAAC;gCACJ,CAAC;4BACF,CAAC;iCAAM,CAAC;gCACP,aAAa,CAAC,IAAI,CAAC;oCAClB,gBAAgB,EAAE;wCACjB,aAAa,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;qCACjC;iCACD,CAAC,CAAC;4BACJ,CAAC;4BACD,MAAM;wBACP,CAAC;wBACD;4BACC,SAAS;oBACX,CAAC;gBACF,CAAC;gBACD,+CAA+C;gBAC/C,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAChC,SAAS;gBACV,CAAC;gBACD,MAAM,CAAC,IAAI,CAAC;oBACX,IAAI,EAAE,gBAAgB,CAAC,SAAS;oBAChC,OAAO,EAAE,aAAa;iBACtB,CAAC,CAAC;gBACH,MAAM;YACP,CAAC;YACD,KAAK,YAAY,EAAE,CAAC;gBACnB,yEAAyE;gBACzE,yDAAyD;gBACzD,MAAM,WAAW,GAAoC,EAAE,CAAC;gBAExD,2DAA2D;gBAC3D,WAAW,CAAC,IAAI,CAAC;oBAChB,UAAU,EAAE;wBACX,SAAS,EAAE,CAAC,CAAC,UAAU;wBACvB,OAAO,EAAE,wBAAwB,CAAC,CAAC,CAAC,OAAO,CAAC;wBAC5C,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,gBAAgB,CAAC,OAAO;qBACrE;iBACD,CAAC,CAAC;gBAEH,iDAAiD;gBACjD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACd,OAAO,CAAC,GAAG,mBAAmB,CAAC,MAAM,IAAI,mBAAmB,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;oBACvF,MAAM,OAAO,GAAG,mBAAmB,CAAC,CAAC,CAAsB,CAAC;oBAC5D,WAAW,CAAC,IAAI,CAAC;wBAChB,UAAU,EAAE;4BACX,SAAS,EAAE,OAAO,CAAC,UAAU;4BAC7B,OAAO,EAAE,wBAAwB,CAAC,OAAO,CAAC,OAAO,CAAC;4BAClD,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,gBAAgB,CAAC,OAAO;yBAC3E;qBACD,CAAC,CAAC;oBACH,CAAC,EAAE,CAAC;gBACL,CAAC;gBAED,4CAA4C;gBAC5C,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAEV,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;gBACnE,MAAM;YACP,CAAC;YACD;gBACC,SAAS;QACX,CAAC;IACF,CAAC;IAED,+FAA+F;IAC/F,IAAI,cAAc,KAAK,MAAM,IAAI,qBAAqB,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzF,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC9C,IAAI,WAAW,CAAC,IAAI,KAAK,gBAAgB,CAAC,IAAI,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;YACtE,WAAW,CAAC,OAA0B,CAAC,IAAI,CAAC;gBAC5C,UAAU,EAAE;oBACX,IAAI,EAAE,cAAc,CAAC,OAAO;oBAC5B,GAAG,CAAC,cAAc,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBAChE;aACD,CAAC,CAAC;QACJ,CAAC;IACF,CAAC;IAED,OAAO,MAAM,CAAC;AACf,CAAC;AAED,SAAS,iBAAiB,CACzB,KAAyB,EACzB,UAAwC,EACxC,kBAA2B;IAE3B,IAAI,CAAC,KAAK,EAAE,MAAM;QAAE,OAAO,SAAS,CAAC;IACrC,IAAI,UAAU,KAAK,MAAM;QAAE,OAAO,SAAS,CAAC;IAE5C,MAAM,YAAY,GAAkB,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACtD,MAAM,MAAM,GAAG,+BAA+B,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC;QACzE,OAAO;YACN,QAAQ,EAAE;gBACT,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,WAAW,EAAE,EAAE,IAAI,EAAE,2BAA2B,CAAC,IAAI,EAAE,MAAM,CAA4B,EAAE;gBAC3F,GAAG,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC5C;SACD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,iBAAyC,CAAC;IAC9C,QAAQ,UAAU,EAAE,CAAC;QACpB,KAAK,MAAM;YACV,iBAAiB,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;YACjC,MAAM;QACP,KAAK,KAAK;YACT,iBAAiB,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC;YAChC,MAAM;QACP;YACC,IAAI,UAAU,EAAE,IAAI,KAAK,MAAM,EAAE,CAAC;gBACjC,iBAAiB,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC;YACzD,CAAC;IACH,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,iBAAiB,EAAE,CAAC;AAC/D,CAAC;AAED,SAAS,aAAa,CAAC,MAA0B;IAChD,QAAQ,MAAM,EAAE,CAAC;QAChB,KAAK,iBAAiB,CAAC,QAAQ,CAAC;QAChC,KAAK,iBAAiB,CAAC,aAAa;YACnC,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;QAC/B,KAAK,iBAAiB,CAAC,UAAU,CAAC;QAClC,KAAK,iBAAiB,CAAC,6BAA6B;YACnD,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;QACjC,KAAK,iBAAiB,CAAC,QAAQ;YAC9B,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;QAClC;YACC,OAAO,MAAM;gBACZ,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,EAAE,0BAA0B,MAAM,EAAE,EAAE;gBAC3E,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;IAC7B,CAAC;AACF,CAAC;AAED,SAAS,0BAA0B,CAAC,OAAuB;IAC1D,OAAO,CACN,OAAO,CAAC,MAAM;QACd,mBAAmB,CAAC,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC;QAC9C,mBAAmB,CAAC,oBAAoB,EAAE,OAAO,CAAC,GAAG,CAAC;QACtD,SAAS,CACT,CAAC;AACH,CAAC;AAED,SAAS,+BAA+B,CAAC,GAAiB;IACzD,MAAM,WAAW,GAAG,mBAAmB,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC;IAClE,MAAM,eAAe,GAAG,mBAAmB,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAC;IAC1E,IAAI,CAAC,WAAW,IAAI,CAAC,eAAe,EAAE,CAAC;QACtC,OAAO,SAAS,CAAC;IAClB,CAAC;IACD,MAAM,YAAY,GAAG,mBAAmB,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC;IACnE,OAAO;QACN,WAAW;QACX,eAAe;QACf,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACzC,CAAC;AACH,CAAC;AAED,SAAS,gCAAgC,CAAC,OAA2B;IACpE,IAAI,CAAC,OAAO,EAAE,CAAC;QACd,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,IAAI,CAAC;QACJ,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;QACtC,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,oEAAoE,CAAC,CAAC;QACjH,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;IACnB,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,SAAS,CAAC;IAClB,CAAC;AACF,CAAC;AAED,SAAS,gCAAgC,CACxC,OAAe,EACf,gBAAoC,EACpC,2BAAoC;IAEpC,MAAM,cAAc,GAAG,gCAAgC,CAAC,OAAO,CAAC,CAAC;IACjE,IAAI,CAAC,cAAc,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC;IACb,CAAC;IAED,OAAO,CAAC,gBAAgB,IAAI,CAAC,2BAA2B,CAAC;AAC1D,CAAC;AAED,SAAS,uBAAuB,CAAC,KAAuC,EAAE,OAAuB;IAChG,MAAM,MAAM,GAAG,0BAA0B,CAAC,OAAO,CAAC,CAAC;IACnD,IAAI,MAAM,EAAE,WAAW,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QACjD,OAAO,IAAI,CAAC;IACb,CAAC;IAED,MAAM,OAAO,GAAG,KAAK,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC;IACvC,OAAO,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;AAC/E,CAAC;AAED,SAAS,iCAAiC,CACzC,KAAuC,EACvC,OAAuB;IAEvB,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;QAC5C,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,IAAI,sBAAsB,CAAC,KAAK,CAAC,EAAE,CAAC;QACnC,wEAAwE;QACxE,+DAA+D;QAC/D,MAAM,OAAO,GAAG,uBAAuB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,IAAI,YAAY,CAAC,CAAC;QAChH,MAAM,MAAM,GAAwB,wBAAwB,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC;YACjF,CAAC,CAAC;gBACA,QAAQ,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;gBAC7E,aAAa,EAAE,EAAE,MAAM,EAAE,wBAAwB,CAAC,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,EAAE;aAC7E;YACF,CAAC,CAAC,CAAC,GAAG,EAAE;gBACN,MAAM,cAAc,GAAkC;oBACrD,OAAO,EAAE,IAAI;oBACb,GAAG,EAAE,IAAI;oBACT,MAAM,EAAE,IAAI;oBACZ,IAAI,EAAE,KAAK;oBACX,KAAK,EAAE,KAAK,EAAE,qDAAqD;oBACnE,GAAG,EAAE,KAAK;iBACV,CAAC;gBAEF,6DAA6D;gBAC7D,MAAM,KAAK,GAAG,OAAO,CAAC,SAAS,KAAK,OAAO,IAAI,OAAO,CAAC,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;gBACxG,MAAM,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,KAAK,CAAC,IAAI,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;gBAErF,OAAO;oBACN,QAAQ,EAAE;wBACT,IAAI,EAAE,SAAS;wBACf,aAAa,EAAE,MAAM;wBACrB,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qBAC7C;iBACD,CAAC;YACH,CAAC,CAAC,EAAE,CAAC;QAEP,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,IAAI,IAAI,CAAC,EAAE,CAAC;YAC9F,MAAM,CAAC,cAAc,GAAG,CAAC,iCAAiC,CAAC,CAAC;QAC7D,CAAC;QAED,OAAO,MAAM,CAAC;IACf,CAAC;IAED,OAAO,SAAS,CAAC;AAClB,CAAC;AAED,SAAS,gBAAgB,CAAC,QAAgB,EAAE,IAAY;IACvD,IAAI,MAAmB,CAAC;IACxB,QAAQ,QAAQ,EAAE,CAAC;QAClB,KAAK,YAAY,CAAC;QAClB,KAAK,WAAW;YACf,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC;YAC1B,MAAM;QACP,KAAK,WAAW;YACf,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC;YACzB,MAAM;QACP,KAAK,WAAW;YACf,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC;YACzB,MAAM;QACP,KAAK,YAAY;YAChB,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC;YAC1B,MAAM;QACP;YACC,MAAM,IAAI,KAAK,CAAC,uBAAuB,QAAQ,EAAE,CAAC,CAAC;IACrD,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,aAAa,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC;AAC3D,CAAC;AAED,SAAS,aAAa,CAAC,IAAY;IAClC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IAClD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9C,KAAK,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IACvC,CAAC;IACD,OAAO,KAAK,CAAC;AACd,CAAC;AAED;;;;;GAKG;AACH,SAAS,qBAAqB,CAAC,SAA6B;IAC3D,IAAI,CAAC,SAAS;QAAE,OAAO,SAAS,CAAC;IACjC,IAAI,CAAC;QACJ,OAAO,aAAa,CAAC,SAAS,CAAC,CAAC;IACjC,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,SAAS,CAAC;IAClB,CAAC;AACF,CAAC;AAED,SAAS,aAAa,CAAC,MAAoB;IAC1C,+EAA+E;IAC/E,8EAA8E;IAC9E,yCAAyC;IACzC,MAAM,MAAM,GAAG,MAAM,CAAC;IACtB,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,MAAM,EAAE,CAAC;YAC/C,MAAM,IAAI,MAAM,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;QACjE,CAAC;IACF,CAAC;IACD,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC;AACrB,CAAC","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, DeserializeMiddleware, DocumentType, HttpResponse, 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\tImageContent,\n\tJsonObject,\n\tJsonValue,\n\tModel,\n\tProviderEnv,\n\tProviderResponse,\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 { appendAssistantMessageDiagnostic } from \"../utils/diagnostics.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 { getSystemMessageText } from \"../utils/text.ts\";\nimport {\n\tcollapseSystemMessages,\n\tgetCurrentTools,\n\tgetInitialSystemMessage,\n\ttype TranscriptContext,\n\twithoutInitialSystemMessage,\n} from \"../utils/transcript.ts\";\nimport { getJsonSchemaToolParameters, 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) & {\n\tindex?: number;\n\tpartialJson?: string;\n\t/** Scratch buffer for encrypted reasoning deltas, joined into `thinkingSignature`. */\n\tredactedChunks?: Uint8Array[];\n};\n\nconst EMPTY_TEXT_PLACEHOLDER = \"<empty>\";\n\n/** Matches the placeholder the Anthropic API path uses for redacted thinking. */\nconst REDACTED_THINKING_PLACEHOLDER = \"[Reasoning redacted]\";\n\nexport const stream: StreamFunction<\"bedrock-converse-stream\", BedrockOptions> = (\n\tmodel: Model<\"bedrock-converse-stream\">,\n\tcontext: TranscriptContext,\n\toptions: BedrockOptions = {},\n): AssistantMessageEventStream => {\n\tconst stream = new AssistantMessageEventStream();\n\t// Bedrock has no mid-conversation system messages; fold them into the leading prompt.\n\tconst normalizedContext = collapseSystemMessages(context);\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\t// Kept outside the try so the catch can still correlate a mid-stream failure:\n\t\t// exceptions delivered as stream events carry no HTTP metadata of their own.\n\t\tlet responseRequestId: string | undefined;\n\n\t\ttry {\n\t\t\tconst supportsStrictMode = model.compat?.supportsStrictMode ?? false;\n\t\t\tconst client = new BedrockRuntimeClient(config);\n\t\t\tlet observedRawResponse = false;\n\t\t\tif (options.onResponse) {\n\t\t\t\taddResponseHeadersMiddleware(client, options.onResponse, model, () => {\n\t\t\t\t\tobservedRawResponse = true;\n\t\t\t\t});\n\t\t\t}\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\tconst initialSystemMessage = getInitialSystemMessage(normalizedContext.messages);\n\t\t\tconst initialSystemPrompt = initialSystemMessage ? getSystemMessageText(initialSystemMessage) : undefined;\n\t\t\tlet commandInput = {\n\t\t\t\tmodelId: model.id,\n\t\t\t\tmessages: convertMessages(normalizedContext, model, cacheRetention, options.env),\n\t\t\t\tsystem: buildSystemPrompt(initialSystemPrompt, 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(\n\t\t\t\t\tgetCurrentTools(normalizedContext.messages),\n\t\t\t\t\toptions.toolChoice,\n\t\t\t\t\tsupportsStrictMode,\n\t\t\t\t),\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\tresponseRequestId = normalizeDiagnosticValue(response.$metadata.requestId);\n\t\t\tif (!observedRawResponse && 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\tawait options.onProviderStreamEvent?.(item, model);\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\t// A stream can settle without stopping every block, so finalize here too.\n\t\t\tfor (const block of output.content) finalizeStreamingBlock(block as Block);\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\tfinalizeStreamingBlock(block as Block);\n\t\t\t}\n\t\t\toutput.stopReason = options.signal?.aborted ? \"aborted\" : \"error\";\n\t\t\toutput.errorMessage = formatBedrockError(error);\n\t\t\tif (output.stopReason === \"error\") {\n\t\t\t\tappendBedrockFailureDiagnostic(output, error, responseRequestId);\n\t\t\t}\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\ntype SdkErrorMetadata = { $metadata?: { httpStatusCode?: unknown; requestId?: unknown } };\n\n/** Over-long header values are dropped rather than truncated: a truncated request id is not a request id. */\nconst MAX_BEDROCK_DIAGNOSTIC_VALUE_CHARS = 200;\n\nfunction normalizeDiagnosticValue(value: unknown): string | undefined {\n\tif (typeof value !== \"string\") return undefined;\n\tconst trimmed = value.trim();\n\tif (trimmed.length === 0 || trimmed.length > MAX_BEDROCK_DIAGNOSTIC_VALUE_CHARS) return undefined;\n\treturn trimmed;\n}\n\n/**\n * The SDK puts the modeled code on `error.name` for service exceptions and unmodeled stream errors alike, so\n * do not narrow to `BedrockRuntimeServiceException`. Modeled Bedrock errors all end in `Exception`, unlike\n * transport names such as `TimeoutError`.\n */\nfunction extractBedrockErrorCode(error: unknown): string | undefined {\n\tif (!(error instanceof Error) || !error.name.endsWith(\"Exception\")) return undefined;\n\treturn normalizeDiagnosticValue(error.name);\n}\n\n/**\n * Structured metadata alongside `errorMessage`, which stays byte-identical because `isRetryableAssistantError`\n * matches against it. Unknown fields are omitted, never guessed: a modeled mid-stream exception reaches us as\n * a bare object literal, leaving only `fallbackRequestId`. `details` only, as the throw is not always `Error`.\n */\nfunction appendBedrockFailureDiagnostic(\n\toutput: AssistantMessage,\n\terror: unknown,\n\tfallbackRequestId: string | undefined,\n): void {\n\tconst metadata = (error as SdkErrorMetadata)?.$metadata;\n\tconst details: JsonObject = {};\n\n\tif (typeof metadata?.httpStatusCode === \"number\") details.status = metadata.httpStatusCode;\n\n\tconst errorCode = extractBedrockErrorCode(error);\n\tif (errorCode !== undefined) details.errorCode = errorCode;\n\n\tconst requestId = normalizeDiagnosticValue(metadata?.requestId) ?? fallbackRequestId;\n\tif (requestId !== undefined) details.requestId = requestId;\n\n\tif (Object.keys(details).length === 0) return;\n\n\tappendAssistantMessageDiagnostic(output, { type: \"bedrock_response_failure\", timestamp: Date.now(), details });\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\nfunction isSmithyHttpResponse(response: unknown): response is HttpResponse {\n\tif (!response || typeof response !== \"object\") return false;\n\tconst candidate = response as Partial<HttpResponse>;\n\treturn typeof candidate.statusCode === \"number\" && !!candidate.headers && typeof candidate.headers === \"object\";\n}\n\nfunction toProviderResponse(response: unknown): ProviderResponse | undefined {\n\tif (!isSmithyHttpResponse(response)) return undefined;\n\treturn { status: response.statusCode, headers: { ...response.headers } };\n}\n\n/**\n * Bedrock's modeled `$metadata` only preserves selected HTTP metadata (for example\n * requestId), so custom gateway headers are otherwise lost before callers see\n * `onResponse`. Capture the raw Smithy HTTP response at the deserialize step,\n * after the SDK receives the response but before the event stream is consumed.\n */\nfunction addResponseHeadersMiddleware(\n\tclient: BedrockRuntimeClient,\n\tonResponse: NonNullable<BedrockOptions[\"onResponse\"]>,\n\tmodel: Model<\"bedrock-converse-stream\">,\n\tonObserved: () => void,\n): void {\n\tconst middleware: DeserializeMiddleware<object, MetadataBearer> = (next) => async (args) => {\n\t\tconst result = await next(args);\n\t\tconst providerResponse = toProviderResponse(result.response);\n\t\tif (providerResponse) {\n\t\t\tonObserved();\n\t\t\tawait onResponse(providerResponse, model);\n\t\t}\n\t\treturn result;\n\t};\n\tclient.middlewareStack.add(middleware, { step: \"deserialize\", name: \"pi-ai-response-headers\" });\n}\n\nexport const streamSimple: StreamFunction<\"bedrock-converse-stream\", SimpleStreamOptions> = (\n\tmodel: Model<\"bedrock-converse-stream\">,\n\tcontext: TranscriptContext,\n\toptions?: SimpleStreamOptions,\n): AssistantMessageEventStream => {\n\tconst base = {\n\t\t...buildBaseOptions(model, context, options, undefined),\n\t\ttoolChoice: options?.toolChoice,\n\t} satisfies BedrockOptions;\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\t// `thinkingSignature` holds either an Anthropic signature or an opaque redacted\n\t\t\t// payload, never both: mixing them would corrupt whichever arrived first.\n\t\t\tif (delta.reasoningContent.signature && !thinkingBlock.redacted) {\n\t\t\t\tthinkingBlock.thinkingSignature =\n\t\t\t\t\t(thinkingBlock.thinkingSignature || \"\") + delta.reasoningContent.signature;\n\t\t\t}\n\t\t\tif (delta.reasoningContent.redactedContent?.length) {\n\t\t\t\t// Encrypted reasoning from non-Anthropic models on Bedrock (e.g. OpenAI GPT-5.6).\n\t\t\t\t// The payload is opaque, so keep it verbatim in `thinkingSignature` the way the\n\t\t\t\t// Anthropic path stores redacted thinking, and replay it on the next turn.\n\t\t\t\tif (!thinkingBlock.redacted) {\n\t\t\t\t\tthinkingBlock.redacted = true;\n\t\t\t\t\tthinkingBlock.thinkingSignature = \"\";\n\t\t\t\t\tthinkingBlock.thinking += REDACTED_THINKING_PLACEHOLDER;\n\t\t\t\t\tstream.push({\n\t\t\t\t\t\ttype: \"thinking_delta\",\n\t\t\t\t\t\tcontentIndex: thinkingIndex,\n\t\t\t\t\t\tdelta: REDACTED_THINKING_PLACEHOLDER,\n\t\t\t\t\t\tpartial: output,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tthinkingBlock.redactedChunks ??= [];\n\t\t\t\tthinkingBlock.redactedChunks.push(delta.reasoningContent.redactedContent);\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * Encodes buffered encrypted reasoning into `thinkingSignature` and drops the scratch\n * buffer, which must never reach a persisted message: `Uint8Array` serializes to an\n * index-keyed object roughly ten times the size of the base64 payload.\n */\nfunction flushRedactedContent(block: Block): void {\n\tif (block.type !== \"thinking\" || !block.redactedChunks) return;\n\tblock.thinkingSignature = bytesToBase64(block.redactedChunks);\n\tdelete block.redactedChunks;\n}\n\n/**\n * Strips every streaming scratch field. Runs from the terminal paths as well as\n * `contentBlockStop`, because a stream can settle without stopping each block.\n */\nfunction finalizeStreamingBlock(block: Block): void {\n\tdelete block.index;\n\t// partialJson is only a streaming scratch buffer; never persist it.\n\tdelete block.partialJson;\n\tflushRedactedContent(block);\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.cacheWrite1h = event.usage.cacheDetails?.reduce(\n\t\t\t(total, detail) => total + (detail.ttl === CacheTTL.ONE_HOUR ? (detail.inputTokens ?? 0) : 0),\n\t\t\t0,\n\t\t);\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\tflushRedactedContent(block);\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 sanitizeBedrockDocument(value: JsonValue): DocumentType {\n\tif (Array.isArray(value)) {\n\t\treturn value.map(sanitizeBedrockDocument);\n\t}\n\tif (value !== null && typeof value === \"object\") {\n\t\treturn Object.fromEntries(\n\t\t\tObject.entries(value)\n\t\t\t\t.filter(([key]) => key.length > 0)\n\t\t\t\t.map(([key, nestedValue]) => [key, sanitizeBedrockDocument(nestedValue)]),\n\t\t);\n\t}\n\treturn value;\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: TranscriptContext,\n\tmodel: Model<\"bedrock-converse-stream\">,\n\tcacheRetention: CacheRetention,\n\tenv?: ProviderEnv,\n): Message[] {\n\tconst result: Message[] = [];\n\tconst transformedMessages = transformMessages(\n\t\twithoutInitialSystemMessage(context.messages),\n\t\tmodel,\n\t\tnormalizeToolCallId,\n\t);\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({ role: ConversationRole.USER, content });\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: sanitizeBedrockDocument(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// Encrypted reasoning is opaque: replay the stored payload as the\n\t\t\t\t\t\t\t// `redactedContent` member instead of lowering it to reasoning text.\n\t\t\t\t\t\t\tif (c.redacted) {\n\t\t\t\t\t\t\t\tconst redactedContent = decodeRedactedContent(c.thinkingSignature);\n\t\t\t\t\t\t\t\tif (redactedContent?.length) {\n\t\t\t\t\t\t\t\t\tcontentBlocks.push({ reasoningContent: { redactedContent } });\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t}\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({ role: ConversationRole.USER, content: toolResults });\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: getJsonSchemaToolParameters(tool, strict) 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, // Budget-based Claude clamps extended levels to high\n\t\t\t\t\t\tmax: 16384,\n\t\t\t\t\t};\n\n\t\t\t\t\t// Custom budgets only cover token-based levels through 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\treturn { source: { bytes: base64ToBytes(data) }, format };\n}\n\nfunction base64ToBytes(data: string): Uint8Array {\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\treturn bytes;\n}\n\n/**\n * Decodes a stored redacted payload. The AWS SDK hands the blob over as bytes, but a\n * persisted session carries it as base64. A hand-edited or externally produced session\n * can hold a signature that is not base64; drop that block instead of failing the\n * whole request.\n */\nfunction decodeRedactedContent(signature: string | undefined): Uint8Array | undefined {\n\tif (!signature) return undefined;\n\ttry {\n\t\treturn base64ToBytes(signature);\n\t} catch {\n\t\treturn undefined;\n\t}\n}\n\nfunction bytesToBase64(chunks: Uint8Array[]): string {\n\t// Encrypted reasoning runs to tens of KB, so build the binary string in slices\n\t// rather than one concatenation per byte. The window stays under the engine's\n\t// argument-count limit for spread calls.\n\tconst WINDOW = 0x8000;\n\tlet binary = \"\";\n\tfor (const chunk of chunks) {\n\t\tfor (let i = 0; i < chunk.length; i += WINDOW) {\n\t\t\tbinary += String.fromCharCode(...chunk.subarray(i, i + WINDOW));\n\t\t}\n\t}\n\treturn btoa(binary);\n}\n"]}
@@ -0,0 +1,9 @@
1
+ import type { ProviderStreams } from "../types.ts";
2
+ /**
3
+ * Overrides the dynamically imported bedrock implementation. Used by the Bun
4
+ * binary build, where the variable-specifier import cannot be bundled; the
5
+ * build registers a statically imported module instead.
6
+ */
7
+ export declare function setBedrockProviderModule(module: ProviderStreams): void;
8
+ export declare const bedrockConverseStreamApi: () => ProviderStreams;
9
+ //# sourceMappingURL=bedrock-converse-stream.lazy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bedrock-converse-stream.lazy.d.ts","sourceRoot":"","sources":["../../src/api/bedrock-converse-stream.lazy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAgBnD;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI,CAEtE;AAED,eAAO,MAAM,wBAAwB,QAAO,eAI1C,CAAC"}
@@ -0,0 +1,30 @@
1
+ var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExtension) || function (path, preserveJsx) {
2
+ if (typeof path === "string" && /^\.\.?\//.test(path)) {
3
+ return path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {
4
+ return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : (d + ext + "." + cm.toLowerCase() + "js");
5
+ });
6
+ }
7
+ return path;
8
+ };
9
+ import { lazyApi } from "./lazy.js";
10
+ /**
11
+ * Loads the bedrock implementation through a variable specifier so bundlers
12
+ * (browser smoke, Bun compile) cannot follow the import into the Node-only
13
+ * AWS SDK. The `.ts`/`.js` rewrite keeps the trick working from both source
14
+ * and built output.
15
+ */
16
+ const importNodeOnlyApi = (specifier) => {
17
+ const runtimeSpecifier = import.meta.url.endsWith(".js") ? specifier.replace(/\.ts$/, ".js") : specifier;
18
+ return import(__rewriteRelativeImportExtension(runtimeSpecifier));
19
+ };
20
+ let bedrockModuleOverride;
21
+ /**
22
+ * Overrides the dynamically imported bedrock implementation. Used by the Bun
23
+ * binary build, where the variable-specifier import cannot be bundled; the
24
+ * build registers a statically imported module instead.
25
+ */
26
+ export function setBedrockProviderModule(module) {
27
+ bedrockModuleOverride = module;
28
+ }
29
+ export const bedrockConverseStreamApi = () => lazyApi(async () => bedrockModuleOverride ?? (await importNodeOnlyApi("./bedrock-converse-stream.ts")));
30
+ //# sourceMappingURL=bedrock-converse-stream.lazy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bedrock-converse-stream.lazy.js","sourceRoot":"","sources":["../../src/api/bedrock-converse-stream.lazy.ts"],"names":[],"mappings":";;;;;;;;AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC;;;;;GAKG;AACH,MAAM,iBAAiB,GAAG,CAAC,SAAiB,EAAoB,EAAE;IACjE,MAAM,gBAAgB,GAAG,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACzG,OAAO,MAAM,kCAAC,gBAAgB,EAAC,CAAC;AACjC,CAAC,CAAC;AAEF,IAAI,qBAAkD,CAAC;AAEvD;;;;GAIG;AACH,MAAM,UAAU,wBAAwB,CAAC,MAAuB;IAC/D,qBAAqB,GAAG,MAAM,CAAC;AAChC,CAAC;AAED,MAAM,CAAC,MAAM,wBAAwB,GAAG,GAAoB,EAAE,CAC7D,OAAO,CACN,KAAK,IAAI,EAAE,CACV,qBAAqB,IAAK,CAAC,MAAM,iBAAiB,CAAC,8BAA8B,CAAC,CAAqB,CACxG,CAAC","sourcesContent":["import type { ProviderStreams } from \"../types.ts\";\nimport { lazyApi } from \"./lazy.ts\";\n\n/**\n * Loads the bedrock implementation through a variable specifier so bundlers\n * (browser smoke, Bun compile) cannot follow the import into the Node-only\n * AWS SDK. The `.ts`/`.js` rewrite keeps the trick working from both source\n * and built output.\n */\nconst importNodeOnlyApi = (specifier: string): Promise<unknown> => {\n\tconst runtimeSpecifier = import.meta.url.endsWith(\".js\") ? specifier.replace(/\\.ts$/, \".js\") : specifier;\n\treturn import(runtimeSpecifier);\n};\n\nlet bedrockModuleOverride: ProviderStreams | undefined;\n\n/**\n * Overrides the dynamically imported bedrock implementation. Used by the Bun\n * binary build, where the variable-specifier import cannot be bundled; the\n * build registers a statically imported module instead.\n */\nexport function setBedrockProviderModule(module: ProviderStreams): void {\n\tbedrockModuleOverride = module;\n}\n\nexport const bedrockConverseStreamApi = (): ProviderStreams =>\n\tlazyApi(\n\t\tasync () =>\n\t\t\tbedrockModuleOverride ?? ((await importNodeOnlyApi(\"./bedrock-converse-stream.ts\")) as ProviderStreams),\n\t);\n"]}
@@ -0,0 +1,77 @@
1
+ /**
2
+ * AI Gateway transport over the Workers AI binding.
3
+ *
4
+ * pi's Cloudflare AI Gateway support speaks HTTPS
5
+ * (`gateway.ai.cloudflare.com/v1/{account}/{gateway}/{provider}/...`, see `api/cloudflare.ts`),
6
+ * which needs a Cloudflare API token even when the caller is a Worker in the gateway's own
7
+ * account.
8
+ *
9
+ * A Worker avoids that token by talking to the gateway through the AI binding's `fetch`
10
+ * passthrough (`env.AI.fetch()`), which serves the gateway's provider passthrough at
11
+ * `https://workers-binding.ai/ai-gateway/gateways/{gateway}/{provider}/{endpoint...}` — the same
12
+ * shape as the HTTPS URL, minus the account id (the binding channel carries identity). Binding
13
+ * calls are pre-authenticated in-account and return the provider's native wire format as a
14
+ * regular (streaming) `Response`, so API implementations behave identically over either
15
+ * transport.
16
+ *
17
+ * A model whose `baseUrl` names that route therefore needs no translation: point it there and
18
+ * pass {@link createAiBindingFetch} as the request `fetch`. Nothing is rewritten, buffered or
19
+ * re-encoded — method, headers, query string and the body stream go to the binding as they
20
+ * arrive, so every method, non-JSON body and streaming request body works.
21
+ *
22
+ * The only thing this module adds over calling `env.AI.fetch()` yourself is a type: `Ai#fetch`
23
+ * exists at runtime (`workerd/src/cloudflare/internal/ai-api.ts:158`) but
24
+ * `@cloudflare/workers-types`' `Ai` class does not declare it yet, so calling it directly means
25
+ * casting the binding at every call site. {@link AiBinding} takes the cast instead — declare
26
+ * `fetch` optional, check it once at construction — so `env.AI` can be passed as-is. Once
27
+ * workers-types declares `fetch`, the optional marker and the runtime check both go away.
28
+ */
29
+ import type { FetchFunction } from "../types.ts";
30
+ /**
31
+ * The Workers AI binding (`env.AI`), described structurally so this module does not depend on
32
+ * `@cloudflare/workers-types`.
33
+ *
34
+ * `fetch` is optional only because the published `Ai` type doesn't declare it yet — every real
35
+ * binding has it at runtime. `aiGatewayLogId` is here to pin the type to the AI binding: it is
36
+ * the one member unique to `Ai`, so without it this interface would also accept an `AiGateway`
37
+ * or any hand-rolled `{ fetch }` object, which is exactly the mistake the runtime check reports
38
+ * late.
39
+ */
40
+ export interface AiBinding {
41
+ aiGatewayLogId: string | null;
42
+ fetch?(input: Request | string | URL, init?: RequestInit): Promise<Response>;
43
+ }
44
+ /**
45
+ * Placeholder value for auth headers on binding-routed requests. API implementations
46
+ * require an API key or a recognized auth header (`authorization`, `x-api-key`,
47
+ * `cf-aig-authorization`) before dispatch; binding calls are pre-authenticated, so pass
48
+ * `cf-aig-authorization: Bearer ${CLOUDFLARE_GATEWAY_BINDING_AUTH_SENTINEL}` to satisfy
49
+ * the check. The gateway ignores (and strips) `cf-aig-authorization` on binding-routed
50
+ * requests. Pair it with `Authorization: null` / `x-api-key: null` so the SDKs' placeholder
51
+ * auth headers never reach the gateway, which would treat a request-supplied auth header as a
52
+ * BYOK provider key that overrides its stored keys — the same as it would over HTTPS.
53
+ */
54
+ export declare const CLOUDFLARE_GATEWAY_BINDING_AUTH_SENTINEL = "cloudflare-gateway-binding";
55
+ /**
56
+ * Create a `fetch` backed by the AI binding, for models whose `baseUrl` already names a route
57
+ * the binding serves — including the gateway's provider passthrough,
58
+ * `https://workers-binding.ai/ai-gateway/gateways/{gateway}/{provider}/...`. Requests pass
59
+ * through untouched.
60
+ *
61
+ * ```ts
62
+ * const model = {
63
+ * // ...
64
+ * baseUrl: `https://workers-binding.ai/ai-gateway/gateways/${gateway}/anthropic`,
65
+ * };
66
+ * await models.complete(model, context, {
67
+ * headers: {
68
+ * "cf-aig-authorization": `Bearer ${CLOUDFLARE_GATEWAY_BINDING_AUTH_SENTINEL}`,
69
+ * Authorization: null,
70
+ * "x-api-key": null,
71
+ * },
72
+ * fetch: createAiBindingFetch(env.AI),
73
+ * });
74
+ * ```
75
+ */
76
+ export declare function createAiBindingFetch(binding: AiBinding): FetchFunction;
77
+ //# sourceMappingURL=cloudflare-ai-binding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloudflare-ai-binding.d.ts","sourceRoot":"","sources":["../../src/api/cloudflare-ai-binding.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD;;;;;;;;;GASG;AACH,MAAM,WAAW,SAAS;IACzB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,KAAK,CAAC,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,GAAG,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;CAC7E;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,wCAAwC,+BAA+B,CAAC;AAErF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,SAAS,GAAG,aAAa,CAUtE"}
@@ -0,0 +1,72 @@
1
+ /**
2
+ * AI Gateway transport over the Workers AI binding.
3
+ *
4
+ * pi's Cloudflare AI Gateway support speaks HTTPS
5
+ * (`gateway.ai.cloudflare.com/v1/{account}/{gateway}/{provider}/...`, see `api/cloudflare.ts`),
6
+ * which needs a Cloudflare API token even when the caller is a Worker in the gateway's own
7
+ * account.
8
+ *
9
+ * A Worker avoids that token by talking to the gateway through the AI binding's `fetch`
10
+ * passthrough (`env.AI.fetch()`), which serves the gateway's provider passthrough at
11
+ * `https://workers-binding.ai/ai-gateway/gateways/{gateway}/{provider}/{endpoint...}` — the same
12
+ * shape as the HTTPS URL, minus the account id (the binding channel carries identity). Binding
13
+ * calls are pre-authenticated in-account and return the provider's native wire format as a
14
+ * regular (streaming) `Response`, so API implementations behave identically over either
15
+ * transport.
16
+ *
17
+ * A model whose `baseUrl` names that route therefore needs no translation: point it there and
18
+ * pass {@link createAiBindingFetch} as the request `fetch`. Nothing is rewritten, buffered or
19
+ * re-encoded — method, headers, query string and the body stream go to the binding as they
20
+ * arrive, so every method, non-JSON body and streaming request body works.
21
+ *
22
+ * The only thing this module adds over calling `env.AI.fetch()` yourself is a type: `Ai#fetch`
23
+ * exists at runtime (`workerd/src/cloudflare/internal/ai-api.ts:158`) but
24
+ * `@cloudflare/workers-types`' `Ai` class does not declare it yet, so calling it directly means
25
+ * casting the binding at every call site. {@link AiBinding} takes the cast instead — declare
26
+ * `fetch` optional, check it once at construction — so `env.AI` can be passed as-is. Once
27
+ * workers-types declares `fetch`, the optional marker and the runtime check both go away.
28
+ */
29
+ /**
30
+ * Placeholder value for auth headers on binding-routed requests. API implementations
31
+ * require an API key or a recognized auth header (`authorization`, `x-api-key`,
32
+ * `cf-aig-authorization`) before dispatch; binding calls are pre-authenticated, so pass
33
+ * `cf-aig-authorization: Bearer ${CLOUDFLARE_GATEWAY_BINDING_AUTH_SENTINEL}` to satisfy
34
+ * the check. The gateway ignores (and strips) `cf-aig-authorization` on binding-routed
35
+ * requests. Pair it with `Authorization: null` / `x-api-key: null` so the SDKs' placeholder
36
+ * auth headers never reach the gateway, which would treat a request-supplied auth header as a
37
+ * BYOK provider key that overrides its stored keys — the same as it would over HTTPS.
38
+ */
39
+ export const CLOUDFLARE_GATEWAY_BINDING_AUTH_SENTINEL = "cloudflare-gateway-binding";
40
+ /**
41
+ * Create a `fetch` backed by the AI binding, for models whose `baseUrl` already names a route
42
+ * the binding serves — including the gateway's provider passthrough,
43
+ * `https://workers-binding.ai/ai-gateway/gateways/{gateway}/{provider}/...`. Requests pass
44
+ * through untouched.
45
+ *
46
+ * ```ts
47
+ * const model = {
48
+ * // ...
49
+ * baseUrl: `https://workers-binding.ai/ai-gateway/gateways/${gateway}/anthropic`,
50
+ * };
51
+ * await models.complete(model, context, {
52
+ * headers: {
53
+ * "cf-aig-authorization": `Bearer ${CLOUDFLARE_GATEWAY_BINDING_AUTH_SENTINEL}`,
54
+ * Authorization: null,
55
+ * "x-api-key": null,
56
+ * },
57
+ * fetch: createAiBindingFetch(env.AI),
58
+ * });
59
+ * ```
60
+ */
61
+ export function createAiBindingFetch(binding) {
62
+ // `fetch` is optional on the type, so its presence is checked here — early, rather than as a
63
+ // confusing failure on the first inference request.
64
+ if (typeof binding.fetch !== "function") {
65
+ throw new TypeError("createAiBindingFetch: the AI binding does not expose fetch()");
66
+ }
67
+ // Bound eagerly: `fetch` is a mutable property, so the narrowing above would not survive into
68
+ // the returned closure.
69
+ const bindingFetch = binding.fetch.bind(binding);
70
+ return (input, init) => bindingFetch(input, init);
71
+ }
72
+ //# sourceMappingURL=cloudflare-ai-binding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloudflare-ai-binding.js","sourceRoot":"","sources":["../../src/api/cloudflare-ai-binding.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAmBH;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,wCAAwC,GAAG,4BAA4B,CAAC;AAErF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAkB;IACtD,6FAA6F;IAC7F,oDAAoD;IACpD,IAAI,OAAO,OAAO,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;QACzC,MAAM,IAAI,SAAS,CAAC,8DAA8D,CAAC,CAAC;IACrF,CAAC;IACD,8FAA8F;IAC9F,wBAAwB;IACxB,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACjD,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AACnD,CAAC","sourcesContent":["/**\n * AI Gateway transport over the Workers AI binding.\n *\n * pi's Cloudflare AI Gateway support speaks HTTPS\n * (`gateway.ai.cloudflare.com/v1/{account}/{gateway}/{provider}/...`, see `api/cloudflare.ts`),\n * which needs a Cloudflare API token even when the caller is a Worker in the gateway's own\n * account.\n *\n * A Worker avoids that token by talking to the gateway through the AI binding's `fetch`\n * passthrough (`env.AI.fetch()`), which serves the gateway's provider passthrough at\n * `https://workers-binding.ai/ai-gateway/gateways/{gateway}/{provider}/{endpoint...}` — the same\n * shape as the HTTPS URL, minus the account id (the binding channel carries identity). Binding\n * calls are pre-authenticated in-account and return the provider's native wire format as a\n * regular (streaming) `Response`, so API implementations behave identically over either\n * transport.\n *\n * A model whose `baseUrl` names that route therefore needs no translation: point it there and\n * pass {@link createAiBindingFetch} as the request `fetch`. Nothing is rewritten, buffered or\n * re-encoded — method, headers, query string and the body stream go to the binding as they\n * arrive, so every method, non-JSON body and streaming request body works.\n *\n * The only thing this module adds over calling `env.AI.fetch()` yourself is a type: `Ai#fetch`\n * exists at runtime (`workerd/src/cloudflare/internal/ai-api.ts:158`) but\n * `@cloudflare/workers-types`' `Ai` class does not declare it yet, so calling it directly means\n * casting the binding at every call site. {@link AiBinding} takes the cast instead — declare\n * `fetch` optional, check it once at construction — so `env.AI` can be passed as-is. Once\n * workers-types declares `fetch`, the optional marker and the runtime check both go away.\n */\n\nimport type { FetchFunction } from \"../types.ts\";\n\n/**\n * The Workers AI binding (`env.AI`), described structurally so this module does not depend on\n * `@cloudflare/workers-types`.\n *\n * `fetch` is optional only because the published `Ai` type doesn't declare it yet — every real\n * binding has it at runtime. `aiGatewayLogId` is here to pin the type to the AI binding: it is\n * the one member unique to `Ai`, so without it this interface would also accept an `AiGateway`\n * or any hand-rolled `{ fetch }` object, which is exactly the mistake the runtime check reports\n * late.\n */\nexport interface AiBinding {\n\taiGatewayLogId: string | null;\n\tfetch?(input: Request | string | URL, init?: RequestInit): Promise<Response>;\n}\n\n/**\n * Placeholder value for auth headers on binding-routed requests. API implementations\n * require an API key or a recognized auth header (`authorization`, `x-api-key`,\n * `cf-aig-authorization`) before dispatch; binding calls are pre-authenticated, so pass\n * `cf-aig-authorization: Bearer ${CLOUDFLARE_GATEWAY_BINDING_AUTH_SENTINEL}` to satisfy\n * the check. The gateway ignores (and strips) `cf-aig-authorization` on binding-routed\n * requests. Pair it with `Authorization: null` / `x-api-key: null` so the SDKs' placeholder\n * auth headers never reach the gateway, which would treat a request-supplied auth header as a\n * BYOK provider key that overrides its stored keys — the same as it would over HTTPS.\n */\nexport const CLOUDFLARE_GATEWAY_BINDING_AUTH_SENTINEL = \"cloudflare-gateway-binding\";\n\n/**\n * Create a `fetch` backed by the AI binding, for models whose `baseUrl` already names a route\n * the binding serves — including the gateway's provider passthrough,\n * `https://workers-binding.ai/ai-gateway/gateways/{gateway}/{provider}/...`. Requests pass\n * through untouched.\n *\n * ```ts\n * const model = {\n * // ...\n * baseUrl: `https://workers-binding.ai/ai-gateway/gateways/${gateway}/anthropic`,\n * };\n * await models.complete(model, context, {\n * headers: {\n * \"cf-aig-authorization\": `Bearer ${CLOUDFLARE_GATEWAY_BINDING_AUTH_SENTINEL}`,\n * Authorization: null,\n * \"x-api-key\": null,\n * },\n * fetch: createAiBindingFetch(env.AI),\n * });\n * ```\n */\nexport function createAiBindingFetch(binding: AiBinding): FetchFunction {\n\t// `fetch` is optional on the type, so its presence is checked here — early, rather than as a\n\t// confusing failure on the first inference request.\n\tif (typeof binding.fetch !== \"function\") {\n\t\tthrow new TypeError(\"createAiBindingFetch: the AI binding does not expose fetch()\");\n\t}\n\t// Bound eagerly: `fetch` is a mutable property, so the narrowing above would not survive into\n\t// the returned closure.\n\tconst bindingFetch = binding.fetch.bind(binding);\n\treturn (input, init) => bindingFetch(input, init);\n}\n"]}
@@ -0,0 +1,4 @@
1
+ import type { ClassifierFunction, ClassifierOptions } from "../types.ts";
2
+ /** Cloudflare Workers AI System One classification with public `bool` values mapped to wire-level `noul`. */
3
+ export declare const classify: ClassifierFunction<ClassifierOptions>;
4
+ //# sourceMappingURL=cloudflare-workers-ai-system-one.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloudflare-workers-ai-system-one.d.ts","sourceRoot":"","sources":["../../src/api/cloudflare-workers-ai-system-one.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAwCzE,6GAA6G;AAC7G,eAAO,MAAM,QAAQ,EAAE,kBAAkB,CAAC,iBAAiB,CACL,CAAC"}
@@ -0,0 +1,43 @@
1
+ import { classifySystemOne, isRecord } from "./system-one-shared.js";
2
+ const LABEL = "Cloudflare Workers AI";
3
+ function cloudflareErrorMessage(errors) {
4
+ if (Array.isArray(errors)) {
5
+ const messages = errors
6
+ .map((error) => (isRecord(error) && typeof error.message === "string" ? error.message : undefined))
7
+ .filter((message) => message !== undefined);
8
+ if (messages.length > 0)
9
+ return `${LABEL} error: ${messages.join("; ")}`;
10
+ }
11
+ return `${LABEL} request failed`;
12
+ }
13
+ /**
14
+ * System One models on the Workers AI REST endpoint:
15
+ * `POST /accounts/{account}/ai/run` with `{ model, input }`. The REST API
16
+ * wraps the model output in Cloudflare's API envelope and a run record:
17
+ * `{ success, result: { state: "Completed", result: { answers, usage } } }`.
18
+ * https://developers.cloudflare.com/ai/models/typesafe/jev/
19
+ */
20
+ const transport = {
21
+ api: "cloudflare-workers-ai-system-one",
22
+ label: LABEL,
23
+ url: (model) => new URL("run", `${model.baseUrl.replace(/\/+$/u, "")}/`),
24
+ payload: (model, request) => ({ model: model.id, input: request }),
25
+ output: (body) => {
26
+ if (!isRecord(body))
27
+ throw new Error(`${LABEL} returned an unexpected response`);
28
+ if (body.success === false)
29
+ throw new Error(cloudflareErrorMessage(body.errors));
30
+ const run = body.result;
31
+ if (!isRecord(run))
32
+ throw new Error(`${LABEL} returned an unexpected response`);
33
+ if (run.state !== "Completed") {
34
+ throw new Error(`${LABEL} run did not complete (state: ${String(run.state)})`);
35
+ }
36
+ if (!isRecord(run.result))
37
+ throw new Error(`${LABEL} returned an unexpected response`);
38
+ return run.result;
39
+ },
40
+ };
41
+ /** Cloudflare Workers AI System One classification with public `bool` values mapped to wire-level `noul`. */
42
+ export const classify = (model, context, options) => classifySystemOne(transport, model, context, options);
43
+ //# sourceMappingURL=cloudflare-workers-ai-system-one.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloudflare-workers-ai-system-one.js","sourceRoot":"","sources":["../../src/api/cloudflare-workers-ai-system-one.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAA2B,MAAM,wBAAwB,CAAC;AAE9F,MAAM,KAAK,GAAG,uBAAuB,CAAC;AAEtC,SAAS,sBAAsB,CAAC,MAAe;IAC9C,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,MAAM,QAAQ,GAAG,MAAM;aACrB,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;aAClG,MAAM,CAAC,CAAC,OAAO,EAAqB,EAAE,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC;QAChE,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,GAAG,KAAK,WAAW,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IAC1E,CAAC;IACD,OAAO,GAAG,KAAK,iBAAiB,CAAC;AAClC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,SAAS,GAAuB;IACrC,GAAG,EAAE,kCAAkC;IACvC,KAAK,EAAE,KAAK;IACZ,GAAG,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,KAAK,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,CAAC;IACxE,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;IAClE,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;QAChB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,kCAAkC,CAAC,CAAC;QACjF,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QACjF,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;QACxB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,kCAAkC,CAAC,CAAC;QAChF,IAAI,GAAG,CAAC,KAAK,KAAK,WAAW,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,iCAAiC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAChF,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,kCAAkC,CAAC,CAAC;QACvF,OAAO,GAAG,CAAC,MAAM,CAAC;IACnB,CAAC;CACD,CAAC;AAEF,6GAA6G;AAC7G,MAAM,CAAC,MAAM,QAAQ,GAA0C,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,CAC1F,iBAAiB,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC","sourcesContent":["import type { ClassifierFunction, ClassifierOptions } from \"../types.ts\";\nimport { classifySystemOne, isRecord, type SystemOneTransport } from \"./system-one-shared.ts\";\n\nconst LABEL = \"Cloudflare Workers AI\";\n\nfunction cloudflareErrorMessage(errors: unknown): string {\n\tif (Array.isArray(errors)) {\n\t\tconst messages = errors\n\t\t\t.map((error) => (isRecord(error) && typeof error.message === \"string\" ? error.message : undefined))\n\t\t\t.filter((message): message is string => message !== undefined);\n\t\tif (messages.length > 0) return `${LABEL} error: ${messages.join(\"; \")}`;\n\t}\n\treturn `${LABEL} request failed`;\n}\n\n/**\n * System One models on the Workers AI REST endpoint:\n * `POST /accounts/{account}/ai/run` with `{ model, input }`. The REST API\n * wraps the model output in Cloudflare's API envelope and a run record:\n * `{ success, result: { state: \"Completed\", result: { answers, usage } } }`.\n * https://developers.cloudflare.com/ai/models/typesafe/jev/\n */\nconst transport: SystemOneTransport = {\n\tapi: \"cloudflare-workers-ai-system-one\",\n\tlabel: LABEL,\n\turl: (model) => new URL(\"run\", `${model.baseUrl.replace(/\\/+$/u, \"\")}/`),\n\tpayload: (model, request) => ({ model: model.id, input: request }),\n\toutput: (body) => {\n\t\tif (!isRecord(body)) throw new Error(`${LABEL} returned an unexpected response`);\n\t\tif (body.success === false) throw new Error(cloudflareErrorMessage(body.errors));\n\t\tconst run = body.result;\n\t\tif (!isRecord(run)) throw new Error(`${LABEL} returned an unexpected response`);\n\t\tif (run.state !== \"Completed\") {\n\t\t\tthrow new Error(`${LABEL} run did not complete (state: ${String(run.state)})`);\n\t\t}\n\t\tif (!isRecord(run.result)) throw new Error(`${LABEL} returned an unexpected response`);\n\t\treturn run.result;\n\t},\n};\n\n/** Cloudflare Workers AI System One classification with public `bool` values mapped to wire-level `noul`. */\nexport const classify: ClassifierFunction<ClassifierOptions> = (model, context, options) =>\n\tclassifySystemOne(transport, model, context, options);\n"]}
@@ -0,0 +1,3 @@
1
+ import type { ProviderClassifier } from "../types.ts";
2
+ export declare const cloudflareWorkersAISystemOneApi: () => ProviderClassifier;
3
+ //# sourceMappingURL=cloudflare-workers-ai-system-one.lazy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloudflare-workers-ai-system-one.lazy.d.ts","sourceRoot":"","sources":["../../src/api/cloudflare-workers-ai-system-one.lazy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEtD,eAAO,MAAM,+BAA+B,QAAO,kBAGjD,CAAC"}
@@ -0,0 +1,4 @@
1
+ export const cloudflareWorkersAISystemOneApi = () => ({
2
+ classify: async (model, context, options) => (await import("./cloudflare-workers-ai-system-one.js")).classify(model, context, options),
3
+ });
4
+ //# sourceMappingURL=cloudflare-workers-ai-system-one.lazy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloudflare-workers-ai-system-one.lazy.js","sourceRoot":"","sources":["../../src/api/cloudflare-workers-ai-system-one.lazy.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,+BAA+B,GAAG,GAAuB,EAAE,CAAC,CAAC;IACzE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,CAC3C,CAAC,MAAM,MAAM,CAAC,uCAAuC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC;CAC1F,CAAC,CAAC","sourcesContent":["import type { ProviderClassifier } from \"../types.ts\";\n\nexport const cloudflareWorkersAISystemOneApi = (): ProviderClassifier => ({\n\tclassify: async (model, context, options) =>\n\t\t(await import(\"./cloudflare-workers-ai-system-one.ts\")).classify(model, context, options),\n});\n"]}
@@ -0,0 +1,11 @@
1
+ /** Workers AI direct endpoint. */
2
+ export declare const CLOUDFLARE_WORKERS_AI_BASE_URL = "https://api.cloudflare.com/client/v4/accounts/{CLOUDFLARE_ACCOUNT_ID}/ai/v1";
3
+ /** Workers AI REST endpoint root; model runs are posted to `run`. */
4
+ export declare const CLOUDFLARE_WORKERS_AI_REST_BASE_URL = "https://api.cloudflare.com/client/v4/accounts/{CLOUDFLARE_ACCOUNT_ID}/ai";
5
+ /** AI Gateway Unified API. https://developers.cloudflare.com/ai-gateway/usage/unified-api/ */
6
+ export declare const CLOUDFLARE_AI_GATEWAY_COMPAT_BASE_URL = "https://gateway.ai.cloudflare.com/v1/{CLOUDFLARE_ACCOUNT_ID}/{CLOUDFLARE_GATEWAY_ID}/compat";
7
+ /** AI Gateway → OpenAI passthrough. Used until /compat supports /v1/responses. */
8
+ export declare const CLOUDFLARE_AI_GATEWAY_OPENAI_BASE_URL = "https://gateway.ai.cloudflare.com/v1/{CLOUDFLARE_ACCOUNT_ID}/{CLOUDFLARE_GATEWAY_ID}/openai";
9
+ /** AI Gateway → Anthropic passthrough. */
10
+ export declare const CLOUDFLARE_AI_GATEWAY_ANTHROPIC_BASE_URL = "https://gateway.ai.cloudflare.com/v1/{CLOUDFLARE_ACCOUNT_ID}/{CLOUDFLARE_GATEWAY_ID}/anthropic";
11
+ //# sourceMappingURL=cloudflare.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloudflare.d.ts","sourceRoot":"","sources":["../../src/api/cloudflare.ts"],"names":[],"mappings":"AAAA,kCAAkC;AAClC,eAAO,MAAM,8BAA8B,gFACmC,CAAC;AAE/E,qEAAqE;AACrE,eAAO,MAAM,mCAAmC,6EAC2B,CAAC;AAE5E,8FAA8F;AAC9F,eAAO,MAAM,qCAAqC,gGAC4C,CAAC;AAE/F,kFAAkF;AAClF,eAAO,MAAM,qCAAqC,gGAC4C,CAAC;AAE/F,0CAA0C;AAC1C,eAAO,MAAM,wCAAwC,mGAC4C,CAAC"}
@@ -0,0 +1,11 @@
1
+ /** Workers AI direct endpoint. */
2
+ export const CLOUDFLARE_WORKERS_AI_BASE_URL = "https://api.cloudflare.com/client/v4/accounts/{CLOUDFLARE_ACCOUNT_ID}/ai/v1";
3
+ /** Workers AI REST endpoint root; model runs are posted to `run`. */
4
+ export const CLOUDFLARE_WORKERS_AI_REST_BASE_URL = "https://api.cloudflare.com/client/v4/accounts/{CLOUDFLARE_ACCOUNT_ID}/ai";
5
+ /** AI Gateway Unified API. https://developers.cloudflare.com/ai-gateway/usage/unified-api/ */
6
+ export const CLOUDFLARE_AI_GATEWAY_COMPAT_BASE_URL = "https://gateway.ai.cloudflare.com/v1/{CLOUDFLARE_ACCOUNT_ID}/{CLOUDFLARE_GATEWAY_ID}/compat";
7
+ /** AI Gateway → OpenAI passthrough. Used until /compat supports /v1/responses. */
8
+ export const CLOUDFLARE_AI_GATEWAY_OPENAI_BASE_URL = "https://gateway.ai.cloudflare.com/v1/{CLOUDFLARE_ACCOUNT_ID}/{CLOUDFLARE_GATEWAY_ID}/openai";
9
+ /** AI Gateway → Anthropic passthrough. */
10
+ export const CLOUDFLARE_AI_GATEWAY_ANTHROPIC_BASE_URL = "https://gateway.ai.cloudflare.com/v1/{CLOUDFLARE_ACCOUNT_ID}/{CLOUDFLARE_GATEWAY_ID}/anthropic";
11
+ //# sourceMappingURL=cloudflare.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloudflare.js","sourceRoot":"","sources":["../../src/api/cloudflare.ts"],"names":[],"mappings":"AAAA,kCAAkC;AAClC,MAAM,CAAC,MAAM,8BAA8B,GAC1C,6EAA6E,CAAC;AAE/E,qEAAqE;AACrE,MAAM,CAAC,MAAM,mCAAmC,GAC/C,0EAA0E,CAAC;AAE5E,8FAA8F;AAC9F,MAAM,CAAC,MAAM,qCAAqC,GACjD,6FAA6F,CAAC;AAE/F,kFAAkF;AAClF,MAAM,CAAC,MAAM,qCAAqC,GACjD,6FAA6F,CAAC;AAE/F,0CAA0C;AAC1C,MAAM,CAAC,MAAM,wCAAwC,GACpD,gGAAgG,CAAC","sourcesContent":["/** Workers AI direct endpoint. */\nexport const CLOUDFLARE_WORKERS_AI_BASE_URL =\n\t\"https://api.cloudflare.com/client/v4/accounts/{CLOUDFLARE_ACCOUNT_ID}/ai/v1\";\n\n/** Workers AI REST endpoint root; model runs are posted to `run`. */\nexport const CLOUDFLARE_WORKERS_AI_REST_BASE_URL =\n\t\"https://api.cloudflare.com/client/v4/accounts/{CLOUDFLARE_ACCOUNT_ID}/ai\";\n\n/** AI Gateway Unified API. https://developers.cloudflare.com/ai-gateway/usage/unified-api/ */\nexport const CLOUDFLARE_AI_GATEWAY_COMPAT_BASE_URL =\n\t\"https://gateway.ai.cloudflare.com/v1/{CLOUDFLARE_ACCOUNT_ID}/{CLOUDFLARE_GATEWAY_ID}/compat\";\n\n/** AI Gateway → OpenAI passthrough. Used until /compat supports /v1/responses. */\nexport const CLOUDFLARE_AI_GATEWAY_OPENAI_BASE_URL =\n\t\"https://gateway.ai.cloudflare.com/v1/{CLOUDFLARE_ACCOUNT_ID}/{CLOUDFLARE_GATEWAY_ID}/openai\";\n\n/** AI Gateway → Anthropic passthrough. */\nexport const CLOUDFLARE_AI_GATEWAY_ANTHROPIC_BASE_URL =\n\t\"https://gateway.ai.cloudflare.com/v1/{CLOUDFLARE_ACCOUNT_ID}/{CLOUDFLARE_GATEWAY_ID}/anthropic\";\n"]}
@@ -0,0 +1,26 @@
1
+ import type { Tool } from "../types.ts";
2
+ /** Returns true when a provider's strict mode rejects this schema keyword with this value. */
3
+ export type UnsupportedStrictSchemaKeywordCheck = (key: string, value: unknown) => boolean;
4
+ /** Convert a tool schema to the strict subset expected by provider constrained sampling. */
5
+ export declare function makeStrictJsonSchema(schema: Tool["parameters"], isUnsupportedKeyword?: UnsupportedStrictSchemaKeywordCheck): Record<string, unknown>;
6
+ export declare function getJsonSchemaToolParameters(tool: Tool, strict: boolean | undefined): Tool["parameters"];
7
+ export interface GrammarConstrainedSampling {
8
+ format: "lark" | "regex";
9
+ definition: string;
10
+ inputProperty: string;
11
+ }
12
+ export interface GrammarToolInputJsonBuffer {
13
+ input: string;
14
+ started: boolean;
15
+ closed: boolean;
16
+ }
17
+ export declare function getGrammarToolInput(toolName: string, arguments_: Record<string, unknown>, inputProperty: string): string;
18
+ export declare function appendGrammarToolInputJsonDelta(buffer: GrammarToolInputJsonBuffer, inputProperty: string, nextInput: string, close: boolean): string | undefined;
19
+ /**
20
+ * Decide whether a JSON-schema tool is sent in strict mode. `isUnsupportedKeyword` lets a provider
21
+ * reject extra keywords its strict mode does not accept, so "prefer" tools fall back to non-strict.
22
+ */
23
+ export declare function resolveJsonSchemaStrictSampling(tool: Tool, supportsStrictMode: boolean, isUnsupportedKeyword?: UnsupportedStrictSchemaKeywordCheck): boolean | undefined;
24
+ export declare function resolveGrammarConstrainedSampling(tool: Tool, supportsOpenAIGrammarTools: boolean): GrammarConstrainedSampling | undefined;
25
+ export declare function createGrammarToolInputProperties(tools: Tool[] | undefined, supportsOpenAIGrammarTools: boolean): ReadonlyMap<string, string>;
26
+ //# 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;AAWxC,8FAA8F;AAC9F,MAAM,MAAM,mCAAmC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC;AAiH3F,4FAA4F;AAC5F,wBAAgB,oBAAoB,CACnC,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,EAC1B,oBAAoB,CAAC,EAAE,mCAAmC,GACxD,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAUzB;AAED,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,GAAG,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,CAEvG;AAED,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;;;GAGG;AACH,wBAAgB,+BAA+B,CAC9C,IAAI,EAAE,IAAI,EACV,kBAAkB,EAAE,OAAO,EAC3B,oBAAoB,CAAC,EAAE,mCAAmC,GACxD,OAAO,GAAG,SAAS,CAoBrB;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"}