@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.
- package/.claude-plugin/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +1 -1
- package/CHANGELOG.md +24 -0
- package/README.md +7 -1
- package/dist/agui-mock.cjs +25 -25
- package/dist/agui-mock.cjs.map +1 -1
- package/dist/agui-mock.d.cts.map +1 -1
- package/dist/agui-mock.d.ts.map +1 -1
- package/dist/agui-mock.js +25 -25
- package/dist/agui-mock.js.map +1 -1
- package/dist/agui-types.d.ts.map +1 -1
- package/dist/aimock-cli.cjs +15 -1
- package/dist/aimock-cli.cjs.map +1 -1
- package/dist/aimock-cli.d.cts.map +1 -1
- package/dist/aimock-cli.d.ts.map +1 -1
- package/dist/aimock-cli.js +16 -2
- package/dist/aimock-cli.js.map +1 -1
- package/dist/api-key-auth.cjs +10 -9
- package/dist/api-key-auth.cjs.map +1 -1
- package/dist/api-key-auth.d.cts.map +1 -1
- package/dist/api-key-auth.d.ts.map +1 -1
- package/dist/api-key-auth.js +11 -10
- package/dist/api-key-auth.js.map +1 -1
- package/dist/batches.cjs +2 -4
- package/dist/batches.cjs.map +1 -1
- package/dist/batches.d.cts.map +1 -1
- package/dist/batches.d.ts.map +1 -1
- package/dist/batches.js +2 -4
- package/dist/batches.js.map +1 -1
- package/dist/bedrock-converse.cjs +61 -80
- package/dist/bedrock-converse.cjs.map +1 -1
- package/dist/bedrock-converse.d.cts.map +1 -1
- package/dist/bedrock-converse.d.ts.map +1 -1
- package/dist/bedrock-converse.js +58 -77
- package/dist/bedrock-converse.js.map +1 -1
- package/dist/bedrock.cjs +65 -97
- package/dist/bedrock.cjs.map +1 -1
- package/dist/bedrock.d.cts.map +1 -1
- package/dist/bedrock.d.ts.map +1 -1
- package/dist/bedrock.js +62 -94
- package/dist/bedrock.js.map +1 -1
- package/dist/byteplus-video.cjs +11 -10
- package/dist/byteplus-video.cjs.map +1 -1
- package/dist/byteplus-video.d.cts.map +1 -1
- package/dist/byteplus-video.d.ts.map +1 -1
- package/dist/byteplus-video.js +5 -4
- package/dist/byteplus-video.js.map +1 -1
- package/dist/chaos.cjs +5 -4
- package/dist/chaos.cjs.map +1 -1
- package/dist/chaos.d.cts.map +1 -1
- package/dist/chaos.d.ts.map +1 -1
- package/dist/chaos.js +5 -4
- package/dist/chaos.js.map +1 -1
- package/dist/cli.cjs +15 -0
- package/dist/cli.cjs.map +1 -1
- package/dist/cli.js +15 -0
- package/dist/cli.js.map +1 -1
- package/dist/cohere.cjs +49 -74
- package/dist/cohere.cjs.map +1 -1
- package/dist/cohere.d.cts.map +1 -1
- package/dist/cohere.d.ts.map +1 -1
- package/dist/cohere.js +47 -72
- package/dist/cohere.js.map +1 -1
- package/dist/config-loader.cjs +29 -1
- package/dist/config-loader.cjs.map +1 -1
- package/dist/config-loader.d.cts +7 -1
- package/dist/config-loader.d.cts.map +1 -1
- package/dist/config-loader.d.ts +7 -1
- package/dist/config-loader.d.ts.map +1 -1
- package/dist/config-loader.js +29 -2
- package/dist/config-loader.js.map +1 -1
- package/dist/count-tokens.cjs +146 -0
- package/dist/count-tokens.cjs.map +1 -0
- package/dist/count-tokens.js +146 -0
- package/dist/count-tokens.js.map +1 -0
- package/dist/elevenlabs-audio.cjs +36 -34
- package/dist/elevenlabs-audio.cjs.map +1 -1
- package/dist/elevenlabs-audio.d.cts.map +1 -1
- package/dist/elevenlabs-audio.d.ts.map +1 -1
- package/dist/elevenlabs-audio.js +33 -31
- package/dist/elevenlabs-audio.js.map +1 -1
- package/dist/elevenlabs-voice.cjs +38 -37
- package/dist/elevenlabs-voice.cjs.map +1 -1
- package/dist/elevenlabs-voice.d.cts.map +1 -1
- package/dist/elevenlabs-voice.d.ts.map +1 -1
- package/dist/elevenlabs-voice.js +33 -32
- package/dist/elevenlabs-voice.js.map +1 -1
- package/dist/embedding-request.cjs +16 -0
- package/dist/embedding-request.cjs.map +1 -0
- package/dist/embedding-request.js +14 -0
- package/dist/embedding-request.js.map +1 -0
- package/dist/embeddings.cjs +30 -20
- package/dist/embeddings.cjs.map +1 -1
- package/dist/embeddings.d.cts.map +1 -1
- package/dist/embeddings.d.ts.map +1 -1
- package/dist/embeddings.js +30 -20
- package/dist/embeddings.js.map +1 -1
- package/dist/fal-audio.cjs +45 -43
- package/dist/fal-audio.cjs.map +1 -1
- package/dist/fal-audio.d.cts.map +1 -1
- package/dist/fal-audio.d.ts.map +1 -1
- package/dist/fal-audio.js +42 -40
- package/dist/fal-audio.js.map +1 -1
- package/dist/fal.cjs +17 -15
- package/dist/fal.cjs.map +1 -1
- package/dist/fal.js +16 -14
- package/dist/fal.js.map +1 -1
- package/dist/files.cjs +2 -4
- package/dist/files.cjs.map +1 -1
- package/dist/files.d.cts.map +1 -1
- package/dist/files.d.ts.map +1 -1
- package/dist/files.js +2 -4
- package/dist/files.js.map +1 -1
- package/dist/fine-tuning.cjs +2 -4
- package/dist/fine-tuning.cjs.map +1 -1
- package/dist/fine-tuning.d.cts.map +1 -1
- package/dist/fine-tuning.d.ts.map +1 -1
- package/dist/fine-tuning.js +2 -4
- package/dist/fine-tuning.js.map +1 -1
- package/dist/fixture-loader.cjs +37 -42
- package/dist/fixture-loader.cjs.map +1 -1
- package/dist/fixture-loader.d.cts.map +1 -1
- package/dist/fixture-loader.d.ts.map +1 -1
- package/dist/fixture-loader.js +37 -42
- package/dist/fixture-loader.js.map +1 -1
- package/dist/gemini-embeddings.cjs +26 -24
- package/dist/gemini-embeddings.cjs.map +1 -1
- package/dist/gemini-embeddings.js +26 -24
- package/dist/gemini-embeddings.js.map +1 -1
- package/dist/gemini-interactions.cjs +50 -35
- package/dist/gemini-interactions.cjs.map +1 -1
- package/dist/gemini-interactions.d.cts +0 -1
- package/dist/gemini-interactions.d.cts.map +1 -1
- package/dist/gemini-interactions.d.ts +0 -1
- package/dist/gemini-interactions.d.ts.map +1 -1
- package/dist/gemini-interactions.js +49 -34
- package/dist/gemini-interactions.js.map +1 -1
- package/dist/gemini.cjs +57 -67
- package/dist/gemini.cjs.map +1 -1
- package/dist/gemini.d.cts.map +1 -1
- package/dist/gemini.d.ts.map +1 -1
- package/dist/gemini.js +56 -67
- package/dist/gemini.js.map +1 -1
- package/dist/grok-video.cjs +14 -12
- package/dist/grok-video.cjs.map +1 -1
- package/dist/grok-video.d.cts.map +1 -1
- package/dist/grok-video.d.ts.map +1 -1
- package/dist/grok-video.js +8 -6
- package/dist/grok-video.js.map +1 -1
- package/dist/helpers.cjs +11 -68
- package/dist/helpers.cjs.map +1 -1
- package/dist/helpers.d.cts.map +1 -1
- package/dist/helpers.d.ts.map +1 -1
- package/dist/helpers.js +12 -67
- package/dist/helpers.js.map +1 -1
- package/dist/images.cjs +30 -28
- package/dist/images.cjs.map +1 -1
- package/dist/images.d.cts.map +1 -1
- package/dist/images.d.ts.map +1 -1
- package/dist/images.js +27 -25
- package/dist/images.js.map +1 -1
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/journal.cjs +3 -1
- package/dist/journal.cjs.map +1 -1
- package/dist/journal.d.cts.map +1 -1
- package/dist/journal.d.ts.map +1 -1
- package/dist/journal.js +2 -1
- package/dist/journal.js.map +1 -1
- package/dist/llmock.cjs +3 -0
- package/dist/llmock.cjs.map +1 -1
- package/dist/llmock.d.cts.map +1 -1
- package/dist/llmock.d.ts.map +1 -1
- package/dist/llmock.js +3 -0
- package/dist/llmock.js.map +1 -1
- package/dist/mcp-fakes.d.cts.map +1 -1
- package/dist/mcp-handler.cjs +14 -4
- package/dist/mcp-handler.cjs.map +1 -1
- package/dist/mcp-handler.js +14 -4
- package/dist/mcp-handler.js.map +1 -1
- package/dist/mcp-recorder.cjs +2 -1
- package/dist/mcp-recorder.cjs.map +1 -1
- package/dist/mcp-recorder.js +3 -2
- package/dist/mcp-recorder.js.map +1 -1
- package/dist/messages.cjs +111 -96
- package/dist/messages.cjs.map +1 -1
- package/dist/messages.d.cts.map +1 -1
- package/dist/messages.d.ts.map +1 -1
- package/dist/messages.js +109 -95
- package/dist/messages.js.map +1 -1
- package/dist/metrics.cjs +5 -2
- package/dist/metrics.cjs.map +1 -1
- package/dist/metrics.d.cts.map +1 -1
- package/dist/metrics.d.ts.map +1 -1
- package/dist/metrics.js +6 -3
- package/dist/metrics.js.map +1 -1
- package/dist/model-utils.cjs +1 -0
- package/dist/model-utils.cjs.map +1 -1
- package/dist/model-utils.js +1 -1
- package/dist/model-utils.js.map +1 -1
- package/dist/moderation.cjs +15 -12
- package/dist/moderation.cjs.map +1 -1
- package/dist/moderation.js +14 -11
- package/dist/moderation.js.map +1 -1
- package/dist/ollama.cjs +128 -68
- package/dist/ollama.cjs.map +1 -1
- package/dist/ollama.d.cts.map +1 -1
- package/dist/ollama.d.ts.map +1 -1
- package/dist/ollama.js +124 -64
- package/dist/ollama.js.map +1 -1
- package/dist/openapi.cjs +323 -3
- package/dist/openapi.cjs.map +1 -1
- package/dist/openapi.d.cts.map +1 -1
- package/dist/openapi.d.ts.map +1 -1
- package/dist/openapi.js +324 -4
- package/dist/openapi.js.map +1 -1
- package/dist/openrouter-chat.cjs +11 -155
- package/dist/openrouter-chat.cjs.map +1 -1
- package/dist/openrouter-chat.js +11 -155
- package/dist/openrouter-chat.js.map +1 -1
- package/dist/openrouter-video.cjs +76 -71
- package/dist/openrouter-video.cjs.map +1 -1
- package/dist/openrouter-video.d.cts.map +1 -1
- package/dist/openrouter-video.d.ts.map +1 -1
- package/dist/openrouter-video.js +63 -58
- package/dist/openrouter-video.js.map +1 -1
- package/dist/recorder.cjs +176 -95
- package/dist/recorder.cjs.map +1 -1
- package/dist/recorder.d.cts.map +1 -1
- package/dist/recorder.d.ts.map +1 -1
- package/dist/recorder.js +176 -95
- package/dist/recorder.js.map +1 -1
- package/dist/rerank.cjs +13 -11
- package/dist/rerank.cjs.map +1 -1
- package/dist/rerank.js +12 -10
- package/dist/rerank.js.map +1 -1
- package/dist/response/catalog/anthropic-page.cjs +39 -0
- package/dist/response/catalog/anthropic-page.cjs.map +1 -0
- package/dist/response/catalog/anthropic-page.js +38 -0
- package/dist/response/catalog/anthropic-page.js.map +1 -0
- package/dist/response/catalog/collect.cjs +61 -0
- package/dist/response/catalog/collect.cjs.map +1 -0
- package/dist/response/catalog/collect.js +59 -0
- package/dist/response/catalog/collect.js.map +1 -0
- package/dist/response/catalog/gemini-page.cjs +25 -0
- package/dist/response/catalog/gemini-page.cjs.map +1 -0
- package/dist/response/catalog/gemini-page.js +24 -0
- package/dist/response/catalog/gemini-page.js.map +1 -0
- package/dist/response/catalog/render.cjs +182 -0
- package/dist/response/catalog/render.cjs.map +1 -0
- package/dist/response/catalog/render.js +171 -0
- package/dist/response/catalog/render.js.map +1 -0
- package/dist/response/errors.cjs +225 -0
- package/dist/response/errors.cjs.map +1 -0
- package/dist/response/errors.js +224 -0
- package/dist/response/errors.js.map +1 -0
- package/dist/response/finish.cjs +39 -0
- package/dist/response/finish.cjs.map +1 -0
- package/dist/response/finish.js +35 -0
- package/dist/response/finish.js.map +1 -0
- package/dist/response/policy.cjs +126 -0
- package/dist/response/policy.cjs.map +1 -0
- package/dist/response/policy.js +120 -0
- package/dist/response/policy.js.map +1 -0
- package/dist/response/profiles.cjs +69 -0
- package/dist/response/profiles.cjs.map +1 -0
- package/dist/response/profiles.js +65 -0
- package/dist/response/profiles.js.map +1 -0
- package/dist/response/usage/codecs/anthropic.cjs +52 -0
- package/dist/response/usage/codecs/anthropic.cjs.map +1 -0
- package/dist/response/usage/codecs/anthropic.js +50 -0
- package/dist/response/usage/codecs/anthropic.js.map +1 -0
- package/dist/response/usage/codecs/cohere.cjs +36 -0
- package/dist/response/usage/codecs/cohere.cjs.map +1 -0
- package/dist/response/usage/codecs/cohere.js +35 -0
- package/dist/response/usage/codecs/cohere.js.map +1 -0
- package/dist/response/usage/codecs/converse.cjs +16 -0
- package/dist/response/usage/codecs/converse.cjs.map +1 -0
- package/dist/response/usage/codecs/converse.js +15 -0
- package/dist/response/usage/codecs/converse.js.map +1 -0
- package/dist/response/usage/codecs/gemini.cjs +31 -0
- package/dist/response/usage/codecs/gemini.cjs.map +1 -0
- package/dist/response/usage/codecs/gemini.js +31 -0
- package/dist/response/usage/codecs/gemini.js.map +1 -0
- package/dist/response/usage/codecs/interactions.cjs +22 -0
- package/dist/response/usage/codecs/interactions.cjs.map +1 -0
- package/dist/response/usage/codecs/interactions.js +21 -0
- package/dist/response/usage/codecs/interactions.js.map +1 -0
- package/dist/response/usage/codecs/ollama.cjs +17 -0
- package/dist/response/usage/codecs/ollama.cjs.map +1 -0
- package/dist/response/usage/codecs/ollama.js +17 -0
- package/dist/response/usage/codecs/ollama.js.map +1 -0
- package/dist/response/usage/codecs/openai.cjs +52 -0
- package/dist/response/usage/codecs/openai.cjs.map +1 -0
- package/dist/response/usage/codecs/openai.js +50 -0
- package/dist/response/usage/codecs/openai.js.map +1 -0
- package/dist/response/usage/codecs/openrouter.cjs +68 -0
- package/dist/response/usage/codecs/openrouter.cjs.map +1 -0
- package/dist/response/usage/codecs/openrouter.js +67 -0
- package/dist/response/usage/codecs/openrouter.js.map +1 -0
- package/dist/response/usage/codecs/realtime.cjs +19 -0
- package/dist/response/usage/codecs/realtime.cjs.map +1 -0
- package/dist/response/usage/codecs/realtime.js +18 -0
- package/dist/response/usage/codecs/realtime.js.map +1 -0
- package/dist/response/usage/codecs/responses.cjs +21 -0
- package/dist/response/usage/codecs/responses.cjs.map +1 -0
- package/dist/response/usage/codecs/responses.js +20 -0
- package/dist/response/usage/codecs/responses.js.map +1 -0
- package/dist/response/usage/estimate.cjs +23 -0
- package/dist/response/usage/estimate.cjs.map +1 -0
- package/dist/response/usage/estimate.js +21 -0
- package/dist/response/usage/estimate.js.map +1 -0
- package/dist/response/usage/fields.cjs +72 -0
- package/dist/response/usage/fields.cjs.map +1 -0
- package/dist/response/usage/fields.js +70 -0
- package/dist/response/usage/fields.js.map +1 -0
- package/dist/response/usage/recording.cjs +52 -0
- package/dist/response/usage/recording.cjs.map +1 -0
- package/dist/response/usage/recording.js +52 -0
- package/dist/response/usage/recording.js.map +1 -0
- package/dist/responses.cjs +45 -58
- package/dist/responses.cjs.map +1 -1
- package/dist/responses.d.cts.map +1 -1
- package/dist/responses.d.ts.map +1 -1
- package/dist/responses.js +44 -57
- package/dist/responses.js.map +1 -1
- package/dist/route-registry.cjs +45 -0
- package/dist/route-registry.cjs.map +1 -1
- package/dist/route-registry.d.cts.map +1 -1
- package/dist/route-registry.d.ts.map +1 -1
- package/dist/route-registry.js +41 -1
- package/dist/route-registry.js.map +1 -1
- package/dist/router.cjs +4 -0
- package/dist/router.cjs.map +1 -1
- package/dist/router.d.cts.map +1 -1
- package/dist/router.d.ts.map +1 -1
- package/dist/router.js +3 -0
- package/dist/router.js.map +1 -1
- package/dist/search.cjs +13 -11
- package/dist/search.cjs.map +1 -1
- package/dist/search.js +12 -10
- package/dist/search.js.map +1 -1
- package/dist/server.cjs +222 -146
- package/dist/server.cjs.map +1 -1
- package/dist/server.d.cts.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +223 -147
- package/dist/server.js.map +1 -1
- package/dist/speech.cjs +20 -18
- package/dist/speech.cjs.map +1 -1
- package/dist/speech.d.cts.map +1 -1
- package/dist/speech.d.ts.map +1 -1
- package/dist/speech.js +19 -17
- package/dist/speech.js.map +1 -1
- package/dist/sse-writer.cjs +7 -0
- package/dist/sse-writer.cjs.map +1 -1
- package/dist/sse-writer.d.cts.map +1 -1
- package/dist/sse-writer.d.ts.map +1 -1
- package/dist/sse-writer.js +7 -1
- package/dist/sse-writer.js.map +1 -1
- package/dist/stream-collapse.cjs +118 -11
- package/dist/stream-collapse.cjs.map +1 -1
- package/dist/stream-collapse.d.cts +10 -9
- package/dist/stream-collapse.d.cts.map +1 -1
- package/dist/stream-collapse.d.ts +10 -9
- package/dist/stream-collapse.d.ts.map +1 -1
- package/dist/stream-collapse.js +118 -11
- package/dist/stream-collapse.js.map +1 -1
- package/dist/transcription.cjs +12 -10
- package/dist/transcription.cjs.map +1 -1
- package/dist/transcription.d.cts.map +1 -1
- package/dist/transcription.d.ts.map +1 -1
- package/dist/transcription.js +11 -9
- package/dist/transcription.js.map +1 -1
- package/dist/types.cjs.map +1 -1
- package/dist/types.d.cts +62 -3
- package/dist/types.d.cts.map +1 -1
- package/dist/types.d.ts +62 -3
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/vector-mock.cjs +3 -8
- package/dist/vector-mock.cjs.map +1 -1
- package/dist/vector-mock.d.cts.map +1 -1
- package/dist/vector-mock.d.ts.map +1 -1
- package/dist/vector-mock.js +3 -8
- package/dist/vector-mock.js.map +1 -1
- package/dist/vector-stores.cjs +2 -4
- package/dist/vector-stores.cjs.map +1 -1
- package/dist/vector-stores.d.cts.map +1 -1
- package/dist/vector-stores.d.ts.map +1 -1
- package/dist/vector-stores.js +2 -4
- package/dist/vector-stores.js.map +1 -1
- package/dist/veo-video.cjs +16 -14
- package/dist/veo-video.cjs.map +1 -1
- package/dist/veo-video.js +10 -8
- package/dist/veo-video.js.map +1 -1
- package/dist/video.cjs +21 -19
- package/dist/video.cjs.map +1 -1
- package/dist/video.d.cts.map +1 -1
- package/dist/video.d.ts.map +1 -1
- package/dist/video.js +20 -18
- package/dist/video.js.map +1 -1
- package/dist/ws-gemini-live.cjs +11 -3
- package/dist/ws-gemini-live.cjs.map +1 -1
- package/dist/ws-gemini-live.d.cts +0 -1
- package/dist/ws-gemini-live.d.cts.map +1 -1
- package/dist/ws-gemini-live.d.ts +0 -1
- package/dist/ws-gemini-live.d.ts.map +1 -1
- package/dist/ws-gemini-live.js +10 -2
- package/dist/ws-gemini-live.js.map +1 -1
- package/dist/ws-live.cjs +6 -5
- package/dist/ws-live.cjs.map +1 -1
- package/dist/ws-live.js +5 -4
- package/dist/ws-live.js.map +1 -1
- package/dist/ws-realtime.cjs +28 -54
- package/dist/ws-realtime.cjs.map +1 -1
- package/dist/ws-realtime.d.cts.map +1 -1
- package/dist/ws-realtime.d.ts.map +1 -1
- package/dist/ws-realtime.js +25 -51
- package/dist/ws-realtime.js.map +1 -1
- package/dist/ws-responses.cjs +8 -6
- package/dist/ws-responses.cjs.map +1 -1
- package/dist/ws-responses.js +7 -5
- package/dist/ws-responses.js.map +1 -1
- package/package.json +4 -1
- 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
|
-
|
|
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:
|
|
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:
|
|
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:
|
|
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,
|
|
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,
|
|
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,
|
|
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 (
|
|
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
|
-
...
|
|
292
|
+
...require_policy.strictOverrideField(defaults.strict, req.headers)
|
|
311
293
|
}
|
|
312
294
|
});
|
|
313
|
-
require_sse_writer.writeErrorResponse(res, strictStatus,
|
|
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
|
-
...
|
|
327
|
+
...require_policy.strictOverrideField(defaults.strict, req.headers)
|
|
346
328
|
}
|
|
347
329
|
});
|
|
348
|
-
require_sse_writer.writeErrorResponse(res, 404,
|
|
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
|
|
389
|
-
|
|
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:
|
|
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
|
-
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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:
|
|
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:
|
|
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,
|
|
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,
|
|
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,
|
|
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 (
|
|
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
|
-
...
|
|
1036
|
+
...require_policy.strictOverrideField(defaults.strict, req.headers)
|
|
1062
1037
|
}
|
|
1063
1038
|
});
|
|
1064
|
-
require_sse_writer.writeErrorResponse(res, strictStatus,
|
|
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
|
-
...
|
|
1071
|
+
...require_policy.strictOverrideField(defaults.strict, req.headers)
|
|
1097
1072
|
}
|
|
1098
1073
|
});
|
|
1099
|
-
require_sse_writer.writeErrorResponse(res, 404,
|
|
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
|
|
1140
|
-
|
|
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:
|
|
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
|
-
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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
|