@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
package/dist/fixture-loader.js
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { MCP_FAKES_ECHO_LIMIT } from "./constants.js";
|
|
2
2
|
import { build, fixed, jsonText, msg, quote, within } from "./message-text.js";
|
|
3
|
-
import { fixtureListTarget, isAudioResponse, isCombinedFixtureResponse, isEmbeddingResponse, isErrorResponse, isImageResponse, isJSONResponse, isLiveResponse, isTextResponse, isToolCallResponse, isTranscriptionResponse, isVideoResponse } from "./helpers.js";
|
|
3
|
+
import { fixtureCitationsProblem, fixtureFilesProblem, fixtureListTarget, isAudioResponse, isCombinedFixtureResponse, isEmbeddingResponse, isErrorResponse, isImageResponse, isJSONResponse, isLiveResponse, isRawResponse, isTextResponse, isToolCallResponse, isTranscriptionResponse, isVideoResponse, resolveServedBlockOutcome } from "./helpers.js";
|
|
4
4
|
import { normalizeLiveFixture } from "./live-fixture.js";
|
|
5
|
+
import { checkRawResponse } from "./raw-validation.js";
|
|
5
6
|
import { CHAOS_FIELDS, CHAOS_FIELD_NAMES, parseChaosField } from "./chaos.js";
|
|
7
|
+
import { getUsageFieldDefinition } from "./response/usage/fields.js";
|
|
6
8
|
import { copyFixtureMisbehaviorPosition, parseMisbehavior, setFixtureMisbehaviorPosition, validateFixtureMisbehavior } from "./misbehavior.js";
|
|
7
9
|
import { readFileSync, readdirSync, statSync } from "node:fs";
|
|
8
10
|
import { join } from "node:path";
|
|
@@ -69,6 +71,7 @@ function entryToFixture(entry, logger, liveOptions, source) {
|
|
|
69
71
|
userMessage: entry.match.userMessage,
|
|
70
72
|
systemMessage: entry.match.systemMessage,
|
|
71
73
|
inputText: entry.match.inputText,
|
|
74
|
+
...entry.match.embeddingRequest !== void 0 && { embeddingRequest: entry.match.embeddingRequest },
|
|
72
75
|
toolCallId: entry.match.toolCallId,
|
|
73
76
|
toolResultContains: entry.match.toolResultContains,
|
|
74
77
|
toolName: entry.match.toolName,
|
|
@@ -90,6 +93,8 @@ function entryToFixture(entry, logger, liveOptions, source) {
|
|
|
90
93
|
...entry.replaySpeed != null && { replaySpeed: entry.replaySpeed },
|
|
91
94
|
...entry.chaos !== void 0 && { chaos: entry.chaos },
|
|
92
95
|
...entry.openRouterProcessing !== void 0 && { openRouterProcessing: entry.openRouterProcessing },
|
|
96
|
+
...entry.nonStreamingTiming !== void 0 && { nonStreamingTiming: entry.nonStreamingTiming },
|
|
97
|
+
...entry.nonStreamingTimingAllProviders !== void 0 && { nonStreamingTimingAllProviders: entry.nonStreamingTimingAllProviders },
|
|
93
98
|
...entry.metadata !== void 0 && { metadata: entry.metadata }
|
|
94
99
|
};
|
|
95
100
|
if (source) setFixtureMisbehaviorPosition(fixture, `${source.file}#${source.index}`);
|
|
@@ -297,6 +302,52 @@ function validateReasoning(response, fixtureIndex, results) {
|
|
|
297
302
|
});
|
|
298
303
|
}
|
|
299
304
|
}
|
|
305
|
+
/** The wires that read `files` and `citations`; every other wire ignores them. */
|
|
306
|
+
const CITATIONS_FILES_WIRES = "Chat Completions, Anthropic Messages, Gemini or the OpenAI Responses API";
|
|
307
|
+
/**
|
|
308
|
+
* Generated `files` and source `citations`. A malformed value is not a load
|
|
309
|
+
* error (registration never throws for it, as in the release that added the
|
|
310
|
+
* keys); each request the fixture serves on Chat Completions, Anthropic,
|
|
311
|
+
* Gemini or the Responses API answers a coded 500 instead, so warn here with
|
|
312
|
+
* the same message. Citations are checked against the text they cite when
|
|
313
|
+
* served ({@link citedText}). A turn with no text (tool calls only, blocks
|
|
314
|
+
* with no text block, or empty content) has nothing to cite, so any
|
|
315
|
+
* non-empty `citations` there is reported exactly as the wires report it.
|
|
316
|
+
*/
|
|
317
|
+
function validateCitationsAndFiles(response, fixtureIndex, results) {
|
|
318
|
+
const filesProblem = fixtureFilesProblem(response.files);
|
|
319
|
+
if (filesProblem !== void 0) results.push({
|
|
320
|
+
severity: "warning",
|
|
321
|
+
fixtureIndex,
|
|
322
|
+
message: `${filesProblem} — requests it serves on ${CITATIONS_FILES_WIRES} answer a 500 (aimock_invalid_fixture_file)`
|
|
323
|
+
});
|
|
324
|
+
const text = citedText(response);
|
|
325
|
+
if (text === void 0) return;
|
|
326
|
+
const citationsProblem = fixtureCitationsProblem(response.citations, text);
|
|
327
|
+
if (citationsProblem !== void 0) results.push({
|
|
328
|
+
severity: "warning",
|
|
329
|
+
fixtureIndex,
|
|
330
|
+
message: `${citationsProblem} — requests it serves on ${CITATIONS_FILES_WIRES} answer a 500 (aimock_invalid_fixture_citation)`
|
|
331
|
+
});
|
|
332
|
+
}
|
|
333
|
+
/**
|
|
334
|
+
* The text a fixture's citations index when served: the joined text of every
|
|
335
|
+
* text block when `responsesBlocks` or `blocks` is non-empty (through the
|
|
336
|
+
* same {@link resolveServedBlockOutcome} the providers use; empty when no
|
|
337
|
+
* block is text), else a string `content`, else empty for a tool-only turn.
|
|
338
|
+
* Empty text means a turn with nothing to cite. Undefined for a response
|
|
339
|
+
* that is neither (validated elsewhere) and for a malformed blocks array,
|
|
340
|
+
* which `validateBlocks` reports as an error.
|
|
341
|
+
*/
|
|
342
|
+
function citedText(response) {
|
|
343
|
+
if (Array.isArray(response.blocks) && response.blocks.length > 0 || Array.isArray(response.responsesBlocks) && response.responsesBlocks.length > 0) try {
|
|
344
|
+
return resolveServedBlockOutcome(response)?.content;
|
|
345
|
+
} catch {
|
|
346
|
+
return;
|
|
347
|
+
}
|
|
348
|
+
if (typeof response.content === "string") return response.content;
|
|
349
|
+
if (Array.isArray(response.toolCalls) || Array.isArray(response.customToolCalls)) return "";
|
|
350
|
+
}
|
|
300
351
|
function validateWebSearches(response, fixtureIndex, results) {
|
|
301
352
|
if (response.webSearches !== void 0) if (!Array.isArray(response.webSearches)) results.push({
|
|
302
353
|
severity: "error",
|
|
@@ -679,11 +730,29 @@ function validateFixtures(fixtures, liveOptions) {
|
|
|
679
730
|
});
|
|
680
731
|
}
|
|
681
732
|
if (typeof response === "function") {} else {
|
|
682
|
-
if (!isCombinedFixtureResponse(response) && !isTextResponse(response) && !isToolCallResponse(response) && !isErrorResponse(response) && !isEmbeddingResponse(response) && !isImageResponse(response) && !isAudioResponse(response) && !isTranscriptionResponse(response) && !isVideoResponse(response) && !isJSONResponse(response) && !isLiveResponse(response)) results.push({
|
|
733
|
+
if (!isCombinedFixtureResponse(response) && !isTextResponse(response) && !isToolCallResponse(response) && !isErrorResponse(response) && !isEmbeddingResponse(response) && !isImageResponse(response) && !isAudioResponse(response) && !isTranscriptionResponse(response) && !isVideoResponse(response) && !isJSONResponse(response) && !isLiveResponse(response) && !isRawResponse(response)) results.push({
|
|
683
734
|
severity: "error",
|
|
684
735
|
fixtureIndex: i,
|
|
685
|
-
message: "response is not a recognized type (must have content, toolCalls, error, embedding, image, audio, transcription, video, json, or
|
|
736
|
+
message: "response is not a recognized type (must have content, toolCalls, error, embedding, image, audio, transcription, video, json, live, or raw)"
|
|
686
737
|
});
|
|
738
|
+
if (isRawResponse(response)) {
|
|
739
|
+
const context = rawFixtureContext(original, response);
|
|
740
|
+
for (const finding of checkRawResponse(response.raw, context)) results.push({
|
|
741
|
+
severity: finding.severity,
|
|
742
|
+
fixtureIndex: i,
|
|
743
|
+
message: finding.message
|
|
744
|
+
});
|
|
745
|
+
if (f.chunkSize !== void 0) results.push({
|
|
746
|
+
severity: "warning",
|
|
747
|
+
fixtureIndex: i,
|
|
748
|
+
message: "chunkSize is ignored for raw fixtures: each event is one frame"
|
|
749
|
+
});
|
|
750
|
+
if (f.openRouterProcessing !== void 0) results.push({
|
|
751
|
+
severity: "warning",
|
|
752
|
+
fixtureIndex: i,
|
|
753
|
+
message: "openRouterProcessing is ignored for raw fixtures"
|
|
754
|
+
});
|
|
755
|
+
}
|
|
687
756
|
const hasNonEmptyBlocks = Array.isArray(response.blocks) && response.blocks.length > 0 || Array.isArray(response.responsesBlocks) && response.responsesBlocks.length > 0;
|
|
688
757
|
const hasCustomToolCalls = Array.isArray(response.customToolCalls) && response.customToolCalls.length > 0;
|
|
689
758
|
if (isTextResponse(response)) {
|
|
@@ -732,6 +801,7 @@ function validateFixtures(fixtures, liveOptions) {
|
|
|
732
801
|
}
|
|
733
802
|
validateBlocks(response, i, results);
|
|
734
803
|
validateResponsesToolKeys(response, i, results);
|
|
804
|
+
validateCitationsAndFiles(response, i, results);
|
|
735
805
|
if (isToolCallResponse(response)) {
|
|
736
806
|
if (response.toolCalls.length === 0 && !hasCustomToolCalls) results.push({
|
|
737
807
|
severity: "warning",
|
|
@@ -829,6 +899,11 @@ function validateFixtures(fixtures, liveOptions) {
|
|
|
829
899
|
fixtureIndex: i,
|
|
830
900
|
message: `override "role" must be a string, got ${typeof r.role}`
|
|
831
901
|
});
|
|
902
|
+
if (r.phase !== void 0 && r.phase !== "commentary" && r.phase !== "final_answer") results.push({
|
|
903
|
+
severity: "error",
|
|
904
|
+
fixtureIndex: i,
|
|
905
|
+
message: "override \"phase\" must be \"commentary\" or \"final_answer\""
|
|
906
|
+
});
|
|
832
907
|
if (r.systemFingerprint !== void 0 && typeof r.systemFingerprint !== "string") results.push({
|
|
833
908
|
severity: "error",
|
|
834
909
|
fixtureIndex: i,
|
|
@@ -839,52 +914,38 @@ function validateFixtures(fixtures, liveOptions) {
|
|
|
839
914
|
fixtureIndex: i,
|
|
840
915
|
message: `override "usage" must be an object`
|
|
841
916
|
});
|
|
842
|
-
else {
|
|
843
|
-
const
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
for (const key of Object.keys(r.usage)) {
|
|
858
|
-
const val = r.usage[key];
|
|
859
|
-
if (val === void 0) continue;
|
|
860
|
-
if (objectUsageFields.has(key)) if (typeof val !== "object" || val === null || Array.isArray(val)) results.push({
|
|
861
|
-
severity: "error",
|
|
862
|
-
fixtureIndex: i,
|
|
863
|
-
message: `override "usage.${key}" must be an object, got ${Array.isArray(val) ? "array" : typeof val}`
|
|
864
|
-
});
|
|
865
|
-
else {
|
|
866
|
-
const inner = val;
|
|
867
|
-
for (const innerKey of numericInnerFields[key]) {
|
|
868
|
-
const innerVal = inner[innerKey];
|
|
869
|
-
if (innerVal !== void 0 && typeof innerVal !== "number") results.push({
|
|
870
|
-
severity: "error",
|
|
871
|
-
fixtureIndex: i,
|
|
872
|
-
message: `override "usage.${key}.${innerKey}" must be a number, got ${typeof innerVal}`
|
|
873
|
-
});
|
|
874
|
-
}
|
|
875
|
-
}
|
|
876
|
-
else if (key === "is_byok") {
|
|
877
|
-
if (typeof val !== "boolean") results.push({
|
|
917
|
+
else for (const key of Object.keys(r.usage)) {
|
|
918
|
+
const val = r.usage[key];
|
|
919
|
+
if (val === void 0) continue;
|
|
920
|
+
const definition = getUsageFieldDefinition(key);
|
|
921
|
+
if (definition.kind === "number-or-object" && typeof val === "number") continue;
|
|
922
|
+
if (definition.kind === "object" || definition.kind === "number-or-object") if (typeof val !== "object" || val === null || Array.isArray(val)) results.push({
|
|
923
|
+
severity: "error",
|
|
924
|
+
fixtureIndex: i,
|
|
925
|
+
message: `override "usage.${key}" must be ${definition.kind === "number-or-object" ? "a number or object" : "an object"}, got ${Array.isArray(val) ? "array" : typeof val}`
|
|
926
|
+
});
|
|
927
|
+
else {
|
|
928
|
+
const inner = val;
|
|
929
|
+
for (const innerKey of definition.numericMembers) {
|
|
930
|
+
const innerVal = inner[innerKey];
|
|
931
|
+
if (innerVal !== void 0 && typeof innerVal !== "number") results.push({
|
|
878
932
|
severity: "error",
|
|
879
933
|
fixtureIndex: i,
|
|
880
|
-
message: `override "usage
|
|
934
|
+
message: `override "usage.${key}.${innerKey}" must be a number, got ${typeof innerVal}`
|
|
881
935
|
});
|
|
882
|
-
}
|
|
936
|
+
}
|
|
937
|
+
}
|
|
938
|
+
else if (definition.kind === "boolean") {
|
|
939
|
+
if (typeof val !== "boolean") results.push({
|
|
883
940
|
severity: "error",
|
|
884
941
|
fixtureIndex: i,
|
|
885
|
-
message: `override "usage
|
|
942
|
+
message: `override "usage.is_byok" must be a boolean, got ${typeof val}`
|
|
886
943
|
});
|
|
887
|
-
}
|
|
944
|
+
} else if (typeof val !== "number") results.push({
|
|
945
|
+
severity: "error",
|
|
946
|
+
fixtureIndex: i,
|
|
947
|
+
message: `override "usage.${key}" must be a number, got ${typeof val}`
|
|
948
|
+
});
|
|
888
949
|
}
|
|
889
950
|
}
|
|
890
951
|
}
|
|
@@ -908,6 +969,14 @@ function validateFixtures(fixtures, liveOptions) {
|
|
|
908
969
|
fixtureIndex: i,
|
|
909
970
|
message: "disconnectAfterMs must be >= 0"
|
|
910
971
|
});
|
|
972
|
+
for (const flag of ["nonStreamingTiming", "nonStreamingTimingAllProviders"]) {
|
|
973
|
+
const value = f[flag];
|
|
974
|
+
if (value !== void 0 && typeof value !== "boolean") results.push({
|
|
975
|
+
severity: "warning",
|
|
976
|
+
fixtureIndex: i,
|
|
977
|
+
message: `${flag} must be a boolean, got ${typeof value} — the opt-in is ignored`
|
|
978
|
+
});
|
|
979
|
+
}
|
|
911
980
|
if (f.streamingProfile !== void 0) {
|
|
912
981
|
const sp = f.streamingProfile;
|
|
913
982
|
if (sp.ttft !== void 0 && sp.ttft < 0) results.push({
|
|
@@ -1036,7 +1105,8 @@ function validateFixtures(fixtures, liveOptions) {
|
|
|
1036
1105
|
m.sequenceIndex,
|
|
1037
1106
|
m.turnIndex,
|
|
1038
1107
|
m.hasToolResult,
|
|
1039
|
-
...m.toolNamespace !== void 0 ? [`toolNamespace=${m.toolNamespace}`] : []
|
|
1108
|
+
...m.toolNamespace !== void 0 ? [`toolNamespace=${m.toolNamespace}`] : [],
|
|
1109
|
+
...m.embeddingRequest !== void 0 ? [JSON.stringify(m.embeddingRequest)] : []
|
|
1040
1110
|
].map((v) => v === void 0 ? "" : String(v)).join("|");
|
|
1041
1111
|
const prev = seenUserMessages.get(dedupKey);
|
|
1042
1112
|
if (prev !== void 0) {
|
|
@@ -1054,7 +1124,7 @@ function validateFixtures(fixtures, liveOptions) {
|
|
|
1054
1124
|
} else seenUserMessages.set(dedupKey, i);
|
|
1055
1125
|
}
|
|
1056
1126
|
const match = f.match;
|
|
1057
|
-
if (!(match.endpoint !== void 0 || match.context !== void 0 || match.userMessage !== void 0 || match.systemMessage !== void 0 || match.inputText !== void 0 || match.responseFormat !== void 0 || match.toolCallId !== void 0 || match.toolResultContains !== void 0 || match.toolName !== void 0 || match.toolNamespace !== void 0 || match.model !== void 0 || match.predicate !== void 0 || match.turnIndex !== void 0 || match.sequenceIndex !== void 0 || match.hasToolResult !== void 0) && i < fixtures.length - 1) {
|
|
1127
|
+
if (!(match.endpoint !== void 0 || match.context !== void 0 || match.userMessage !== void 0 || match.systemMessage !== void 0 || match.inputText !== void 0 || match.embeddingRequest !== void 0 || match.responseFormat !== void 0 || match.toolCallId !== void 0 || match.toolResultContains !== void 0 || match.toolName !== void 0 || match.toolNamespace !== void 0 || match.model !== void 0 || match.predicate !== void 0 || match.turnIndex !== void 0 || match.sequenceIndex !== void 0 || match.hasToolResult !== void 0) && i < fixtures.length - 1) {
|
|
1058
1128
|
const ref = {
|
|
1059
1129
|
rule: "catch-all-not-last",
|
|
1060
1130
|
shadowsFrom: i + 1,
|
|
@@ -1298,6 +1368,11 @@ const misbehaviorEnabledFixtures = /* @__PURE__ */ new WeakSet();
|
|
|
1298
1368
|
function enableHeldFixtureMisbehavior(fixture) {
|
|
1299
1369
|
const held = heldFixtureMisbehavior.get(fixture);
|
|
1300
1370
|
if (held === void 0) return;
|
|
1371
|
+
if (typeof fixture.response !== "function" && isRawResponse(fixture.response)) throw new MisbehaviorConfigError({
|
|
1372
|
+
rule: "misbehavior/not-applicable",
|
|
1373
|
+
file: held.file,
|
|
1374
|
+
detail: `${held.path}: misbehavior does not apply to raw fixtures`
|
|
1375
|
+
});
|
|
1301
1376
|
const parsed = parseMisbehavior(held.value, held.path);
|
|
1302
1377
|
if (parsed.ok) fixture.misbehavior = parsed.config;
|
|
1303
1378
|
const issue = parsed.ok ? validateFixtureMisbehavior(fixture, held.path) : parsed.issue;
|
|
@@ -1310,6 +1385,26 @@ function enableHeldFixtureMisbehavior(fixture) {
|
|
|
1310
1385
|
misbehaviorEnabledFixtures.add(fixture);
|
|
1311
1386
|
}
|
|
1312
1387
|
/**
|
|
1388
|
+
* @internal The facts about a raw fixture that {@link checkRawResponse} checks
|
|
1389
|
+
* beyond `raw` itself, for `served`, the response as this server reads it.
|
|
1390
|
+
* Load validation and serve time both use it, so they agree:
|
|
1391
|
+
*
|
|
1392
|
+
* - `otherResponseKeys`: top-level keys of the fixture's response as written
|
|
1393
|
+
* that `served` lacks. Only `customToolCalls` / `responsesBlocks` are ever
|
|
1394
|
+
* dropped (on a legacy server), and a fixture that writes either next to
|
|
1395
|
+
* `raw` is not a raw fixture to the router.
|
|
1396
|
+
* - `fixtureMisbehavior`: the fixture sets its own `misbehavior`, recognized
|
|
1397
|
+
* or still held.
|
|
1398
|
+
*/
|
|
1399
|
+
function rawFixtureContext(fixture, served) {
|
|
1400
|
+
const source = responsesToolsViewSource(fixture);
|
|
1401
|
+
const written = fixture.response;
|
|
1402
|
+
return {
|
|
1403
|
+
otherResponseKeys: typeof written === "function" ? [] : Object.keys(written).filter((key) => !(key in served)),
|
|
1404
|
+
fixtureMisbehavior: fixture.misbehavior !== void 0 || heldFixtureMisbehavior.has(source)
|
|
1405
|
+
};
|
|
1406
|
+
}
|
|
1407
|
+
/**
|
|
1313
1408
|
* @internal Mark a fixture whose `misbehavior` a server with misbehavior
|
|
1314
1409
|
* enabled has recognized, so `validateFixtures` checks it.
|
|
1315
1410
|
*/
|
|
@@ -1318,5 +1413,5 @@ function markFixtureMisbehaviorEnabled(fixture) {
|
|
|
1318
1413
|
}
|
|
1319
1414
|
|
|
1320
1415
|
//#endregion
|
|
1321
|
-
export { FixtureLoadError, INJECTED_STATUS_RANGE, MisbehaviorConfigError, claimOneShotError, clearFixtureQueue, enableHeldFixtureMisbehavior, entryToFixture, fixturesOf, hasMcpFakesKey, isInjectableStatus, isOneShotError, listFixtureDir, loadFixtureFile, loadFixturesFromDir, markFixtureMisbehaviorEnabled, markFixtureResponsesToolsExtended, normalizeResponse, normalizeResponsesToolsKeys, queueOneShotError, readFixtureJson, releaseOneShotError, renderValidationRef, responsesToolsExtendedView, responsesToolsViewSource, validateFixtures };
|
|
1416
|
+
export { FixtureLoadError, INJECTED_STATUS_RANGE, MisbehaviorConfigError, claimOneShotError, clearFixtureQueue, enableHeldFixtureMisbehavior, entryToFixture, fixturesOf, hasMcpFakesKey, isInjectableStatus, isOneShotError, listFixtureDir, loadFixtureFile, loadFixturesFromDir, markFixtureMisbehaviorEnabled, markFixtureResponsesToolsExtended, normalizeResponse, normalizeResponsesToolsKeys, queueOneShotError, rawFixtureContext, readFixtureJson, releaseOneShotError, renderValidationRef, responsesToolsExtendedView, responsesToolsViewSource, validateFixtures };
|
|
1322
1417
|
//# sourceMappingURL=fixture-loader.js.map
|