@copilotkit/aimock 1.45.1 → 1.47.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 +25 -1
- package/README.md +11 -2
- 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.cts.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/aws-event-stream.cjs +20 -23
- package/dist/aws-event-stream.cjs.map +1 -1
- package/dist/aws-event-stream.d.cts +0 -1
- package/dist/aws-event-stream.d.ts +0 -1
- package/dist/aws-event-stream.js +20 -24
- package/dist/aws-event-stream.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 +139 -161
- 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 +137 -159
- package/dist/bedrock-converse.js.map +1 -1
- package/dist/bedrock.cjs +175 -216
- 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 +172 -213
- 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 +107 -180
- 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 +106 -179
- 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 +140 -44
- 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 +141 -46
- 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 +113 -156
- 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 +113 -156
- package/dist/gemini-interactions.js.map +1 -1
- package/dist/gemini.cjs +295 -218
- 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 +295 -219
- 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 +411 -75
- package/dist/helpers.cjs.map +1 -1
- package/dist/helpers.d.cts +51 -1
- package/dist/helpers.d.cts.map +1 -1
- package/dist/helpers.d.ts +51 -1
- package/dist/helpers.d.ts.map +1 -1
- package/dist/helpers.js +402 -74
- 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.cjs +4 -2
- package/dist/index.d.cts +4 -4
- package/dist/index.d.ts +4 -4
- package/dist/index.js +4 -4
- 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 +7 -3
- package/dist/mcp-handler.cjs.map +1 -1
- package/dist/mcp-handler.js +7 -3
- 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 +235 -202
- 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 +234 -202
- 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/misbehavior.cjs +62 -3
- package/dist/misbehavior.cjs.map +1 -1
- package/dist/misbehavior.d.cts.map +1 -1
- package/dist/misbehavior.d.ts.map +1 -1
- package/dist/misbehavior.js +63 -4
- package/dist/misbehavior.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/ndjson-writer.cjs +21 -23
- package/dist/ndjson-writer.cjs.map +1 -1
- package/dist/ndjson-writer.d.cts +0 -1
- package/dist/ndjson-writer.d.cts.map +1 -1
- package/dist/ndjson-writer.d.ts +0 -1
- package/dist/ndjson-writer.d.ts.map +1 -1
- package/dist/ndjson-writer.js +21 -24
- package/dist/ndjson-writer.js.map +1 -1
- package/dist/ollama.cjs +276 -210
- 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 +273 -207
- 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 +51 -74
- 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 +37 -60
- package/dist/openrouter-video.js.map +1 -1
- package/dist/raw-validation.cjs +177 -0
- package/dist/raw-validation.cjs.map +1 -0
- package/dist/raw-validation.js +176 -0
- package/dist/raw-validation.js.map +1 -0
- 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/deliver.cjs +144 -0
- package/dist/response/deliver.cjs.map +1 -0
- package/dist/response/deliver.js +143 -0
- package/dist/response/deliver.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/frame-loop.cjs +102 -0
- package/dist/response/frame-loop.cjs.map +1 -0
- package/dist/response/frame-loop.js +100 -0
- package/dist/response/frame-loop.js.map +1 -0
- package/dist/response/lifecycle.cjs +223 -0
- package/dist/response/lifecycle.cjs.map +1 -0
- package/dist/response/lifecycle.js +211 -0
- package/dist/response/lifecycle.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/proxy.cjs +71 -0
- package/dist/response/proxy.cjs.map +1 -0
- package/dist/response/proxy.js +70 -0
- package/dist/response/proxy.js.map +1 -0
- package/dist/response/raw.cjs +228 -0
- package/dist/response/raw.cjs.map +1 -0
- package/dist/response/raw.js +227 -0
- package/dist/response/raw.js.map +1 -0
- package/dist/response/timing.cjs +157 -0
- package/dist/response/timing.cjs.map +1 -0
- package/dist/response/timing.js +150 -0
- package/dist/response/timing.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 +304 -196
- 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 +303 -195
- 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 +24 -4
- package/dist/router.cjs.map +1 -1
- package/dist/router.d.cts +7 -1
- package/dist/router.d.cts.map +1 -1
- package/dist/router.d.ts +7 -1
- package/dist/router.d.ts.map +1 -1
- package/dist/router.js +24 -5
- 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 +293 -248
- 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 +294 -249
- 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 +56 -30
- package/dist/sse-writer.cjs.map +1 -1
- package/dist/sse-writer.d.cts +0 -1
- package/dist/sse-writer.d.cts.map +1 -1
- package/dist/sse-writer.d.ts +0 -1
- package/dist/sse-writer.d.ts.map +1 -1
- package/dist/sse-writer.js +55 -31
- 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 +31 -43
- 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 +31 -43
- package/dist/transcription.js.map +1 -1
- package/dist/types.cjs.map +1 -1
- package/dist/types.d.cts +231 -9
- package/dist/types.d.cts.map +1 -1
- package/dist/types.d.ts +231 -9
- 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-framing.cjs +12 -6
- package/dist/ws-framing.cjs.map +1 -1
- package/dist/ws-framing.d.cts +2 -0
- package/dist/ws-framing.d.cts.map +1 -1
- package/dist/ws-framing.d.ts +2 -0
- package/dist/ws-framing.d.ts.map +1 -1
- package/dist/ws-framing.js +12 -6
- package/dist/ws-framing.js.map +1 -1
- package/dist/ws-gemini-live.cjs +131 -96
- 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 +130 -95
- 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 +108 -124
- 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 +105 -121
- package/dist/ws-realtime.js.map +1 -1
- package/dist/ws-responses.cjs +80 -59
- package/dist/ws-responses.cjs.map +1 -1
- package/dist/ws-responses.d.cts.map +1 -1
- package/dist/ws-responses.d.ts.map +1 -1
- package/dist/ws-responses.js +79 -58
- package/dist/ws-responses.js.map +1 -1
- package/package.json +4 -1
- package/skills/write-fixtures/SKILL.md +57 -16
|
@@ -1,17 +1,20 @@
|
|
|
1
1
|
const require_runtime = require('./_virtual/_rolldown/runtime.cjs');
|
|
2
|
+
const require_errors = require('./response/errors.cjs');
|
|
3
|
+
const require_policy = require('./response/policy.cjs');
|
|
2
4
|
const require_helpers = require('./helpers.cjs');
|
|
3
5
|
const require_sse_writer = require('./sse-writer.cjs');
|
|
4
6
|
const require_chaos = require('./chaos.cjs');
|
|
5
7
|
const require_router = require('./router.cjs');
|
|
6
8
|
const require_url = require('./url.cjs');
|
|
7
9
|
const require_recorder = require('./recorder.cjs');
|
|
10
|
+
const require_collect = require('./response/catalog/collect.cjs');
|
|
11
|
+
const require_render = require('./response/catalog/render.cjs');
|
|
8
12
|
const require_fal = require('./fal.cjs');
|
|
9
13
|
const require_video_proxy_shared = require('./video-proxy-shared.cjs');
|
|
10
14
|
let node_crypto = require("node:crypto");
|
|
11
15
|
node_crypto = require_runtime.__toESM(node_crypto);
|
|
12
16
|
|
|
13
17
|
//#region src/openrouter-video.ts
|
|
14
|
-
const DEFAULT_OPENROUTER_VIDEO_MODEL = "bytedance/seedance-2.0";
|
|
15
18
|
/**
|
|
16
19
|
* Video models OpenRouter has REMOVED (deprecation policy: a removed surface
|
|
17
20
|
* never mocks success — it serves the rejection the real API serves now).
|
|
@@ -22,7 +25,6 @@ const DEFAULT_OPENROUTER_VIDEO_MODEL = "bytedance/seedance-2.0";
|
|
|
22
25
|
* `{"error":{"message":"Model openai/sora-2 does not exist","code":400}}` —
|
|
23
26
|
* the same rejection OpenRouter gives any unknown model id.
|
|
24
27
|
*/
|
|
25
|
-
const OPENROUTER_VIDEO_SUNSET_MODELS = new Set(["openai/sora-2"]);
|
|
26
28
|
const OPENROUTER_VIDEO_MAX_ENTRIES = 1e4;
|
|
27
29
|
const OPENROUTER_VIDEO_TTL_MS = 36e5;
|
|
28
30
|
/**
|
|
@@ -228,7 +230,7 @@ async function handleOpenRouterVideoStatus(req, res, jobId, fixtures, journal, d
|
|
|
228
230
|
return;
|
|
229
231
|
}
|
|
230
232
|
if (job.kind === "record") {
|
|
231
|
-
if (
|
|
233
|
+
if (!require_policy.resolveRequestDecisions(defaults.strict, req.headers).upstream) {
|
|
232
234
|
defaults.logger.error(`STRICT: video job ${jobId} is proxied live upstream (record mode) — refusing the upstream poll`);
|
|
233
235
|
journal.add({
|
|
234
236
|
method,
|
|
@@ -238,14 +240,14 @@ async function handleOpenRouterVideoStatus(req, res, jobId, fixtures, journal, d
|
|
|
238
240
|
response: {
|
|
239
241
|
status: 503,
|
|
240
242
|
fixture: null,
|
|
241
|
-
...
|
|
243
|
+
...require_policy.strictOverrideField(defaults.strict, req.headers)
|
|
242
244
|
}
|
|
243
245
|
});
|
|
244
|
-
require_sse_writer.writeErrorResponse(res, 503,
|
|
246
|
+
require_sse_writer.writeErrorResponse(res, 503, require_errors.renderError("openai", "strict-miss", {
|
|
245
247
|
message: `Strict mode: video job ${jobId} is proxied live upstream (record mode) — nothing reaches an upstream under strict mode`,
|
|
246
248
|
type: "invalid_request_error",
|
|
247
249
|
code: "no_fixture_match"
|
|
248
|
-
}
|
|
250
|
+
}).body);
|
|
249
251
|
return;
|
|
250
252
|
}
|
|
251
253
|
await proxyOpenRouterVideoRecordPoll({
|
|
@@ -386,7 +388,7 @@ async function handleOpenRouterVideoContent(req, res, jobId, journal, defaults,
|
|
|
386
388
|
const queryIdx = path.indexOf("?");
|
|
387
389
|
const indexParam = queryIdx === -1 ? null : new URLSearchParams(path.slice(queryIdx + 1)).get("index");
|
|
388
390
|
if (job.kind === "record") {
|
|
389
|
-
if (
|
|
391
|
+
if (!require_policy.resolveRequestDecisions(defaults.strict, req.headers).upstream) {
|
|
390
392
|
defaults.logger.error(`STRICT: video job ${jobId} content is proxied live upstream (record mode) — refusing the upstream fetch`);
|
|
391
393
|
journal.add({
|
|
392
394
|
method,
|
|
@@ -396,14 +398,14 @@ async function handleOpenRouterVideoContent(req, res, jobId, journal, defaults,
|
|
|
396
398
|
response: {
|
|
397
399
|
status: 503,
|
|
398
400
|
fixture: null,
|
|
399
|
-
...
|
|
401
|
+
...require_policy.strictOverrideField(defaults.strict, req.headers)
|
|
400
402
|
}
|
|
401
403
|
});
|
|
402
|
-
require_sse_writer.writeErrorResponse(res, 503,
|
|
404
|
+
require_sse_writer.writeErrorResponse(res, 503, require_errors.renderError("openai", "strict-miss", {
|
|
403
405
|
message: `Strict mode: video job ${jobId} is proxied live upstream (record mode) — nothing reaches an upstream under strict mode`,
|
|
404
406
|
type: "invalid_request_error",
|
|
405
407
|
code: "no_fixture_match"
|
|
406
|
-
}
|
|
408
|
+
}).body);
|
|
407
409
|
return;
|
|
408
410
|
}
|
|
409
411
|
await proxyOpenRouterVideoRecordContent({
|
|
@@ -486,13 +488,13 @@ async function proxyOpenRouterVideoRecordContent(args) {
|
|
|
486
488
|
status: 502,
|
|
487
489
|
fixture: null,
|
|
488
490
|
source: "proxy",
|
|
489
|
-
...
|
|
491
|
+
...require_policy.strictOverrideField(defaults.strict, req.headers)
|
|
490
492
|
}
|
|
491
493
|
});
|
|
492
|
-
require_sse_writer.writeErrorResponse(res, 502,
|
|
494
|
+
require_sse_writer.writeErrorResponse(res, 502, require_errors.renderError("openai", "transport-failure", {
|
|
493
495
|
message: `Proxy to upstream failed: ${msg}`,
|
|
494
496
|
type: "proxy_error"
|
|
495
|
-
}
|
|
497
|
+
}).body);
|
|
496
498
|
};
|
|
497
499
|
const record = defaults.record;
|
|
498
500
|
if (!record) {
|
|
@@ -573,7 +575,7 @@ async function proxyOpenRouterVideoRecordContent(args) {
|
|
|
573
575
|
status: contentRes.status,
|
|
574
576
|
fixture: null,
|
|
575
577
|
source: "proxy",
|
|
576
|
-
...
|
|
578
|
+
...require_policy.strictOverrideField(defaults.strict, req.headers)
|
|
577
579
|
}
|
|
578
580
|
});
|
|
579
581
|
res.writeHead(contentRes.status, { "Content-Type": contentRes.headers.get("content-type") ?? "application/json" });
|
|
@@ -602,7 +604,7 @@ async function proxyOpenRouterVideoRecordContent(args) {
|
|
|
602
604
|
status: 200,
|
|
603
605
|
fixture: null,
|
|
604
606
|
source: "proxy",
|
|
605
|
-
...
|
|
607
|
+
...require_policy.strictOverrideField(defaults.strict, req.headers)
|
|
606
608
|
}
|
|
607
609
|
});
|
|
608
610
|
if (jobs.get(key) === job) jobs.set(key, job);
|
|
@@ -660,25 +662,6 @@ async function proxyOpenRouterVideoRecordContent(args) {
|
|
|
660
662
|
reader.cancel().catch(() => {});
|
|
661
663
|
}
|
|
662
664
|
}
|
|
663
|
-
const DEFAULT_OPENROUTER_VIDEO_MODELS = [DEFAULT_OPENROUTER_VIDEO_MODEL];
|
|
664
|
-
function modelEntry(id) {
|
|
665
|
-
return {
|
|
666
|
-
id,
|
|
667
|
-
name: id,
|
|
668
|
-
supported_durations: [4, 8],
|
|
669
|
-
supported_resolutions: ["720p", "1080p"],
|
|
670
|
-
supported_aspect_ratios: [
|
|
671
|
-
"16:9",
|
|
672
|
-
"9:16",
|
|
673
|
-
"1:1"
|
|
674
|
-
],
|
|
675
|
-
supported_frame_images: [],
|
|
676
|
-
supported_sizes: [],
|
|
677
|
-
generate_audio: false,
|
|
678
|
-
seed: true,
|
|
679
|
-
pricing_skus: []
|
|
680
|
-
};
|
|
681
|
-
}
|
|
682
665
|
/**
|
|
683
666
|
* Synthesizes the OpenRouter video model listing from loaded fixtures —
|
|
684
667
|
* video-endpoint fixtures with a string `match.model` (mirrors the Ollama
|
|
@@ -706,7 +689,7 @@ async function handleOpenRouterVideoModels(req, res, fixtures, journal, defaults
|
|
|
706
689
|
const record = defaults.record;
|
|
707
690
|
const upstreamBase = record?.providers.openrouter;
|
|
708
691
|
let proxyAttemptFailed = false;
|
|
709
|
-
if (upstreamBase &&
|
|
692
|
+
if (upstreamBase && require_policy.resolveRequestDecisions(defaults.strict, req.headers).upstream) {
|
|
710
693
|
let relay;
|
|
711
694
|
try {
|
|
712
695
|
const target = require_url.resolveUpstreamUrl(upstreamBase, "/api/v1/videos/models");
|
|
@@ -738,7 +721,7 @@ async function handleOpenRouterVideoModels(req, res, fixtures, journal, defaults
|
|
|
738
721
|
status: 200,
|
|
739
722
|
fixture: null,
|
|
740
723
|
source: "proxy",
|
|
741
|
-
...
|
|
724
|
+
...require_policy.strictOverrideField(defaults.strict, req.headers)
|
|
742
725
|
}
|
|
743
726
|
});
|
|
744
727
|
res.writeHead(200, { "Content-Type": relay.contentType });
|
|
@@ -746,14 +729,9 @@ async function handleOpenRouterVideoModels(req, res, fixtures, journal, defaults
|
|
|
746
729
|
return;
|
|
747
730
|
}
|
|
748
731
|
}
|
|
749
|
-
const
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
sawVideoFixture = true;
|
|
753
|
-
if (f.match.model && typeof f.match.model === "string" && !OPENROUTER_VIDEO_SUNSET_MODELS.has(f.match.model)) modelIds.add(f.match.model);
|
|
754
|
-
}
|
|
755
|
-
if (modelIds.size === 0 && sawVideoFixture) defaults.logger.warn("No video fixture contributes a string model — serving the default video model set");
|
|
756
|
-
const ids = modelIds.size > 0 ? [...modelIds] : DEFAULT_OPENROUTER_VIDEO_MODELS;
|
|
732
|
+
const collection = require_collect.collect(fixtures, "video-active");
|
|
733
|
+
if (collection.ids.length === 0 && collection.diagnostics.sawVideoFixture) defaults.logger.warn("No video fixture contributes a string model — serving the default video model set");
|
|
734
|
+
const body = require_render.renderOpenRouterVideoModels(collection.ids);
|
|
757
735
|
if (res.destroyed || res.writableEnded) return;
|
|
758
736
|
journal.add({
|
|
759
737
|
method,
|
|
@@ -764,11 +742,11 @@ async function handleOpenRouterVideoModels(req, res, fixtures, journal, defaults
|
|
|
764
742
|
status: 200,
|
|
765
743
|
fixture: null,
|
|
766
744
|
...proxyAttemptFailed ? { source: "internal" } : {},
|
|
767
|
-
...
|
|
745
|
+
...require_policy.strictOverrideField(defaults.strict, req.headers)
|
|
768
746
|
}
|
|
769
747
|
});
|
|
770
748
|
res.writeHead(200, { "Content-Type": "application/json" });
|
|
771
|
-
res.end(JSON.stringify(
|
|
749
|
+
res.end(JSON.stringify(body));
|
|
772
750
|
}
|
|
773
751
|
async function handleOpenRouterVideoCreate(req, res, raw, fixtures, journal, defaults, setCorsHeaders, jobs) {
|
|
774
752
|
setCorsHeaders(res);
|
|
@@ -789,11 +767,11 @@ async function handleOpenRouterVideoCreate(req, res, raw, fixtures, journal, def
|
|
|
789
767
|
fixture: null
|
|
790
768
|
}
|
|
791
769
|
});
|
|
792
|
-
require_sse_writer.writeErrorResponse(res, 400,
|
|
770
|
+
require_sse_writer.writeErrorResponse(res, 400, require_errors.renderError("openai", "validation", {
|
|
793
771
|
message: `Malformed JSON: ${detail}`,
|
|
794
772
|
type: "invalid_request_error",
|
|
795
773
|
code: "invalid_json"
|
|
796
|
-
}
|
|
774
|
+
}).body);
|
|
797
775
|
return;
|
|
798
776
|
}
|
|
799
777
|
if (videoReq === null || typeof videoReq !== "object" || Array.isArray(videoReq)) {
|
|
@@ -807,10 +785,10 @@ async function handleOpenRouterVideoCreate(req, res, raw, fixtures, journal, def
|
|
|
807
785
|
fixture: null
|
|
808
786
|
}
|
|
809
787
|
});
|
|
810
|
-
require_sse_writer.writeErrorResponse(res, 400,
|
|
788
|
+
require_sse_writer.writeErrorResponse(res, 400, require_errors.renderError("openai", "validation", {
|
|
811
789
|
message: "Request body must be a JSON object",
|
|
812
790
|
type: "invalid_request_error"
|
|
813
|
-
}
|
|
791
|
+
}).body);
|
|
814
792
|
return;
|
|
815
793
|
}
|
|
816
794
|
const parsedBody = validationJournalBody(videoReq);
|
|
@@ -825,11 +803,10 @@ async function handleOpenRouterVideoCreate(req, res, raw, fixtures, journal, def
|
|
|
825
803
|
fixture: null
|
|
826
804
|
}
|
|
827
805
|
});
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
message,
|
|
806
|
+
require_sse_writer.writeErrorResponse(res, 400, require_errors.renderError("openai", "validation", {
|
|
807
|
+
message: videoReq.prompt === void 0 ? "Missing required parameter: 'prompt'" : "Invalid type for parameter: 'prompt' must be a non-empty string",
|
|
831
808
|
type: "invalid_request_error"
|
|
832
|
-
}
|
|
809
|
+
}).body);
|
|
833
810
|
return;
|
|
834
811
|
}
|
|
835
812
|
if (videoReq.model !== void 0 && (typeof videoReq.model !== "string" || !videoReq.model)) {
|
|
@@ -843,13 +820,13 @@ async function handleOpenRouterVideoCreate(req, res, raw, fixtures, journal, def
|
|
|
843
820
|
fixture: null
|
|
844
821
|
}
|
|
845
822
|
});
|
|
846
|
-
require_sse_writer.writeErrorResponse(res, 400,
|
|
823
|
+
require_sse_writer.writeErrorResponse(res, 400, require_errors.renderError("openai", "validation", {
|
|
847
824
|
message: "Invalid type for parameter: 'model' must be a non-empty string",
|
|
848
825
|
type: "invalid_request_error"
|
|
849
|
-
}
|
|
826
|
+
}).body);
|
|
850
827
|
return;
|
|
851
828
|
}
|
|
852
|
-
if (videoReq.model !== void 0 && OPENROUTER_VIDEO_SUNSET_MODELS.has(videoReq.model)) {
|
|
829
|
+
if (videoReq.model !== void 0 && require_collect.OPENROUTER_VIDEO_SUNSET_MODELS.has(videoReq.model)) {
|
|
853
830
|
journal.add({
|
|
854
831
|
method,
|
|
855
832
|
path,
|
|
@@ -867,7 +844,7 @@ async function handleOpenRouterVideoCreate(req, res, raw, fixtures, journal, def
|
|
|
867
844
|
return;
|
|
868
845
|
}
|
|
869
846
|
const syntheticReq = {
|
|
870
|
-
model: videoReq.model ?? DEFAULT_OPENROUTER_VIDEO_MODEL,
|
|
847
|
+
model: videoReq.model ?? require_render.DEFAULT_OPENROUTER_VIDEO_MODEL,
|
|
871
848
|
messages: [{
|
|
872
849
|
role: "user",
|
|
873
850
|
content: videoReq.prompt
|
|
@@ -889,9 +866,9 @@ async function handleOpenRouterVideoCreate(req, res, raw, fixtures, journal, def
|
|
|
889
866
|
path,
|
|
890
867
|
headers: require_helpers.flattenHeaders(req.headers),
|
|
891
868
|
body: syntheticReq
|
|
892
|
-
}, fixture ? "fixture" :
|
|
869
|
+
}, fixture ? "fixture" : require_policy.resolveRequestDecisions(defaults.strict, req.headers).fixtureMiss ? "internal" : defaults.record?.providers.openrouter ? "proxy" : "internal", defaults.registry, defaults.logger)) return;
|
|
893
870
|
if (!fixture) {
|
|
894
|
-
if (
|
|
871
|
+
if (require_policy.resolveRequestDecisions(defaults.strict, req.headers).fixtureMiss) {
|
|
895
872
|
const strictMessage = require_helpers.strictNoMatchMessage(skippedBySequenceOrTurn);
|
|
896
873
|
defaults.logger.error(require_helpers.strictNoMatchLogLine(method, path, skippedBySequenceOrTurn));
|
|
897
874
|
journal.add({
|
|
@@ -902,14 +879,14 @@ async function handleOpenRouterVideoCreate(req, res, raw, fixtures, journal, def
|
|
|
902
879
|
response: {
|
|
903
880
|
status: 503,
|
|
904
881
|
fixture: null,
|
|
905
|
-
...
|
|
882
|
+
...require_policy.strictOverrideField(defaults.strict, req.headers)
|
|
906
883
|
}
|
|
907
884
|
});
|
|
908
|
-
require_sse_writer.writeErrorResponse(res, 503,
|
|
885
|
+
require_sse_writer.writeErrorResponse(res, 503, require_errors.renderError("openai", "strict-miss", {
|
|
909
886
|
message: strictMessage,
|
|
910
887
|
type: "invalid_request_error",
|
|
911
888
|
code: "no_fixture_match"
|
|
912
|
-
}
|
|
889
|
+
}).body);
|
|
913
890
|
return;
|
|
914
891
|
}
|
|
915
892
|
if (defaults.record) {
|
|
@@ -934,7 +911,7 @@ async function handleOpenRouterVideoCreate(req, res, raw, fixtures, journal, def
|
|
|
934
911
|
response: {
|
|
935
912
|
status: 404,
|
|
936
913
|
fixture: null,
|
|
937
|
-
...
|
|
914
|
+
...require_policy.strictOverrideField(defaults.strict, req.headers)
|
|
938
915
|
}
|
|
939
916
|
});
|
|
940
917
|
require_sse_writer.writeErrorResponse(res, 404, JSON.stringify({ error: {
|
|
@@ -973,10 +950,10 @@ async function handleOpenRouterVideoCreate(req, res, raw, fixtures, journal, def
|
|
|
973
950
|
fixture
|
|
974
951
|
}
|
|
975
952
|
});
|
|
976
|
-
require_sse_writer.writeErrorResponse(res, 500,
|
|
953
|
+
require_sse_writer.writeErrorResponse(res, 500, require_errors.renderError("openai", "unknown-response", {
|
|
977
954
|
message: "Fixture response is not a video type",
|
|
978
955
|
type: "server_error"
|
|
979
|
-
}
|
|
956
|
+
}).body);
|
|
980
957
|
return;
|
|
981
958
|
}
|
|
982
959
|
if (res.destroyed || res.writableEnded) return;
|
|
@@ -1044,13 +1021,13 @@ async function proxyOpenRouterVideoSubmit(args) {
|
|
|
1044
1021
|
status: 502,
|
|
1045
1022
|
fixture: null,
|
|
1046
1023
|
source: "proxy",
|
|
1047
|
-
...
|
|
1024
|
+
...require_policy.strictOverrideField(defaults.strict, req.headers)
|
|
1048
1025
|
}
|
|
1049
1026
|
});
|
|
1050
|
-
require_sse_writer.writeErrorResponse(res, 502,
|
|
1027
|
+
require_sse_writer.writeErrorResponse(res, 502, require_errors.renderError("openai", "transport-failure", {
|
|
1051
1028
|
message: `Proxy to upstream failed: ${msg}`,
|
|
1052
1029
|
type: "proxy_error"
|
|
1053
|
-
}
|
|
1030
|
+
}).body);
|
|
1054
1031
|
return "handled";
|
|
1055
1032
|
};
|
|
1056
1033
|
let submitUrl;
|
|
@@ -1093,7 +1070,7 @@ async function proxyOpenRouterVideoSubmit(args) {
|
|
|
1093
1070
|
status: fetched.status,
|
|
1094
1071
|
fixture: null,
|
|
1095
1072
|
source: "proxy",
|
|
1096
|
-
...
|
|
1073
|
+
...require_policy.strictOverrideField(defaults.strict, req.headers)
|
|
1097
1074
|
}
|
|
1098
1075
|
});
|
|
1099
1076
|
res.writeHead(fetched.status, { "Content-Type": fetched.contentType ?? "application/json" });
|
|
@@ -1147,7 +1124,7 @@ async function proxyOpenRouterVideoSubmit(args) {
|
|
|
1147
1124
|
status: 202,
|
|
1148
1125
|
fixture: null,
|
|
1149
1126
|
source: "proxy",
|
|
1150
|
-
...
|
|
1127
|
+
...require_policy.strictOverrideField(defaults.strict, req.headers)
|
|
1151
1128
|
}
|
|
1152
1129
|
});
|
|
1153
1130
|
res.writeHead(202, { "Content-Type": "application/json" });
|
|
@@ -1207,7 +1184,7 @@ async function proxyOpenRouterVideoRecordPoll(args) {
|
|
|
1207
1184
|
status,
|
|
1208
1185
|
fixture: null,
|
|
1209
1186
|
source: "proxy",
|
|
1210
|
-
...
|
|
1187
|
+
...require_policy.strictOverrideField(defaults.strict, req.headers)
|
|
1211
1188
|
}
|
|
1212
1189
|
});
|
|
1213
1190
|
};
|
|
@@ -1215,10 +1192,10 @@ async function proxyOpenRouterVideoRecordPoll(args) {
|
|
|
1215
1192
|
logger.error(`OpenRouter video poll proxy failed: ${msg}`);
|
|
1216
1193
|
if (res.destroyed || res.writableEnded) return;
|
|
1217
1194
|
journalProxy(502);
|
|
1218
|
-
require_sse_writer.writeErrorResponse(res, 502,
|
|
1195
|
+
require_sse_writer.writeErrorResponse(res, 502, require_errors.renderError("openai", "transport-failure", {
|
|
1219
1196
|
message: `Proxy to upstream failed: ${msg}`,
|
|
1220
1197
|
type: "proxy_error"
|
|
1221
|
-
}
|
|
1198
|
+
}).body);
|
|
1222
1199
|
};
|
|
1223
1200
|
const record = defaults.record;
|
|
1224
1201
|
if (!record) {
|