@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/ws-realtime.cjs
CHANGED
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
const require_runtime = require('./_virtual/_rolldown/runtime.cjs');
|
|
2
|
+
const require_errors = require('./response/errors.cjs');
|
|
2
3
|
const require_constants = require('./constants.cjs');
|
|
4
|
+
const require_policy = require('./response/policy.cjs');
|
|
3
5
|
const require_helpers = require('./helpers.cjs');
|
|
4
6
|
const require_sse_writer = require('./sse-writer.cjs');
|
|
5
7
|
const require_misbehavior = require('./misbehavior.cjs');
|
|
6
8
|
const require_router = require('./router.cjs');
|
|
7
9
|
require('./journal.cjs');
|
|
8
|
-
const
|
|
10
|
+
const require_lifecycle = require('./response/lifecycle.cjs');
|
|
11
|
+
const require_realtime = require('./response/usage/codecs/realtime.cjs');
|
|
9
12
|
let node_crypto = require("node:crypto");
|
|
10
13
|
|
|
11
14
|
//#region src/ws-realtime.ts
|
|
@@ -316,11 +319,11 @@ function sendEvent(ws, event, isBeta) {
|
|
|
316
319
|
function buildErrorRealtimeEvent(ws, message, isBeta, type = "invalid_request_error", code) {
|
|
317
320
|
sendEvent(ws, {
|
|
318
321
|
type: "error",
|
|
319
|
-
error: {
|
|
322
|
+
error: require_errors.buildOpenAIError({
|
|
320
323
|
message,
|
|
321
324
|
type,
|
|
322
325
|
code
|
|
323
|
-
}
|
|
326
|
+
})
|
|
324
327
|
}, isBeta);
|
|
325
328
|
}
|
|
326
329
|
/**
|
|
@@ -366,6 +369,7 @@ function rejectRetiredBetaShape(ws, logger) {
|
|
|
366
369
|
function handleWebSocketRealtime(ws, fixtures, journal, defaults) {
|
|
367
370
|
const { logger } = defaults;
|
|
368
371
|
const sessionId = realtimeId("sess");
|
|
372
|
+
require_lifecycle.watchWsClose(ws);
|
|
369
373
|
const isBeta = defaults.upgradeHeaders?.["openai-beta"] ? String(defaults.upgradeHeaders["openai-beta"]).includes("realtime=v1") : false;
|
|
370
374
|
if (isBeta) {
|
|
371
375
|
rejectRetiredBetaShape(ws, logger);
|
|
@@ -436,11 +440,11 @@ async function processMessage(raw, ws, fixtures, journal, defaults, session, con
|
|
|
436
440
|
if (!validTypes.has(s.type)) {
|
|
437
441
|
sendEvent(ws, {
|
|
438
442
|
type: "error",
|
|
439
|
-
error: {
|
|
443
|
+
error: require_errors.buildOpenAIError({
|
|
440
444
|
message: `Invalid session type: ${s.type}`,
|
|
441
445
|
type: "invalid_request_error",
|
|
442
446
|
code: "invalid_session_config"
|
|
443
|
-
}
|
|
447
|
+
})
|
|
444
448
|
}, isBeta);
|
|
445
449
|
return;
|
|
446
450
|
}
|
|
@@ -495,11 +499,11 @@ async function processMessage(raw, ws, fixtures, journal, defaults, session, con
|
|
|
495
499
|
Object.assign(session, prevSession);
|
|
496
500
|
sendEvent(ws, {
|
|
497
501
|
type: "error",
|
|
498
|
-
error: {
|
|
502
|
+
error: require_errors.buildOpenAIError({
|
|
499
503
|
message: `Model ${candidateTranscriptionModel} does not support session type transcription`,
|
|
500
504
|
type: "invalid_request_error",
|
|
501
505
|
code: "invalid_session_config"
|
|
502
|
-
}
|
|
506
|
+
})
|
|
503
507
|
}, isBeta);
|
|
504
508
|
return;
|
|
505
509
|
}
|
|
@@ -507,11 +511,11 @@ async function processMessage(raw, ws, fixtures, journal, defaults, session, con
|
|
|
507
511
|
Object.assign(session, prevSession);
|
|
508
512
|
sendEvent(ws, {
|
|
509
513
|
type: "error",
|
|
510
|
-
error: {
|
|
514
|
+
error: require_errors.buildOpenAIError({
|
|
511
515
|
message: `Model ${s.model ?? prevSession.model} does not support session type translation`,
|
|
512
516
|
type: "invalid_request_error",
|
|
513
517
|
code: "invalid_session_config"
|
|
514
|
-
}
|
|
518
|
+
})
|
|
515
519
|
}, isBeta);
|
|
516
520
|
return;
|
|
517
521
|
}
|
|
@@ -586,7 +590,7 @@ async function emitLiveTranscriptionEvents(ws, fixtures, journal, defaults, sess
|
|
|
586
590
|
const { fixture, skippedBySequenceOrTurn } = require_router.matchFixtureDiagnostic(fixtures, request, journal.getFixtureMatchCountsForTest(testId), defaults.requestTransform);
|
|
587
591
|
const itemId = audioItem.id ?? realtimeId("item");
|
|
588
592
|
if (!fixture) {
|
|
589
|
-
if (
|
|
593
|
+
if (require_policy.resolveRequestDecisions(defaults.strict, defaults.upgradeHeaders).fixtureMiss) {
|
|
590
594
|
const strictMessage = require_helpers.strictNoMatchMessage(skippedBySequenceOrTurn);
|
|
591
595
|
defaults.logger.error(require_helpers.strictNoMatchLogLine("WS", "/v1/realtime", skippedBySequenceOrTurn));
|
|
592
596
|
journal.add({
|
|
@@ -597,7 +601,7 @@ async function emitLiveTranscriptionEvents(ws, fixtures, journal, defaults, sess
|
|
|
597
601
|
response: {
|
|
598
602
|
status: 503,
|
|
599
603
|
fixture: null,
|
|
600
|
-
...
|
|
604
|
+
...require_policy.strictOverrideField(defaults.strict, defaults.upgradeHeaders)
|
|
601
605
|
}
|
|
602
606
|
});
|
|
603
607
|
ws.close(1008, strictMessage);
|
|
@@ -611,7 +615,7 @@ async function emitLiveTranscriptionEvents(ws, fixtures, journal, defaults, sess
|
|
|
611
615
|
response: {
|
|
612
616
|
status: 404,
|
|
613
617
|
fixture: null,
|
|
614
|
-
...
|
|
618
|
+
...require_policy.strictOverrideField(defaults.strict, defaults.upgradeHeaders)
|
|
615
619
|
}
|
|
616
620
|
});
|
|
617
621
|
sendLiveTranscriptionFailure(ws, itemId, {
|
|
@@ -674,18 +678,17 @@ async function emitLiveTranscriptionEvents(ws, fixtures, journal, defaults, sess
|
|
|
674
678
|
const latency = fixture.latency ?? defaults.latency;
|
|
675
679
|
const chunkSize = Math.max(1, fixture.chunkSize ?? defaults.chunkSize);
|
|
676
680
|
const replaySpeed = fixture.replaySpeed ?? defaults.replaySpeed;
|
|
677
|
-
const
|
|
681
|
+
const lifecycle = require_lifecycle.wsLifecycle(ws, fixture);
|
|
678
682
|
let chunkIndex = 0;
|
|
679
683
|
for (let index = 0; index < transcript.length; index += chunkSize) {
|
|
680
684
|
const chunkDelay = require_sse_writer.calculateDelay(chunkIndex, fixture.streamingProfile, latency, fixture.recordedTimings, replaySpeed);
|
|
681
|
-
if (chunkDelay > 0) await require_sse_writer.delay(chunkDelay,
|
|
682
|
-
if (
|
|
683
|
-
if (
|
|
684
|
-
journalEntry.
|
|
685
|
-
journalEntry.response.interruptReason = interruption.reason();
|
|
685
|
+
if (chunkDelay > 0) await require_sse_writer.delay(chunkDelay, lifecycle.signal);
|
|
686
|
+
if (lifecycle.signal.aborted || ws.isClosed) {
|
|
687
|
+
if (lifecycle.signal.aborted) {
|
|
688
|
+
require_lifecycle.markInterrupted(journalEntry, lifecycle.reason());
|
|
686
689
|
ws.destroy();
|
|
687
|
-
}
|
|
688
|
-
|
|
690
|
+
} else require_lifecycle.markWsTurnStopped(journalEntry, ws, lifecycle);
|
|
691
|
+
lifecycle.dispose();
|
|
689
692
|
return;
|
|
690
693
|
}
|
|
691
694
|
sendEvent(ws, {
|
|
@@ -694,14 +697,13 @@ async function emitLiveTranscriptionEvents(ws, fixtures, journal, defaults, sess
|
|
|
694
697
|
content_index: 0,
|
|
695
698
|
delta: transcript.slice(index, index + chunkSize)
|
|
696
699
|
}, isBeta);
|
|
697
|
-
|
|
700
|
+
lifecycle.tick();
|
|
698
701
|
chunkIndex++;
|
|
699
702
|
}
|
|
700
|
-
if (
|
|
701
|
-
journalEntry
|
|
702
|
-
journalEntry.response.interruptReason = interruption.reason();
|
|
703
|
+
if (lifecycle.signal.aborted || ws.isClosed) {
|
|
704
|
+
require_lifecycle.markWsTurnStopped(journalEntry, ws, lifecycle);
|
|
703
705
|
ws.destroy();
|
|
704
|
-
|
|
706
|
+
lifecycle.dispose();
|
|
705
707
|
return;
|
|
706
708
|
}
|
|
707
709
|
sendEvent(ws, {
|
|
@@ -712,7 +714,7 @@ async function emitLiveTranscriptionEvents(ws, fixtures, journal, defaults, sess
|
|
|
712
714
|
usage,
|
|
713
715
|
...response.transcription.languages !== void 0 ? { languages: response.transcription.languages } : {}
|
|
714
716
|
}, isBeta);
|
|
715
|
-
|
|
717
|
+
lifecycle.dispose();
|
|
716
718
|
}
|
|
717
719
|
function sendLiveTranscriptionFailure(ws, itemId, error, isBeta) {
|
|
718
720
|
sendEvent(ws, {
|
|
@@ -763,11 +765,7 @@ function checkRealtimeFixtureToolCalls(ws, journalEntry, responseId, isBeta, log
|
|
|
763
765
|
code: require_helpers.fixtureToolCallErrorCode(err)
|
|
764
766
|
}
|
|
765
767
|
},
|
|
766
|
-
usage: {
|
|
767
|
-
total_tokens: 0,
|
|
768
|
-
input_tokens: 0,
|
|
769
|
-
output_tokens: 0
|
|
770
|
-
}
|
|
768
|
+
usage: require_realtime.render({ kind: "ordinary-zero" })
|
|
771
769
|
}
|
|
772
770
|
}, isBeta);
|
|
773
771
|
return;
|
|
@@ -795,7 +793,7 @@ async function handleResponseCreate(ws, fixtures, journal, defaults, session, co
|
|
|
795
793
|
const responseId = realtimeId("resp");
|
|
796
794
|
if (fixture) journal.incrementFixtureMatchCount(fixture, fixtures, testId);
|
|
797
795
|
if (!fixture) {
|
|
798
|
-
if (
|
|
796
|
+
if (require_policy.resolveRequestDecisions(defaults.strict, defaults.upgradeHeaders).fixtureMiss) {
|
|
799
797
|
const strictMessage = require_helpers.strictNoMatchMessage(skippedBySequenceOrTurn);
|
|
800
798
|
defaults.logger.error(require_helpers.strictNoMatchLogLine("WS", "/v1/realtime", skippedBySequenceOrTurn));
|
|
801
799
|
journal.add({
|
|
@@ -806,7 +804,7 @@ async function handleResponseCreate(ws, fixtures, journal, defaults, session, co
|
|
|
806
804
|
response: {
|
|
807
805
|
status: 503,
|
|
808
806
|
fixture: null,
|
|
809
|
-
...
|
|
807
|
+
...require_policy.strictOverrideField(defaults.strict, defaults.upgradeHeaders)
|
|
810
808
|
}
|
|
811
809
|
});
|
|
812
810
|
ws.close(1008, strictMessage);
|
|
@@ -820,7 +818,7 @@ async function handleResponseCreate(ws, fixtures, journal, defaults, session, co
|
|
|
820
818
|
response: {
|
|
821
819
|
status: 404,
|
|
822
820
|
fixture: null,
|
|
823
|
-
...
|
|
821
|
+
...require_policy.strictOverrideField(defaults.strict, defaults.upgradeHeaders)
|
|
824
822
|
}
|
|
825
823
|
});
|
|
826
824
|
sendEvent(ws, {
|
|
@@ -849,11 +847,7 @@ async function handleResponseCreate(ws, fixtures, journal, defaults, session, co
|
|
|
849
847
|
code: "no_fixture_match"
|
|
850
848
|
}
|
|
851
849
|
},
|
|
852
|
-
usage: {
|
|
853
|
-
total_tokens: 0,
|
|
854
|
-
input_tokens: 0,
|
|
855
|
-
output_tokens: 0
|
|
856
|
-
}
|
|
850
|
+
usage: require_realtime.render({ kind: "ordinary-zero" })
|
|
857
851
|
}
|
|
858
852
|
}, isBeta);
|
|
859
853
|
return;
|
|
@@ -917,11 +911,10 @@ async function handleResponseCreate(ws, fixtures, journal, defaults, session, co
|
|
|
917
911
|
const usage = require_helpers.resolveOpenAIChatMisbehaviorUsage(misbehavior, completionReq, false);
|
|
918
912
|
await streamRealtimeBlocks(ws, blocks, responseId, fixture, defaults, latency, chunkSize, isBeta, conversationItems, journalEntry, {
|
|
919
913
|
stop: misbehavior.stop,
|
|
920
|
-
usage: {
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
}
|
|
914
|
+
usage: require_realtime.render({
|
|
915
|
+
kind: "applied-misbehavior",
|
|
916
|
+
usage
|
|
917
|
+
})
|
|
925
918
|
});
|
|
926
919
|
return;
|
|
927
920
|
}
|
|
@@ -953,11 +946,7 @@ async function handleResponseCreate(ws, fixtures, journal, defaults, session, co
|
|
|
953
946
|
code: response.error.code
|
|
954
947
|
}
|
|
955
948
|
},
|
|
956
|
-
usage: {
|
|
957
|
-
total_tokens: 0,
|
|
958
|
-
input_tokens: 0,
|
|
959
|
-
output_tokens: 0
|
|
960
|
-
}
|
|
949
|
+
usage: require_realtime.render({ kind: "ordinary-zero" })
|
|
961
950
|
}
|
|
962
951
|
}, isBeta);
|
|
963
952
|
return;
|
|
@@ -987,7 +976,7 @@ async function handleResponseCreate(ws, fixtures, journal, defaults, session, co
|
|
|
987
976
|
usage: null
|
|
988
977
|
}
|
|
989
978
|
}, isBeta);
|
|
990
|
-
const
|
|
979
|
+
const lifecycle = require_lifecycle.wsLifecycle(ws, fixture);
|
|
991
980
|
let interrupted = false;
|
|
992
981
|
const allOutputItems = [];
|
|
993
982
|
const textItemId = realtimeId("item");
|
|
@@ -1035,8 +1024,8 @@ async function handleResponseCreate(ws, fixtures, journal, defaults, session, co
|
|
|
1035
1024
|
for (let i = 0; i < content.length; i += chunkSize) {
|
|
1036
1025
|
if (ws.isClosed) break;
|
|
1037
1026
|
const chunkDelay = require_sse_writer.calculateDelay(eventIndex, void 0, latency, recordedTimings, replaySpeed);
|
|
1038
|
-
if (chunkDelay > 0) await require_sse_writer.delay(chunkDelay,
|
|
1039
|
-
if (
|
|
1027
|
+
if (chunkDelay > 0) await require_sse_writer.delay(chunkDelay, lifecycle.signal);
|
|
1028
|
+
if (lifecycle.signal.aborted) {
|
|
1040
1029
|
interrupted = true;
|
|
1041
1030
|
break;
|
|
1042
1031
|
}
|
|
@@ -1056,21 +1045,21 @@ async function handleResponseCreate(ws, fixtures, journal, defaults, session, co
|
|
|
1056
1045
|
break;
|
|
1057
1046
|
}
|
|
1058
1047
|
eventIndex++;
|
|
1059
|
-
|
|
1060
|
-
if (
|
|
1048
|
+
lifecycle.tick();
|
|
1049
|
+
if (lifecycle.signal.aborted) {
|
|
1061
1050
|
interrupted = true;
|
|
1062
1051
|
break;
|
|
1063
1052
|
}
|
|
1064
1053
|
}
|
|
1065
1054
|
if (interrupted) {
|
|
1066
1055
|
ws.destroy();
|
|
1067
|
-
journalEntry.
|
|
1068
|
-
|
|
1069
|
-
interruption?.cleanup();
|
|
1056
|
+
require_lifecycle.markInterrupted(journalEntry, lifecycle.reason());
|
|
1057
|
+
lifecycle.dispose();
|
|
1070
1058
|
return;
|
|
1071
1059
|
}
|
|
1072
1060
|
if (ws.isClosed) {
|
|
1073
|
-
|
|
1061
|
+
require_lifecycle.markWsTurnStopped(journalEntry, ws, lifecycle);
|
|
1062
|
+
lifecycle.dispose();
|
|
1074
1063
|
return;
|
|
1075
1064
|
}
|
|
1076
1065
|
sendEvent(ws, {
|
|
@@ -1082,7 +1071,8 @@ async function handleResponseCreate(ws, fixtures, journal, defaults, session, co
|
|
|
1082
1071
|
text: content
|
|
1083
1072
|
}, isBeta);
|
|
1084
1073
|
if (ws.isClosed) {
|
|
1085
|
-
|
|
1074
|
+
require_lifecycle.markWsTurnStopped(journalEntry, ws, lifecycle);
|
|
1075
|
+
lifecycle.dispose();
|
|
1086
1076
|
return;
|
|
1087
1077
|
}
|
|
1088
1078
|
sendEvent(ws, {
|
|
@@ -1097,7 +1087,8 @@ async function handleResponseCreate(ws, fixtures, journal, defaults, session, co
|
|
|
1097
1087
|
}
|
|
1098
1088
|
}, isBeta);
|
|
1099
1089
|
if (ws.isClosed) {
|
|
1100
|
-
|
|
1090
|
+
require_lifecycle.markWsTurnStopped(journalEntry, ws, lifecycle);
|
|
1091
|
+
lifecycle.dispose();
|
|
1101
1092
|
return;
|
|
1102
1093
|
}
|
|
1103
1094
|
sendEvent(ws, {
|
|
@@ -1121,7 +1112,8 @@ async function handleResponseCreate(ws, fixtures, journal, defaults, session, co
|
|
|
1121
1112
|
}
|
|
1122
1113
|
}, isBeta);
|
|
1123
1114
|
if (ws.isClosed) {
|
|
1124
|
-
|
|
1115
|
+
require_lifecycle.markWsTurnStopped(journalEntry, ws, lifecycle);
|
|
1116
|
+
lifecycle.dispose();
|
|
1125
1117
|
return;
|
|
1126
1118
|
}
|
|
1127
1119
|
allOutputItems.push(textOutputItem);
|
|
@@ -1157,8 +1149,8 @@ async function handleResponseCreate(ws, fixtures, journal, defaults, session, co
|
|
|
1157
1149
|
for (let i = 0; i < args.length; i += chunkSize) {
|
|
1158
1150
|
if (ws.isClosed) break;
|
|
1159
1151
|
const chunkDelay = require_sse_writer.calculateDelay(eventIndex, void 0, latency, recordedTimings, replaySpeed);
|
|
1160
|
-
if (chunkDelay > 0) await require_sse_writer.delay(chunkDelay,
|
|
1161
|
-
if (
|
|
1152
|
+
if (chunkDelay > 0) await require_sse_writer.delay(chunkDelay, lifecycle.signal);
|
|
1153
|
+
if (lifecycle.signal.aborted) {
|
|
1162
1154
|
interrupted = true;
|
|
1163
1155
|
break;
|
|
1164
1156
|
}
|
|
@@ -1178,8 +1170,8 @@ async function handleResponseCreate(ws, fixtures, journal, defaults, session, co
|
|
|
1178
1170
|
break;
|
|
1179
1171
|
}
|
|
1180
1172
|
eventIndex++;
|
|
1181
|
-
|
|
1182
|
-
if (
|
|
1173
|
+
lifecycle.tick();
|
|
1174
|
+
if (lifecycle.signal.aborted) {
|
|
1183
1175
|
interrupted = true;
|
|
1184
1176
|
break;
|
|
1185
1177
|
}
|
|
@@ -1221,13 +1213,15 @@ async function handleResponseCreate(ws, fixtures, journal, defaults, session, co
|
|
|
1221
1213
|
}
|
|
1222
1214
|
if (interrupted) {
|
|
1223
1215
|
ws.destroy();
|
|
1224
|
-
journalEntry.
|
|
1225
|
-
|
|
1226
|
-
|
|
1216
|
+
require_lifecycle.markInterrupted(journalEntry, lifecycle.reason());
|
|
1217
|
+
lifecycle.dispose();
|
|
1218
|
+
return;
|
|
1219
|
+
}
|
|
1220
|
+
lifecycle.dispose();
|
|
1221
|
+
if (ws.isClosed) {
|
|
1222
|
+
require_lifecycle.markWsTurnStopped(journalEntry, ws, lifecycle);
|
|
1227
1223
|
return;
|
|
1228
1224
|
}
|
|
1229
|
-
interruption?.cleanup();
|
|
1230
|
-
if (ws.isClosed) return;
|
|
1231
1225
|
sendEvent(ws, {
|
|
1232
1226
|
type: "response.done",
|
|
1233
1227
|
response: {
|
|
@@ -1235,11 +1229,7 @@ async function handleResponseCreate(ws, fixtures, journal, defaults, session, co
|
|
|
1235
1229
|
object: "realtime.response",
|
|
1236
1230
|
status: "completed",
|
|
1237
1231
|
output: allOutputItems,
|
|
1238
|
-
usage: {
|
|
1239
|
-
total_tokens: 0,
|
|
1240
|
-
input_tokens: 0,
|
|
1241
|
-
output_tokens: 0
|
|
1242
|
-
}
|
|
1232
|
+
usage: require_realtime.render({ kind: "ordinary-zero" })
|
|
1243
1233
|
}
|
|
1244
1234
|
}, isBeta);
|
|
1245
1235
|
conversationItems.push({
|
|
@@ -1307,14 +1297,14 @@ async function handleResponseCreate(ws, fixtures, journal, defaults, session, co
|
|
|
1307
1297
|
const content = response.content ?? "";
|
|
1308
1298
|
const replaySpeed = fixture.replaySpeed ?? defaults.replaySpeed;
|
|
1309
1299
|
const { recordedTimings } = fixture;
|
|
1310
|
-
const
|
|
1300
|
+
const lifecycle = require_lifecycle.wsLifecycle(ws, fixture);
|
|
1311
1301
|
let interrupted = false;
|
|
1312
1302
|
let eventIndex = 0;
|
|
1313
1303
|
for (let i = 0; i < content.length; i += chunkSize) {
|
|
1314
1304
|
if (ws.isClosed) break;
|
|
1315
1305
|
const chunkDelay = require_sse_writer.calculateDelay(eventIndex, void 0, latency, recordedTimings, replaySpeed);
|
|
1316
|
-
if (chunkDelay > 0) await require_sse_writer.delay(chunkDelay,
|
|
1317
|
-
if (
|
|
1306
|
+
if (chunkDelay > 0) await require_sse_writer.delay(chunkDelay, lifecycle.signal);
|
|
1307
|
+
if (lifecycle.signal.aborted) {
|
|
1318
1308
|
interrupted = true;
|
|
1319
1309
|
break;
|
|
1320
1310
|
}
|
|
@@ -1334,21 +1324,23 @@ async function handleResponseCreate(ws, fixtures, journal, defaults, session, co
|
|
|
1334
1324
|
break;
|
|
1335
1325
|
}
|
|
1336
1326
|
eventIndex++;
|
|
1337
|
-
|
|
1338
|
-
if (
|
|
1327
|
+
lifecycle.tick();
|
|
1328
|
+
if (lifecycle.signal.aborted) {
|
|
1339
1329
|
interrupted = true;
|
|
1340
1330
|
break;
|
|
1341
1331
|
}
|
|
1342
1332
|
}
|
|
1343
1333
|
if (interrupted) {
|
|
1344
1334
|
ws.destroy();
|
|
1345
|
-
journalEntry.
|
|
1346
|
-
|
|
1347
|
-
|
|
1335
|
+
require_lifecycle.markInterrupted(journalEntry, lifecycle.reason());
|
|
1336
|
+
lifecycle.dispose();
|
|
1337
|
+
return;
|
|
1338
|
+
}
|
|
1339
|
+
lifecycle.dispose();
|
|
1340
|
+
if (ws.isClosed) {
|
|
1341
|
+
require_lifecycle.markWsTurnStopped(journalEntry, ws, lifecycle);
|
|
1348
1342
|
return;
|
|
1349
1343
|
}
|
|
1350
|
-
interruption?.cleanup();
|
|
1351
|
-
if (ws.isClosed) return;
|
|
1352
1344
|
sendEvent(ws, {
|
|
1353
1345
|
type: "response.output_text.done",
|
|
1354
1346
|
response_id: responseId,
|
|
@@ -1395,11 +1387,7 @@ async function handleResponseCreate(ws, fixtures, journal, defaults, session, co
|
|
|
1395
1387
|
object: "realtime.response",
|
|
1396
1388
|
status: "completed",
|
|
1397
1389
|
output: [outputItem],
|
|
1398
|
-
usage: {
|
|
1399
|
-
total_tokens: 0,
|
|
1400
|
-
input_tokens: 0,
|
|
1401
|
-
output_tokens: 0
|
|
1402
|
-
}
|
|
1390
|
+
usage: require_realtime.render({ kind: "ordinary-zero" })
|
|
1403
1391
|
}
|
|
1404
1392
|
}, isBeta);
|
|
1405
1393
|
conversationItems.push({
|
|
@@ -1429,7 +1417,7 @@ async function handleResponseCreate(ws, fixtures, journal, defaults, session, co
|
|
|
1429
1417
|
}
|
|
1430
1418
|
}, isBeta);
|
|
1431
1419
|
const outputItems = [];
|
|
1432
|
-
const
|
|
1420
|
+
const lifecycle = require_lifecycle.wsLifecycle(ws, fixture);
|
|
1433
1421
|
const replaySpeed = fixture.replaySpeed ?? defaults.replaySpeed;
|
|
1434
1422
|
const { recordedTimings } = fixture;
|
|
1435
1423
|
let interrupted = false;
|
|
@@ -1464,8 +1452,8 @@ async function handleResponseCreate(ws, fixtures, journal, defaults, session, co
|
|
|
1464
1452
|
for (let i = 0; i < args.length; i += chunkSize) {
|
|
1465
1453
|
if (ws.isClosed) break;
|
|
1466
1454
|
const chunkDelay = require_sse_writer.calculateDelay(eventIndex, void 0, latency, recordedTimings, replaySpeed);
|
|
1467
|
-
if (chunkDelay > 0) await require_sse_writer.delay(chunkDelay,
|
|
1468
|
-
if (
|
|
1455
|
+
if (chunkDelay > 0) await require_sse_writer.delay(chunkDelay, lifecycle.signal);
|
|
1456
|
+
if (lifecycle.signal.aborted) {
|
|
1469
1457
|
interrupted = true;
|
|
1470
1458
|
break;
|
|
1471
1459
|
}
|
|
@@ -1485,8 +1473,8 @@ async function handleResponseCreate(ws, fixtures, journal, defaults, session, co
|
|
|
1485
1473
|
break;
|
|
1486
1474
|
}
|
|
1487
1475
|
eventIndex++;
|
|
1488
|
-
|
|
1489
|
-
if (
|
|
1476
|
+
lifecycle.tick();
|
|
1477
|
+
if (lifecycle.signal.aborted) {
|
|
1490
1478
|
interrupted = true;
|
|
1491
1479
|
break;
|
|
1492
1480
|
}
|
|
@@ -1526,13 +1514,15 @@ async function handleResponseCreate(ws, fixtures, journal, defaults, session, co
|
|
|
1526
1514
|
}
|
|
1527
1515
|
if (interrupted) {
|
|
1528
1516
|
ws.destroy();
|
|
1529
|
-
journalEntry.
|
|
1530
|
-
|
|
1531
|
-
|
|
1517
|
+
require_lifecycle.markInterrupted(journalEntry, lifecycle.reason());
|
|
1518
|
+
lifecycle.dispose();
|
|
1519
|
+
return;
|
|
1520
|
+
}
|
|
1521
|
+
lifecycle.dispose();
|
|
1522
|
+
if (ws.isClosed) {
|
|
1523
|
+
require_lifecycle.markWsTurnStopped(journalEntry, ws, lifecycle);
|
|
1532
1524
|
return;
|
|
1533
1525
|
}
|
|
1534
|
-
interruption?.cleanup();
|
|
1535
|
-
if (ws.isClosed) return;
|
|
1536
1526
|
sendEvent(ws, {
|
|
1537
1527
|
type: "response.done",
|
|
1538
1528
|
response: {
|
|
@@ -1540,11 +1530,7 @@ async function handleResponseCreate(ws, fixtures, journal, defaults, session, co
|
|
|
1540
1530
|
object: "realtime.response",
|
|
1541
1531
|
status: "completed",
|
|
1542
1532
|
output: outputItems,
|
|
1543
|
-
usage: {
|
|
1544
|
-
total_tokens: 0,
|
|
1545
|
-
input_tokens: 0,
|
|
1546
|
-
output_tokens: 0
|
|
1547
|
-
}
|
|
1533
|
+
usage: require_realtime.render({ kind: "ordinary-zero" })
|
|
1548
1534
|
}
|
|
1549
1535
|
}, isBeta);
|
|
1550
1536
|
for (const item of outputItems) conversationItems.push(item);
|
|
@@ -1574,7 +1560,7 @@ async function streamRealtimeBlocks(ws, blocks, responseId, fixture, defaults, l
|
|
|
1574
1560
|
usage: null
|
|
1575
1561
|
}
|
|
1576
1562
|
}, isBeta);
|
|
1577
|
-
const
|
|
1563
|
+
const lifecycle = require_lifecycle.wsLifecycle(ws, fixture);
|
|
1578
1564
|
let interrupted = false;
|
|
1579
1565
|
const allOutputItems = [];
|
|
1580
1566
|
const replaySpeed = fixture.replaySpeed ?? defaults.replaySpeed;
|
|
@@ -1626,8 +1612,8 @@ async function streamRealtimeBlocks(ws, blocks, responseId, fixture, defaults, l
|
|
|
1626
1612
|
for (let i = 0; i < text.length; i += chunkSize) {
|
|
1627
1613
|
if (ws.isClosed) break;
|
|
1628
1614
|
const chunkDelay = require_sse_writer.calculateDelay(eventIndex, void 0, latency, recordedTimings, replaySpeed);
|
|
1629
|
-
if (chunkDelay > 0) await require_sse_writer.delay(chunkDelay,
|
|
1630
|
-
if (
|
|
1615
|
+
if (chunkDelay > 0) await require_sse_writer.delay(chunkDelay, lifecycle.signal);
|
|
1616
|
+
if (lifecycle.signal.aborted) {
|
|
1631
1617
|
interrupted = true;
|
|
1632
1618
|
break;
|
|
1633
1619
|
}
|
|
@@ -1647,8 +1633,8 @@ async function streamRealtimeBlocks(ws, blocks, responseId, fixture, defaults, l
|
|
|
1647
1633
|
break;
|
|
1648
1634
|
}
|
|
1649
1635
|
eventIndex++;
|
|
1650
|
-
|
|
1651
|
-
if (
|
|
1636
|
+
lifecycle.tick();
|
|
1637
|
+
if (lifecycle.signal.aborted) {
|
|
1652
1638
|
interrupted = true;
|
|
1653
1639
|
break;
|
|
1654
1640
|
}
|
|
@@ -1727,8 +1713,8 @@ async function streamRealtimeBlocks(ws, blocks, responseId, fixture, defaults, l
|
|
|
1727
1713
|
for (let i = 0; i < args.length; i += chunkSize) {
|
|
1728
1714
|
if (ws.isClosed) break;
|
|
1729
1715
|
const chunkDelay = require_sse_writer.calculateDelay(eventIndex, void 0, latency, recordedTimings, replaySpeed);
|
|
1730
|
-
if (chunkDelay > 0) await require_sse_writer.delay(chunkDelay,
|
|
1731
|
-
if (
|
|
1716
|
+
if (chunkDelay > 0) await require_sse_writer.delay(chunkDelay, lifecycle.signal);
|
|
1717
|
+
if (lifecycle.signal.aborted) {
|
|
1732
1718
|
interrupted = true;
|
|
1733
1719
|
break;
|
|
1734
1720
|
}
|
|
@@ -1748,8 +1734,8 @@ async function streamRealtimeBlocks(ws, blocks, responseId, fixture, defaults, l
|
|
|
1748
1734
|
break;
|
|
1749
1735
|
}
|
|
1750
1736
|
eventIndex++;
|
|
1751
|
-
|
|
1752
|
-
if (
|
|
1737
|
+
lifecycle.tick();
|
|
1738
|
+
if (lifecycle.signal.aborted) {
|
|
1753
1739
|
interrupted = true;
|
|
1754
1740
|
break;
|
|
1755
1741
|
}
|
|
@@ -1791,13 +1777,15 @@ async function streamRealtimeBlocks(ws, blocks, responseId, fixture, defaults, l
|
|
|
1791
1777
|
}
|
|
1792
1778
|
if (interrupted) {
|
|
1793
1779
|
ws.destroy();
|
|
1794
|
-
journalEntry.
|
|
1795
|
-
|
|
1796
|
-
|
|
1780
|
+
require_lifecycle.markInterrupted(journalEntry, lifecycle.reason());
|
|
1781
|
+
lifecycle.dispose();
|
|
1782
|
+
return;
|
|
1783
|
+
}
|
|
1784
|
+
lifecycle.dispose();
|
|
1785
|
+
if (ws.isClosed) {
|
|
1786
|
+
require_lifecycle.markWsTurnStopped(journalEntry, ws, lifecycle);
|
|
1797
1787
|
return;
|
|
1798
1788
|
}
|
|
1799
|
-
interruption?.cleanup();
|
|
1800
|
-
if (ws.isClosed) return;
|
|
1801
1789
|
sendEvent(ws, {
|
|
1802
1790
|
type: "response.done",
|
|
1803
1791
|
response: {
|
|
@@ -1809,11 +1797,7 @@ async function streamRealtimeBlocks(ws, blocks, responseId, fixture, defaults, l
|
|
|
1809
1797
|
reason: fault.stop === "length" ? "max_output_tokens" : "content_filter"
|
|
1810
1798
|
} } : {},
|
|
1811
1799
|
output: allOutputItems,
|
|
1812
|
-
usage: fault?.usage ?? {
|
|
1813
|
-
total_tokens: 0,
|
|
1814
|
-
input_tokens: 0,
|
|
1815
|
-
output_tokens: 0
|
|
1816
|
-
}
|
|
1800
|
+
usage: fault?.usage ?? require_realtime.render({ kind: "ordinary-zero" })
|
|
1817
1801
|
}
|
|
1818
1802
|
}, isBeta);
|
|
1819
1803
|
for (const item of allOutputItems) {
|