@copilotkit/aimock 1.45.0 → 1.46.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 (426) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/CHANGELOG.md +24 -0
  4. package/README.md +7 -1
  5. package/dist/agui-mock.cjs +25 -25
  6. package/dist/agui-mock.cjs.map +1 -1
  7. package/dist/agui-mock.d.cts.map +1 -1
  8. package/dist/agui-mock.d.ts.map +1 -1
  9. package/dist/agui-mock.js +25 -25
  10. package/dist/agui-mock.js.map +1 -1
  11. package/dist/agui-types.d.ts.map +1 -1
  12. package/dist/aimock-cli.cjs +15 -1
  13. package/dist/aimock-cli.cjs.map +1 -1
  14. package/dist/aimock-cli.d.cts.map +1 -1
  15. package/dist/aimock-cli.d.ts.map +1 -1
  16. package/dist/aimock-cli.js +16 -2
  17. package/dist/aimock-cli.js.map +1 -1
  18. package/dist/api-key-auth.cjs +10 -9
  19. package/dist/api-key-auth.cjs.map +1 -1
  20. package/dist/api-key-auth.d.cts.map +1 -1
  21. package/dist/api-key-auth.d.ts.map +1 -1
  22. package/dist/api-key-auth.js +11 -10
  23. package/dist/api-key-auth.js.map +1 -1
  24. package/dist/batches.cjs +2 -4
  25. package/dist/batches.cjs.map +1 -1
  26. package/dist/batches.d.cts.map +1 -1
  27. package/dist/batches.d.ts.map +1 -1
  28. package/dist/batches.js +2 -4
  29. package/dist/batches.js.map +1 -1
  30. package/dist/bedrock-converse.cjs +61 -80
  31. package/dist/bedrock-converse.cjs.map +1 -1
  32. package/dist/bedrock-converse.d.cts.map +1 -1
  33. package/dist/bedrock-converse.d.ts.map +1 -1
  34. package/dist/bedrock-converse.js +58 -77
  35. package/dist/bedrock-converse.js.map +1 -1
  36. package/dist/bedrock.cjs +65 -97
  37. package/dist/bedrock.cjs.map +1 -1
  38. package/dist/bedrock.d.cts.map +1 -1
  39. package/dist/bedrock.d.ts.map +1 -1
  40. package/dist/bedrock.js +62 -94
  41. package/dist/bedrock.js.map +1 -1
  42. package/dist/byteplus-video.cjs +11 -10
  43. package/dist/byteplus-video.cjs.map +1 -1
  44. package/dist/byteplus-video.d.cts.map +1 -1
  45. package/dist/byteplus-video.d.ts.map +1 -1
  46. package/dist/byteplus-video.js +5 -4
  47. package/dist/byteplus-video.js.map +1 -1
  48. package/dist/chaos.cjs +5 -4
  49. package/dist/chaos.cjs.map +1 -1
  50. package/dist/chaos.d.cts.map +1 -1
  51. package/dist/chaos.d.ts.map +1 -1
  52. package/dist/chaos.js +5 -4
  53. package/dist/chaos.js.map +1 -1
  54. package/dist/cli.cjs +15 -0
  55. package/dist/cli.cjs.map +1 -1
  56. package/dist/cli.js +15 -0
  57. package/dist/cli.js.map +1 -1
  58. package/dist/cohere.cjs +49 -74
  59. package/dist/cohere.cjs.map +1 -1
  60. package/dist/cohere.d.cts.map +1 -1
  61. package/dist/cohere.d.ts.map +1 -1
  62. package/dist/cohere.js +47 -72
  63. package/dist/cohere.js.map +1 -1
  64. package/dist/config-loader.cjs +29 -1
  65. package/dist/config-loader.cjs.map +1 -1
  66. package/dist/config-loader.d.cts +7 -1
  67. package/dist/config-loader.d.cts.map +1 -1
  68. package/dist/config-loader.d.ts +7 -1
  69. package/dist/config-loader.d.ts.map +1 -1
  70. package/dist/config-loader.js +29 -2
  71. package/dist/config-loader.js.map +1 -1
  72. package/dist/count-tokens.cjs +146 -0
  73. package/dist/count-tokens.cjs.map +1 -0
  74. package/dist/count-tokens.js +146 -0
  75. package/dist/count-tokens.js.map +1 -0
  76. package/dist/elevenlabs-audio.cjs +36 -34
  77. package/dist/elevenlabs-audio.cjs.map +1 -1
  78. package/dist/elevenlabs-audio.d.cts.map +1 -1
  79. package/dist/elevenlabs-audio.d.ts.map +1 -1
  80. package/dist/elevenlabs-audio.js +33 -31
  81. package/dist/elevenlabs-audio.js.map +1 -1
  82. package/dist/elevenlabs-voice.cjs +38 -37
  83. package/dist/elevenlabs-voice.cjs.map +1 -1
  84. package/dist/elevenlabs-voice.d.cts.map +1 -1
  85. package/dist/elevenlabs-voice.d.ts.map +1 -1
  86. package/dist/elevenlabs-voice.js +33 -32
  87. package/dist/elevenlabs-voice.js.map +1 -1
  88. package/dist/embedding-request.cjs +16 -0
  89. package/dist/embedding-request.cjs.map +1 -0
  90. package/dist/embedding-request.js +14 -0
  91. package/dist/embedding-request.js.map +1 -0
  92. package/dist/embeddings.cjs +30 -20
  93. package/dist/embeddings.cjs.map +1 -1
  94. package/dist/embeddings.d.cts.map +1 -1
  95. package/dist/embeddings.d.ts.map +1 -1
  96. package/dist/embeddings.js +30 -20
  97. package/dist/embeddings.js.map +1 -1
  98. package/dist/fal-audio.cjs +45 -43
  99. package/dist/fal-audio.cjs.map +1 -1
  100. package/dist/fal-audio.d.cts.map +1 -1
  101. package/dist/fal-audio.d.ts.map +1 -1
  102. package/dist/fal-audio.js +42 -40
  103. package/dist/fal-audio.js.map +1 -1
  104. package/dist/fal.cjs +17 -15
  105. package/dist/fal.cjs.map +1 -1
  106. package/dist/fal.js +16 -14
  107. package/dist/fal.js.map +1 -1
  108. package/dist/files.cjs +2 -4
  109. package/dist/files.cjs.map +1 -1
  110. package/dist/files.d.cts.map +1 -1
  111. package/dist/files.d.ts.map +1 -1
  112. package/dist/files.js +2 -4
  113. package/dist/files.js.map +1 -1
  114. package/dist/fine-tuning.cjs +2 -4
  115. package/dist/fine-tuning.cjs.map +1 -1
  116. package/dist/fine-tuning.d.cts.map +1 -1
  117. package/dist/fine-tuning.d.ts.map +1 -1
  118. package/dist/fine-tuning.js +2 -4
  119. package/dist/fine-tuning.js.map +1 -1
  120. package/dist/fixture-loader.cjs +37 -42
  121. package/dist/fixture-loader.cjs.map +1 -1
  122. package/dist/fixture-loader.d.cts.map +1 -1
  123. package/dist/fixture-loader.d.ts.map +1 -1
  124. package/dist/fixture-loader.js +37 -42
  125. package/dist/fixture-loader.js.map +1 -1
  126. package/dist/gemini-embeddings.cjs +26 -24
  127. package/dist/gemini-embeddings.cjs.map +1 -1
  128. package/dist/gemini-embeddings.js +26 -24
  129. package/dist/gemini-embeddings.js.map +1 -1
  130. package/dist/gemini-interactions.cjs +50 -35
  131. package/dist/gemini-interactions.cjs.map +1 -1
  132. package/dist/gemini-interactions.d.cts +0 -1
  133. package/dist/gemini-interactions.d.cts.map +1 -1
  134. package/dist/gemini-interactions.d.ts +0 -1
  135. package/dist/gemini-interactions.d.ts.map +1 -1
  136. package/dist/gemini-interactions.js +49 -34
  137. package/dist/gemini-interactions.js.map +1 -1
  138. package/dist/gemini.cjs +57 -67
  139. package/dist/gemini.cjs.map +1 -1
  140. package/dist/gemini.d.cts.map +1 -1
  141. package/dist/gemini.d.ts.map +1 -1
  142. package/dist/gemini.js +56 -67
  143. package/dist/gemini.js.map +1 -1
  144. package/dist/grok-video.cjs +14 -12
  145. package/dist/grok-video.cjs.map +1 -1
  146. package/dist/grok-video.d.cts.map +1 -1
  147. package/dist/grok-video.d.ts.map +1 -1
  148. package/dist/grok-video.js +8 -6
  149. package/dist/grok-video.js.map +1 -1
  150. package/dist/helpers.cjs +11 -68
  151. package/dist/helpers.cjs.map +1 -1
  152. package/dist/helpers.d.cts.map +1 -1
  153. package/dist/helpers.d.ts.map +1 -1
  154. package/dist/helpers.js +12 -67
  155. package/dist/helpers.js.map +1 -1
  156. package/dist/images.cjs +30 -28
  157. package/dist/images.cjs.map +1 -1
  158. package/dist/images.d.cts.map +1 -1
  159. package/dist/images.d.ts.map +1 -1
  160. package/dist/images.js +27 -25
  161. package/dist/images.js.map +1 -1
  162. package/dist/index.d.cts +2 -2
  163. package/dist/index.d.ts +2 -2
  164. package/dist/journal.cjs +3 -1
  165. package/dist/journal.cjs.map +1 -1
  166. package/dist/journal.d.cts.map +1 -1
  167. package/dist/journal.d.ts.map +1 -1
  168. package/dist/journal.js +2 -1
  169. package/dist/journal.js.map +1 -1
  170. package/dist/llmock.cjs +3 -0
  171. package/dist/llmock.cjs.map +1 -1
  172. package/dist/llmock.d.cts.map +1 -1
  173. package/dist/llmock.d.ts.map +1 -1
  174. package/dist/llmock.js +3 -0
  175. package/dist/llmock.js.map +1 -1
  176. package/dist/mcp-fakes.d.cts.map +1 -1
  177. package/dist/mcp-handler.cjs +14 -4
  178. package/dist/mcp-handler.cjs.map +1 -1
  179. package/dist/mcp-handler.js +14 -4
  180. package/dist/mcp-handler.js.map +1 -1
  181. package/dist/mcp-recorder.cjs +2 -1
  182. package/dist/mcp-recorder.cjs.map +1 -1
  183. package/dist/mcp-recorder.js +3 -2
  184. package/dist/mcp-recorder.js.map +1 -1
  185. package/dist/messages.cjs +111 -96
  186. package/dist/messages.cjs.map +1 -1
  187. package/dist/messages.d.cts.map +1 -1
  188. package/dist/messages.d.ts.map +1 -1
  189. package/dist/messages.js +109 -95
  190. package/dist/messages.js.map +1 -1
  191. package/dist/metrics.cjs +5 -2
  192. package/dist/metrics.cjs.map +1 -1
  193. package/dist/metrics.d.cts.map +1 -1
  194. package/dist/metrics.d.ts.map +1 -1
  195. package/dist/metrics.js +6 -3
  196. package/dist/metrics.js.map +1 -1
  197. package/dist/model-utils.cjs +1 -0
  198. package/dist/model-utils.cjs.map +1 -1
  199. package/dist/model-utils.js +1 -1
  200. package/dist/model-utils.js.map +1 -1
  201. package/dist/moderation.cjs +15 -12
  202. package/dist/moderation.cjs.map +1 -1
  203. package/dist/moderation.js +14 -11
  204. package/dist/moderation.js.map +1 -1
  205. package/dist/ollama.cjs +128 -68
  206. package/dist/ollama.cjs.map +1 -1
  207. package/dist/ollama.d.cts.map +1 -1
  208. package/dist/ollama.d.ts.map +1 -1
  209. package/dist/ollama.js +124 -64
  210. package/dist/ollama.js.map +1 -1
  211. package/dist/openapi.cjs +323 -3
  212. package/dist/openapi.cjs.map +1 -1
  213. package/dist/openapi.d.cts.map +1 -1
  214. package/dist/openapi.d.ts.map +1 -1
  215. package/dist/openapi.js +324 -4
  216. package/dist/openapi.js.map +1 -1
  217. package/dist/openrouter-chat.cjs +11 -155
  218. package/dist/openrouter-chat.cjs.map +1 -1
  219. package/dist/openrouter-chat.js +11 -155
  220. package/dist/openrouter-chat.js.map +1 -1
  221. package/dist/openrouter-video.cjs +76 -71
  222. package/dist/openrouter-video.cjs.map +1 -1
  223. package/dist/openrouter-video.d.cts.map +1 -1
  224. package/dist/openrouter-video.d.ts.map +1 -1
  225. package/dist/openrouter-video.js +63 -58
  226. package/dist/openrouter-video.js.map +1 -1
  227. package/dist/recorder.cjs +176 -95
  228. package/dist/recorder.cjs.map +1 -1
  229. package/dist/recorder.d.cts.map +1 -1
  230. package/dist/recorder.d.ts.map +1 -1
  231. package/dist/recorder.js +176 -95
  232. package/dist/recorder.js.map +1 -1
  233. package/dist/rerank.cjs +13 -11
  234. package/dist/rerank.cjs.map +1 -1
  235. package/dist/rerank.js +12 -10
  236. package/dist/rerank.js.map +1 -1
  237. package/dist/response/catalog/anthropic-page.cjs +39 -0
  238. package/dist/response/catalog/anthropic-page.cjs.map +1 -0
  239. package/dist/response/catalog/anthropic-page.js +38 -0
  240. package/dist/response/catalog/anthropic-page.js.map +1 -0
  241. package/dist/response/catalog/collect.cjs +61 -0
  242. package/dist/response/catalog/collect.cjs.map +1 -0
  243. package/dist/response/catalog/collect.js +59 -0
  244. package/dist/response/catalog/collect.js.map +1 -0
  245. package/dist/response/catalog/gemini-page.cjs +25 -0
  246. package/dist/response/catalog/gemini-page.cjs.map +1 -0
  247. package/dist/response/catalog/gemini-page.js +24 -0
  248. package/dist/response/catalog/gemini-page.js.map +1 -0
  249. package/dist/response/catalog/render.cjs +182 -0
  250. package/dist/response/catalog/render.cjs.map +1 -0
  251. package/dist/response/catalog/render.js +171 -0
  252. package/dist/response/catalog/render.js.map +1 -0
  253. package/dist/response/errors.cjs +225 -0
  254. package/dist/response/errors.cjs.map +1 -0
  255. package/dist/response/errors.js +224 -0
  256. package/dist/response/errors.js.map +1 -0
  257. package/dist/response/finish.cjs +39 -0
  258. package/dist/response/finish.cjs.map +1 -0
  259. package/dist/response/finish.js +35 -0
  260. package/dist/response/finish.js.map +1 -0
  261. package/dist/response/policy.cjs +126 -0
  262. package/dist/response/policy.cjs.map +1 -0
  263. package/dist/response/policy.js +120 -0
  264. package/dist/response/policy.js.map +1 -0
  265. package/dist/response/profiles.cjs +69 -0
  266. package/dist/response/profiles.cjs.map +1 -0
  267. package/dist/response/profiles.js +65 -0
  268. package/dist/response/profiles.js.map +1 -0
  269. package/dist/response/usage/codecs/anthropic.cjs +52 -0
  270. package/dist/response/usage/codecs/anthropic.cjs.map +1 -0
  271. package/dist/response/usage/codecs/anthropic.js +50 -0
  272. package/dist/response/usage/codecs/anthropic.js.map +1 -0
  273. package/dist/response/usage/codecs/cohere.cjs +36 -0
  274. package/dist/response/usage/codecs/cohere.cjs.map +1 -0
  275. package/dist/response/usage/codecs/cohere.js +35 -0
  276. package/dist/response/usage/codecs/cohere.js.map +1 -0
  277. package/dist/response/usage/codecs/converse.cjs +16 -0
  278. package/dist/response/usage/codecs/converse.cjs.map +1 -0
  279. package/dist/response/usage/codecs/converse.js +15 -0
  280. package/dist/response/usage/codecs/converse.js.map +1 -0
  281. package/dist/response/usage/codecs/gemini.cjs +31 -0
  282. package/dist/response/usage/codecs/gemini.cjs.map +1 -0
  283. package/dist/response/usage/codecs/gemini.js +31 -0
  284. package/dist/response/usage/codecs/gemini.js.map +1 -0
  285. package/dist/response/usage/codecs/interactions.cjs +22 -0
  286. package/dist/response/usage/codecs/interactions.cjs.map +1 -0
  287. package/dist/response/usage/codecs/interactions.js +21 -0
  288. package/dist/response/usage/codecs/interactions.js.map +1 -0
  289. package/dist/response/usage/codecs/ollama.cjs +17 -0
  290. package/dist/response/usage/codecs/ollama.cjs.map +1 -0
  291. package/dist/response/usage/codecs/ollama.js +17 -0
  292. package/dist/response/usage/codecs/ollama.js.map +1 -0
  293. package/dist/response/usage/codecs/openai.cjs +52 -0
  294. package/dist/response/usage/codecs/openai.cjs.map +1 -0
  295. package/dist/response/usage/codecs/openai.js +50 -0
  296. package/dist/response/usage/codecs/openai.js.map +1 -0
  297. package/dist/response/usage/codecs/openrouter.cjs +68 -0
  298. package/dist/response/usage/codecs/openrouter.cjs.map +1 -0
  299. package/dist/response/usage/codecs/openrouter.js +67 -0
  300. package/dist/response/usage/codecs/openrouter.js.map +1 -0
  301. package/dist/response/usage/codecs/realtime.cjs +19 -0
  302. package/dist/response/usage/codecs/realtime.cjs.map +1 -0
  303. package/dist/response/usage/codecs/realtime.js +18 -0
  304. package/dist/response/usage/codecs/realtime.js.map +1 -0
  305. package/dist/response/usage/codecs/responses.cjs +21 -0
  306. package/dist/response/usage/codecs/responses.cjs.map +1 -0
  307. package/dist/response/usage/codecs/responses.js +20 -0
  308. package/dist/response/usage/codecs/responses.js.map +1 -0
  309. package/dist/response/usage/estimate.cjs +23 -0
  310. package/dist/response/usage/estimate.cjs.map +1 -0
  311. package/dist/response/usage/estimate.js +21 -0
  312. package/dist/response/usage/estimate.js.map +1 -0
  313. package/dist/response/usage/fields.cjs +72 -0
  314. package/dist/response/usage/fields.cjs.map +1 -0
  315. package/dist/response/usage/fields.js +70 -0
  316. package/dist/response/usage/fields.js.map +1 -0
  317. package/dist/response/usage/recording.cjs +52 -0
  318. package/dist/response/usage/recording.cjs.map +1 -0
  319. package/dist/response/usage/recording.js +52 -0
  320. package/dist/response/usage/recording.js.map +1 -0
  321. package/dist/responses.cjs +45 -58
  322. package/dist/responses.cjs.map +1 -1
  323. package/dist/responses.d.cts.map +1 -1
  324. package/dist/responses.d.ts.map +1 -1
  325. package/dist/responses.js +44 -57
  326. package/dist/responses.js.map +1 -1
  327. package/dist/route-registry.cjs +45 -0
  328. package/dist/route-registry.cjs.map +1 -1
  329. package/dist/route-registry.d.cts.map +1 -1
  330. package/dist/route-registry.d.ts.map +1 -1
  331. package/dist/route-registry.js +41 -1
  332. package/dist/route-registry.js.map +1 -1
  333. package/dist/router.cjs +4 -0
  334. package/dist/router.cjs.map +1 -1
  335. package/dist/router.d.cts.map +1 -1
  336. package/dist/router.d.ts.map +1 -1
  337. package/dist/router.js +3 -0
  338. package/dist/router.js.map +1 -1
  339. package/dist/search.cjs +13 -11
  340. package/dist/search.cjs.map +1 -1
  341. package/dist/search.js +12 -10
  342. package/dist/search.js.map +1 -1
  343. package/dist/server.cjs +222 -146
  344. package/dist/server.cjs.map +1 -1
  345. package/dist/server.d.cts.map +1 -1
  346. package/dist/server.d.ts.map +1 -1
  347. package/dist/server.js +223 -147
  348. package/dist/server.js.map +1 -1
  349. package/dist/speech.cjs +20 -18
  350. package/dist/speech.cjs.map +1 -1
  351. package/dist/speech.d.cts.map +1 -1
  352. package/dist/speech.d.ts.map +1 -1
  353. package/dist/speech.js +19 -17
  354. package/dist/speech.js.map +1 -1
  355. package/dist/sse-writer.cjs +7 -0
  356. package/dist/sse-writer.cjs.map +1 -1
  357. package/dist/sse-writer.d.cts.map +1 -1
  358. package/dist/sse-writer.d.ts.map +1 -1
  359. package/dist/sse-writer.js +7 -1
  360. package/dist/sse-writer.js.map +1 -1
  361. package/dist/stream-collapse.cjs +118 -11
  362. package/dist/stream-collapse.cjs.map +1 -1
  363. package/dist/stream-collapse.d.cts +10 -9
  364. package/dist/stream-collapse.d.cts.map +1 -1
  365. package/dist/stream-collapse.d.ts +10 -9
  366. package/dist/stream-collapse.d.ts.map +1 -1
  367. package/dist/stream-collapse.js +118 -11
  368. package/dist/stream-collapse.js.map +1 -1
  369. package/dist/transcription.cjs +12 -10
  370. package/dist/transcription.cjs.map +1 -1
  371. package/dist/transcription.d.cts.map +1 -1
  372. package/dist/transcription.d.ts.map +1 -1
  373. package/dist/transcription.js +11 -9
  374. package/dist/transcription.js.map +1 -1
  375. package/dist/types.cjs.map +1 -1
  376. package/dist/types.d.cts +62 -3
  377. package/dist/types.d.cts.map +1 -1
  378. package/dist/types.d.ts +62 -3
  379. package/dist/types.d.ts.map +1 -1
  380. package/dist/types.js.map +1 -1
  381. package/dist/vector-mock.cjs +3 -8
  382. package/dist/vector-mock.cjs.map +1 -1
  383. package/dist/vector-mock.d.cts.map +1 -1
  384. package/dist/vector-mock.d.ts.map +1 -1
  385. package/dist/vector-mock.js +3 -8
  386. package/dist/vector-mock.js.map +1 -1
  387. package/dist/vector-stores.cjs +2 -4
  388. package/dist/vector-stores.cjs.map +1 -1
  389. package/dist/vector-stores.d.cts.map +1 -1
  390. package/dist/vector-stores.d.ts.map +1 -1
  391. package/dist/vector-stores.js +2 -4
  392. package/dist/vector-stores.js.map +1 -1
  393. package/dist/veo-video.cjs +16 -14
  394. package/dist/veo-video.cjs.map +1 -1
  395. package/dist/veo-video.js +10 -8
  396. package/dist/veo-video.js.map +1 -1
  397. package/dist/video.cjs +21 -19
  398. package/dist/video.cjs.map +1 -1
  399. package/dist/video.d.cts.map +1 -1
  400. package/dist/video.d.ts.map +1 -1
  401. package/dist/video.js +20 -18
  402. package/dist/video.js.map +1 -1
  403. package/dist/ws-gemini-live.cjs +11 -3
  404. package/dist/ws-gemini-live.cjs.map +1 -1
  405. package/dist/ws-gemini-live.d.cts +0 -1
  406. package/dist/ws-gemini-live.d.cts.map +1 -1
  407. package/dist/ws-gemini-live.d.ts +0 -1
  408. package/dist/ws-gemini-live.d.ts.map +1 -1
  409. package/dist/ws-gemini-live.js +10 -2
  410. package/dist/ws-gemini-live.js.map +1 -1
  411. package/dist/ws-live.cjs +6 -5
  412. package/dist/ws-live.cjs.map +1 -1
  413. package/dist/ws-live.js +5 -4
  414. package/dist/ws-live.js.map +1 -1
  415. package/dist/ws-realtime.cjs +28 -54
  416. package/dist/ws-realtime.cjs.map +1 -1
  417. package/dist/ws-realtime.d.cts.map +1 -1
  418. package/dist/ws-realtime.d.ts.map +1 -1
  419. package/dist/ws-realtime.js +25 -51
  420. package/dist/ws-realtime.js.map +1 -1
  421. package/dist/ws-responses.cjs +8 -6
  422. package/dist/ws-responses.cjs.map +1 -1
  423. package/dist/ws-responses.js +7 -5
  424. package/dist/ws-responses.js.map +1 -1
  425. package/package.json +4 -1
  426. package/skills/write-fixtures/SKILL.md +25 -16
package/dist/bedrock.cjs CHANGED
@@ -1,39 +1,21 @@
1
+ const require_errors = require('./response/errors.cjs');
2
+ const require_policy = require('./response/policy.cjs');
1
3
  const require_helpers = require('./helpers.cjs');
2
4
  const require_sse_writer = require('./sse-writer.cjs');
3
5
  const require_chaos = require('./chaos.cjs');
4
6
  const require_misbehavior = require('./misbehavior.cjs');
5
7
  const require_router = require('./router.cjs');
8
+ const require_anthropic = require('./response/usage/codecs/anthropic.cjs');
6
9
  const require_recorder = require('./recorder.cjs');
7
10
  const require_interruption = require('./interruption.cjs');
11
+ const require_finish = require('./response/finish.cjs');
8
12
  const require_messages = require('./messages.cjs');
9
13
  const require_aws_event_stream = require('./aws-event-stream.cjs');
10
14
 
11
15
  //#region src/bedrock.ts
12
16
  function bedrockStopReason(overrideFinishReason, defaultReason) {
13
17
  if (!overrideFinishReason) return defaultReason;
14
- if (overrideFinishReason === "stop") return "end_turn";
15
- if (overrideFinishReason === "tool_calls") return "tool_use";
16
- if (overrideFinishReason === "length") return "max_tokens";
17
- return overrideFinishReason;
18
- }
19
- /**
20
- * Build a Bedrock-style usage object from optional overrides.
21
- *
22
- * When no overrides are provided (the common case for mock fixtures),
23
- * returns all-zero token counts. This is intentional — aimock does not
24
- * attempt to estimate token usage from fixture content. Callers that
25
- * need realistic usage numbers should set `usage` in their fixture's
26
- * response overrides.
27
- */
28
- function bedrockUsage(overrides) {
29
- if (!overrides?.usage) return {
30
- input_tokens: 0,
31
- output_tokens: 0
32
- };
33
- return {
34
- input_tokens: overrides.usage.input_tokens ?? overrides.usage.prompt_tokens ?? 0,
35
- output_tokens: overrides.usage.output_tokens ?? overrides.usage.completion_tokens ?? 0
36
- };
18
+ return require_finish.mapAnthropicFinish(overrideFinishReason);
37
19
  }
38
20
  function extractTextContent(content) {
39
21
  if (content === null || content === void 0) return "";
@@ -146,7 +128,7 @@ function buildBedrockTextResponse(content, model, reasoning, overrides) {
146
128
  model: overrides?.model ?? model,
147
129
  stop_reason: bedrockStopReason(overrides?.finishReason, "end_turn"),
148
130
  stop_sequence: null,
149
- usage: bedrockUsage(overrides)
131
+ usage: require_anthropic.render(require_anthropic.resolve(overrides), "bedrock-final")
150
132
  };
151
133
  }
152
134
  function buildBedrockToolCallResponse(toolCalls, model, logger, reasoning, overrides) {
@@ -173,7 +155,7 @@ function buildBedrockToolCallResponse(toolCalls, model, logger, reasoning, overr
173
155
  model: overrides?.model ?? model,
174
156
  stop_reason: bedrockStopReason(overrides?.finishReason, "tool_use"),
175
157
  stop_sequence: null,
176
- usage: bedrockUsage(overrides)
158
+ usage: require_anthropic.render(require_anthropic.resolve(overrides), "bedrock-final")
177
159
  };
178
160
  }
179
161
  /**
@@ -217,7 +199,7 @@ function buildBedrockBlocksResponse(blocks, model, logger, reasoning, overrides)
217
199
  model: overrides?.model ?? model,
218
200
  stop_reason: bedrockStopReason(overrides?.finishReason, outcome.hasToolCalls ? "tool_use" : "end_turn"),
219
201
  stop_sequence: null,
220
- usage: bedrockUsage(overrides)
202
+ usage: require_anthropic.render(require_anthropic.resolve(overrides), "bedrock-final")
221
203
  };
222
204
  }
223
205
  async function handleBedrock(req, res, raw, modelId, fixtures, journal, defaults, setCorsHeaders) {
@@ -239,10 +221,10 @@ async function handleBedrock(req, res, raw, modelId, fixtures, journal, defaults
239
221
  fixture: null
240
222
  }
241
223
  });
242
- require_sse_writer.writeErrorResponse(res, 400, JSON.stringify({ error: {
224
+ require_sse_writer.writeErrorResponse(res, 400, require_errors.renderError("bedrock", "validation", {
243
225
  message: `Malformed JSON: ${detail}`,
244
226
  type: "invalid_request_error"
245
- } }));
227
+ }).body);
246
228
  return;
247
229
  }
248
230
  if (!require_helpers.isJsonObject(bedrockReq)) {
@@ -256,10 +238,10 @@ async function handleBedrock(req, res, raw, modelId, fixtures, journal, defaults
256
238
  fixture: null
257
239
  }
258
240
  });
259
- require_sse_writer.writeErrorResponse(res, 400, JSON.stringify({ error: {
241
+ require_sse_writer.writeErrorResponse(res, 400, require_errors.renderError("bedrock", "validation", {
260
242
  message: "Request body must be a JSON object",
261
243
  type: "invalid_request_error"
262
- } }));
244
+ }).body);
263
245
  return;
264
246
  }
265
247
  const bedrockShapeError = require_helpers.validateChatMessages(bedrockReq.messages, { checkToolCalls: false }) ?? require_helpers.validateToolsField(bedrockReq.tools) ?? (bedrockReq.system !== void 0 && bedrockReq.system !== null && typeof bedrockReq.system !== "string" && !Array.isArray(bedrockReq.system) ? "system must be a string or an array" : null);
@@ -274,10 +256,10 @@ async function handleBedrock(req, res, raw, modelId, fixtures, journal, defaults
274
256
  fixture: null
275
257
  }
276
258
  });
277
- require_sse_writer.writeErrorResponse(res, 400, JSON.stringify({ error: {
259
+ require_sse_writer.writeErrorResponse(res, 400, require_errors.renderError("bedrock", "validation", {
278
260
  message: `Invalid request: ${bedrockShapeError}`,
279
261
  type: "invalid_request_error"
280
- } }));
262
+ }).body);
281
263
  return;
282
264
  }
283
265
  const completionReq = bedrockToCompletionRequest(bedrockReq, modelId, logger);
@@ -295,7 +277,7 @@ async function handleBedrock(req, res, raw, modelId, fixtures, journal, defaults
295
277
  body: completionReq
296
278
  }, fixture ? "fixture" : "proxy", defaults.registry, defaults.logger)) return;
297
279
  if (!fixture) {
298
- if (require_helpers.resolveStrictMode(defaults.strict, req.headers)) {
280
+ if (require_policy.resolveRequestDecisions(defaults.strict, req.headers).fixtureMiss) {
299
281
  const strictStatus = 503;
300
282
  const strictMessage = require_helpers.strictNoMatchMessage(skippedBySequenceOrTurn);
301
283
  logger.error(require_helpers.strictNoMatchLogLine(req.method ?? "POST", urlPath, skippedBySequenceOrTurn));
@@ -307,13 +289,13 @@ async function handleBedrock(req, res, raw, modelId, fixtures, journal, defaults
307
289
  response: {
308
290
  status: strictStatus,
309
291
  fixture: null,
310
- ...require_helpers.strictOverrideField(defaults.strict, req.headers)
292
+ ...require_policy.strictOverrideField(defaults.strict, req.headers)
311
293
  }
312
294
  });
313
- require_sse_writer.writeErrorResponse(res, strictStatus, JSON.stringify({ error: {
295
+ require_sse_writer.writeErrorResponse(res, strictStatus, require_errors.renderError("bedrock", "strict-miss", {
314
296
  message: strictMessage,
315
297
  type: "invalid_request_error"
316
- } }));
298
+ }).body);
317
299
  return;
318
300
  }
319
301
  if (defaults.record) {
@@ -342,13 +324,13 @@ async function handleBedrock(req, res, raw, modelId, fixtures, journal, defaults
342
324
  response: {
343
325
  status: 404,
344
326
  fixture: null,
345
- ...require_helpers.strictOverrideField(defaults.strict, req.headers)
327
+ ...require_policy.strictOverrideField(defaults.strict, req.headers)
346
328
  }
347
329
  });
348
- require_sse_writer.writeErrorResponse(res, 404, JSON.stringify({ error: {
330
+ require_sse_writer.writeErrorResponse(res, 404, require_errors.renderError("bedrock", "fixture-miss", {
349
331
  message: "No fixture matched",
350
332
  type: "invalid_request_error"
351
- } }));
333
+ }).body);
352
334
  return;
353
335
  }
354
336
  const response = await require_helpers.resolveResponse(fixture, completionReq);
@@ -385,13 +367,13 @@ async function handleBedrock(req, res, raw, modelId, fixtures, journal, defaults
385
367
  fixture
386
368
  }
387
369
  });
388
- const type = misbehavior.status === 400 ? "ValidationException" : "NotImplementedException";
389
- res.setHeader("x-amzn-errortype", type);
390
- require_sse_writer.writeErrorResponse(res, misbehavior.status, JSON.stringify({
391
- __type: type,
370
+ const renderedError = require_errors.renderError("bedrock", "misbehavior", {
371
+ type: misbehavior.status === 400 ? "ValidationException" : "NotImplementedException",
392
372
  code: misbehavior.code,
393
373
  message: misbehavior.message
394
- }));
374
+ });
375
+ for (const [name, value] of Object.entries(renderedError.headers ?? {})) res.setHeader(name, value);
376
+ require_sse_writer.writeErrorResponse(res, misbehavior.status, renderedError.body);
395
377
  return;
396
378
  }
397
379
  if (misbehavior.kind === "applied") {
@@ -400,7 +382,7 @@ async function handleBedrock(req, res, raw, modelId, fixtures, journal, defaults
400
382
  stream: false,
401
383
  chunkSize: Math.max(1, fixture.chunkSize ?? defaults.chunkSize),
402
384
  logger,
403
- strict: require_helpers.resolveStrictMode(defaults.strict, req.headers)
385
+ strict: require_policy.resolveRequestDecisions(defaults.strict, req.headers).reasoningSuppression
404
386
  });
405
387
  if (prepared.stream) throw new TypeError("InvokeModel requires non-stream Claude output");
406
388
  require_misbehavior.recordMisbehaviorOutcome({
@@ -434,20 +416,13 @@ async function handleBedrock(req, res, raw, modelId, fixtures, journal, defaults
434
416
  fixture
435
417
  }
436
418
  });
437
- const anthropicError = {
438
- type: "error",
439
- error: {
440
- type: response.error.type ?? "api_error",
441
- message: response.error.message
442
- }
443
- };
444
- require_sse_writer.writeErrorResponse(res, status, JSON.stringify(anthropicError), { retryAfter: response.retryAfter });
419
+ require_sse_writer.writeErrorResponse(res, status, require_errors.renderError("bedrock", "fixture", response.error).body, { retryAfter: response.retryAfter });
445
420
  return;
446
421
  }
447
422
  if (require_helpers.isCombinedFixtureResponse(response)) {
448
423
  if (response.webSearches?.length) logger.warn("webSearches in fixture response are not supported for Bedrock API — ignoring");
449
424
  const overrides = require_helpers.extractOverrides(response);
450
- const effReasoning = require_helpers.resolveReasoningForModel(response.reasoning, completionReq.model, require_helpers.resolveStrictMode(defaults.strict, req.headers), logger);
425
+ const effReasoning = require_helpers.resolveReasoningForModel(response.reasoning, completionReq.model, require_policy.resolveRequestDecisions(defaults.strict, req.headers).reasoningSuppression, logger);
451
426
  addResponseEntry({
452
427
  method: req.method ?? "POST",
453
428
  path: urlPath,
@@ -479,7 +454,7 @@ async function handleBedrock(req, res, raw, modelId, fixtures, journal, defaults
479
454
  if (require_helpers.isTextResponse(response)) {
480
455
  if (response.webSearches?.length) logger.warn("webSearches in fixture response are not supported for Bedrock API — ignoring");
481
456
  const overrides = require_helpers.extractOverrides(response);
482
- const effReasoning = require_helpers.resolveReasoningForModel(response.reasoning, completionReq.model, require_helpers.resolveStrictMode(defaults.strict, req.headers), logger);
457
+ const effReasoning = require_helpers.resolveReasoningForModel(response.reasoning, completionReq.model, require_policy.resolveRequestDecisions(defaults.strict, req.headers).reasoningSuppression, logger);
483
458
  addResponseEntry({
484
459
  method: req.method ?? "POST",
485
460
  path: urlPath,
@@ -498,7 +473,7 @@ async function handleBedrock(req, res, raw, modelId, fixtures, journal, defaults
498
473
  if (require_helpers.isToolCallResponse(response)) {
499
474
  if (response.webSearches?.length) logger.warn("webSearches in fixture response are not supported for Bedrock API — ignoring");
500
475
  const overrides = require_helpers.extractOverrides(response);
501
- const effReasoning = require_helpers.resolveReasoningForModel(response.reasoning, completionReq.model, require_helpers.resolveStrictMode(defaults.strict, req.headers), logger);
476
+ const effReasoning = require_helpers.resolveReasoningForModel(response.reasoning, completionReq.model, require_policy.resolveRequestDecisions(defaults.strict, req.headers).reasoningSuppression, logger);
502
477
  addResponseEntry({
503
478
  method: req.method ?? "POST",
504
479
  path: urlPath,
@@ -524,10 +499,10 @@ async function handleBedrock(req, res, raw, modelId, fixtures, journal, defaults
524
499
  fixture
525
500
  }
526
501
  });
527
- require_sse_writer.writeErrorResponse(res, 500, JSON.stringify({ error: {
502
+ require_sse_writer.writeErrorResponse(res, 500, require_errors.renderError("bedrock", "unknown-response", {
528
503
  message: "Fixture response did not match any known type",
529
504
  type: "server_error"
530
- } }));
505
+ }).body);
531
506
  }
532
507
  const BEDROCK_INVOKE_STREAM_EVENT_TYPE = "chunk";
533
508
  /** Serialize Claude events as InvokeModel PayloadPart, leaving generic AWS framing unchanged. */
@@ -550,12 +525,12 @@ function buildBedrockInvokeMessageStart(model, overrides) {
550
525
  model: overrides?.model ?? model,
551
526
  stop_reason: null,
552
527
  stop_sequence: null,
553
- usage: bedrockUsage(overrides)
528
+ usage: require_anthropic.render(require_anthropic.resolve(overrides), "bedrock-start")
554
529
  }
555
530
  }
556
531
  };
557
532
  }
558
- function buildBedrockInvokeMessageDelta(stopReason) {
533
+ function buildBedrockInvokeMessageDelta(stopReason, overrides) {
559
534
  return {
560
535
  eventType: BEDROCK_INVOKE_STREAM_EVENT_TYPE,
561
536
  payload: {
@@ -564,7 +539,7 @@ function buildBedrockInvokeMessageDelta(stopReason) {
564
539
  stop_reason: stopReason,
565
540
  stop_sequence: null
566
541
  },
567
- usage: { output_tokens: 0 }
542
+ usage: require_anthropic.render(require_anthropic.resolve(overrides), "bedrock-delta")
568
543
  }
569
544
  };
570
545
  }
@@ -660,7 +635,7 @@ function buildBedrockStreamTextEvents(content, model, chunkSize, reasoning, over
660
635
  index: textBlockIndex
661
636
  }
662
637
  });
663
- events.push(buildBedrockInvokeMessageDelta(bedrockStopReason(overrides?.finishReason, "end_turn")));
638
+ events.push(buildBedrockInvokeMessageDelta(bedrockStopReason(overrides?.finishReason, "end_turn"), overrides));
664
639
  events.push(buildBedrockInvokeMessageStop());
665
640
  return events;
666
641
  }
@@ -794,7 +769,7 @@ function buildBedrockStreamContentWithToolCallsEvents(content, toolCalls, model,
794
769
  });
795
770
  blockIndex++;
796
771
  }
797
- events.push(buildBedrockInvokeMessageDelta(bedrockStopReason(overrides?.finishReason, outcome.hasToolCalls ? "tool_use" : "end_turn")));
772
+ events.push(buildBedrockInvokeMessageDelta(bedrockStopReason(overrides?.finishReason, outcome.hasToolCalls ? "tool_use" : "end_turn"), overrides));
798
773
  events.push(buildBedrockInvokeMessageStop());
799
774
  return events;
800
775
  }
@@ -871,7 +846,7 @@ function buildBedrockStreamContentWithToolCallsEvents(content, toolCalls, model,
871
846
  }
872
847
  });
873
848
  }
874
- events.push(buildBedrockInvokeMessageDelta(bedrockStopReason(overrides?.finishReason, "tool_use")));
849
+ events.push(buildBedrockInvokeMessageDelta(bedrockStopReason(overrides?.finishReason, "tool_use"), overrides));
875
850
  events.push(buildBedrockInvokeMessageStop());
876
851
  return events;
877
852
  }
@@ -966,7 +941,7 @@ function buildBedrockStreamToolCallEvents(toolCalls, model, chunkSize, logger, r
966
941
  }
967
942
  });
968
943
  }
969
- events.push(buildBedrockInvokeMessageDelta(bedrockStopReason(overrides?.finishReason, "tool_use")));
944
+ events.push(buildBedrockInvokeMessageDelta(bedrockStopReason(overrides?.finishReason, "tool_use"), overrides));
970
945
  events.push(buildBedrockInvokeMessageStop());
971
946
  return events;
972
947
  }
@@ -989,10 +964,10 @@ async function handleBedrockStream(req, res, raw, modelId, fixtures, journal, de
989
964
  fixture: null
990
965
  }
991
966
  });
992
- require_sse_writer.writeErrorResponse(res, 400, JSON.stringify({ error: {
967
+ require_sse_writer.writeErrorResponse(res, 400, require_errors.renderError("bedrock", "validation", {
993
968
  message: `Malformed JSON: ${detail}`,
994
969
  type: "invalid_request_error"
995
- } }));
970
+ }).body);
996
971
  return;
997
972
  }
998
973
  if (!require_helpers.isJsonObject(bedrockReq)) {
@@ -1006,10 +981,10 @@ async function handleBedrockStream(req, res, raw, modelId, fixtures, journal, de
1006
981
  fixture: null
1007
982
  }
1008
983
  });
1009
- require_sse_writer.writeErrorResponse(res, 400, JSON.stringify({ error: {
984
+ require_sse_writer.writeErrorResponse(res, 400, require_errors.renderError("bedrock", "validation", {
1010
985
  message: "Request body must be a JSON object",
1011
986
  type: "invalid_request_error"
1012
- } }));
987
+ }).body);
1013
988
  return;
1014
989
  }
1015
990
  const bedrockShapeError = require_helpers.validateChatMessages(bedrockReq.messages, { checkToolCalls: false }) ?? require_helpers.validateToolsField(bedrockReq.tools) ?? (bedrockReq.system !== void 0 && bedrockReq.system !== null && typeof bedrockReq.system !== "string" && !Array.isArray(bedrockReq.system) ? "system must be a string or an array" : null);
@@ -1024,10 +999,10 @@ async function handleBedrockStream(req, res, raw, modelId, fixtures, journal, de
1024
999
  fixture: null
1025
1000
  }
1026
1001
  });
1027
- require_sse_writer.writeErrorResponse(res, 400, JSON.stringify({ error: {
1002
+ require_sse_writer.writeErrorResponse(res, 400, require_errors.renderError("bedrock", "validation", {
1028
1003
  message: `Invalid request: ${bedrockShapeError}`,
1029
1004
  type: "invalid_request_error"
1030
- } }));
1005
+ }).body);
1031
1006
  return;
1032
1007
  }
1033
1008
  const completionReq = bedrockToCompletionRequest(bedrockReq, modelId, logger);
@@ -1046,7 +1021,7 @@ async function handleBedrockStream(req, res, raw, modelId, fixtures, journal, de
1046
1021
  body: completionReq
1047
1022
  }, fixture ? "fixture" : "proxy", defaults.registry, defaults.logger)) return;
1048
1023
  if (!fixture) {
1049
- if (require_helpers.resolveStrictMode(defaults.strict, req.headers)) {
1024
+ if (require_policy.resolveRequestDecisions(defaults.strict, req.headers).fixtureMiss) {
1050
1025
  const strictStatus = 503;
1051
1026
  const strictMessage = require_helpers.strictNoMatchMessage(skippedBySequenceOrTurn);
1052
1027
  logger.error(require_helpers.strictNoMatchLogLine(req.method ?? "POST", urlPath, skippedBySequenceOrTurn));
@@ -1058,13 +1033,13 @@ async function handleBedrockStream(req, res, raw, modelId, fixtures, journal, de
1058
1033
  response: {
1059
1034
  status: strictStatus,
1060
1035
  fixture: null,
1061
- ...require_helpers.strictOverrideField(defaults.strict, req.headers)
1036
+ ...require_policy.strictOverrideField(defaults.strict, req.headers)
1062
1037
  }
1063
1038
  });
1064
- require_sse_writer.writeErrorResponse(res, strictStatus, JSON.stringify({ error: {
1039
+ require_sse_writer.writeErrorResponse(res, strictStatus, require_errors.renderError("bedrock", "strict-miss", {
1065
1040
  message: strictMessage,
1066
1041
  type: "invalid_request_error"
1067
- } }));
1042
+ }).body);
1068
1043
  return;
1069
1044
  }
1070
1045
  if (defaults.record) {
@@ -1093,13 +1068,13 @@ async function handleBedrockStream(req, res, raw, modelId, fixtures, journal, de
1093
1068
  response: {
1094
1069
  status: 404,
1095
1070
  fixture: null,
1096
- ...require_helpers.strictOverrideField(defaults.strict, req.headers)
1071
+ ...require_policy.strictOverrideField(defaults.strict, req.headers)
1097
1072
  }
1098
1073
  });
1099
- require_sse_writer.writeErrorResponse(res, 404, JSON.stringify({ error: {
1074
+ require_sse_writer.writeErrorResponse(res, 404, require_errors.renderError("bedrock", "fixture-miss", {
1100
1075
  message: "No fixture matched",
1101
1076
  type: "invalid_request_error"
1102
- } }));
1077
+ }).body);
1103
1078
  return;
1104
1079
  }
1105
1080
  const response = await require_helpers.resolveResponse(fixture, completionReq);
@@ -1136,13 +1111,13 @@ async function handleBedrockStream(req, res, raw, modelId, fixtures, journal, de
1136
1111
  fixture
1137
1112
  }
1138
1113
  });
1139
- const type = misbehavior.status === 400 ? "ValidationException" : "NotImplementedException";
1140
- res.setHeader("x-amzn-errortype", type);
1141
- require_sse_writer.writeErrorResponse(res, misbehavior.status, JSON.stringify({
1142
- __type: type,
1114
+ const renderedError = require_errors.renderError("bedrock", "misbehavior", {
1115
+ type: misbehavior.status === 400 ? "ValidationException" : "NotImplementedException",
1143
1116
  code: misbehavior.code,
1144
1117
  message: misbehavior.message
1145
- }));
1118
+ });
1119
+ for (const [name, value] of Object.entries(renderedError.headers ?? {})) res.setHeader(name, value);
1120
+ require_sse_writer.writeErrorResponse(res, misbehavior.status, renderedError.body);
1146
1121
  return;
1147
1122
  }
1148
1123
  const latency = fixture.latency ?? defaults.latency;
@@ -1153,7 +1128,7 @@ async function handleBedrockStream(req, res, raw, modelId, fixtures, journal, de
1153
1128
  stream: true,
1154
1129
  chunkSize,
1155
1130
  logger,
1156
- strict: require_helpers.resolveStrictMode(defaults.strict, req.headers)
1131
+ strict: require_policy.resolveRequestDecisions(defaults.strict, req.headers).reasoningSuppression
1157
1132
  });
1158
1133
  if (!prepared.stream) throw new TypeError("InvokeModel stream requires Claude events");
1159
1134
  const entry = journal.add({
@@ -1207,20 +1182,13 @@ async function handleBedrockStream(req, res, raw, modelId, fixtures, journal, de
1207
1182
  fixture
1208
1183
  }
1209
1184
  });
1210
- const anthropicError = {
1211
- type: "error",
1212
- error: {
1213
- type: response.error.type ?? "api_error",
1214
- message: response.error.message
1215
- }
1216
- };
1217
- require_sse_writer.writeErrorResponse(res, status, JSON.stringify(anthropicError), { retryAfter: response.retryAfter });
1185
+ require_sse_writer.writeErrorResponse(res, status, require_errors.renderError("bedrock", "fixture", response.error).body, { retryAfter: response.retryAfter });
1218
1186
  return;
1219
1187
  }
1220
1188
  if (require_helpers.isCombinedFixtureResponse(response)) {
1221
1189
  if (response.webSearches?.length) logger.warn("webSearches in fixture response are not supported for Bedrock API — ignoring");
1222
1190
  const overrides = require_helpers.extractOverrides(response);
1223
- const effReasoning = require_helpers.resolveReasoningForModel(response.reasoning, completionReq.model, require_helpers.resolveStrictMode(defaults.strict, req.headers), logger);
1191
+ const effReasoning = require_helpers.resolveReasoningForModel(response.reasoning, completionReq.model, require_policy.resolveRequestDecisions(defaults.strict, req.headers).reasoningSuppression, logger);
1224
1192
  const journalEntry = addResponseEntry({
1225
1193
  method: req.method ?? "POST",
1226
1194
  path: urlPath,
@@ -1252,7 +1220,7 @@ async function handleBedrockStream(req, res, raw, modelId, fixtures, journal, de
1252
1220
  if (require_helpers.isTextResponse(response)) {
1253
1221
  if (response.webSearches?.length) logger.warn("webSearches in fixture response are not supported for Bedrock API — ignoring");
1254
1222
  const overrides = require_helpers.extractOverrides(response);
1255
- const effReasoning = require_helpers.resolveReasoningForModel(response.reasoning, completionReq.model, require_helpers.resolveStrictMode(defaults.strict, req.headers), logger);
1223
+ const effReasoning = require_helpers.resolveReasoningForModel(response.reasoning, completionReq.model, require_policy.resolveRequestDecisions(defaults.strict, req.headers).reasoningSuppression, logger);
1256
1224
  const journalEntry = addResponseEntry({
1257
1225
  method: req.method ?? "POST",
1258
1226
  path: urlPath,
@@ -1283,7 +1251,7 @@ async function handleBedrockStream(req, res, raw, modelId, fixtures, journal, de
1283
1251
  if (require_helpers.isToolCallResponse(response)) {
1284
1252
  if (response.webSearches?.length) logger.warn("webSearches in fixture response are not supported for Bedrock API — ignoring");
1285
1253
  const overrides = require_helpers.extractOverrides(response);
1286
- const effReasoning = require_helpers.resolveReasoningForModel(response.reasoning, completionReq.model, require_helpers.resolveStrictMode(defaults.strict, req.headers), logger);
1254
+ const effReasoning = require_helpers.resolveReasoningForModel(response.reasoning, completionReq.model, require_policy.resolveRequestDecisions(defaults.strict, req.headers).reasoningSuppression, logger);
1287
1255
  const journalEntry = addResponseEntry({
1288
1256
  method: req.method ?? "POST",
1289
1257
  path: urlPath,
@@ -1321,10 +1289,10 @@ async function handleBedrockStream(req, res, raw, modelId, fixtures, journal, de
1321
1289
  fixture
1322
1290
  }
1323
1291
  });
1324
- require_sse_writer.writeErrorResponse(res, 500, JSON.stringify({ error: {
1292
+ require_sse_writer.writeErrorResponse(res, 500, require_errors.renderError("bedrock", "unknown-response", {
1325
1293
  message: "Fixture response did not match any known type",
1326
1294
  type: "server_error"
1327
- } }));
1295
+ }).body);
1328
1296
  }
1329
1297
 
1330
1298
  //#endregion