@copilotkit/aimock 1.42.0 → 1.43.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 +56 -0
- package/README.md +102 -16
- package/dist/agui-mock.cjs +1 -1
- 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 +1 -1
- package/dist/agui-mock.js.map +1 -1
- package/dist/agui-recorder.cjs +33 -11
- package/dist/agui-recorder.cjs.map +1 -1
- package/dist/agui-recorder.d.cts +10 -1
- package/dist/agui-recorder.d.cts.map +1 -1
- package/dist/agui-recorder.d.ts +10 -1
- package/dist/agui-recorder.d.ts.map +1 -1
- package/dist/agui-recorder.js +33 -11
- package/dist/agui-recorder.js.map +1 -1
- package/dist/agui-types.d.cts +1 -0
- package/dist/agui-types.d.cts.map +1 -1
- package/dist/agui-types.d.ts +1 -0
- package/dist/agui-types.d.ts.map +1 -1
- package/dist/aimock-cli.cjs +38 -10
- package/dist/aimock-cli.cjs.map +1 -1
- package/dist/aimock-cli.d.cts +5 -0
- package/dist/aimock-cli.d.cts.map +1 -1
- package/dist/aimock-cli.d.ts +5 -0
- package/dist/aimock-cli.d.ts.map +1 -1
- package/dist/aimock-cli.js +38 -10
- package/dist/aimock-cli.js.map +1 -1
- package/dist/batches.cjs +458 -0
- package/dist/batches.cjs.map +1 -0
- package/dist/batches.d.cts +57 -0
- package/dist/batches.d.cts.map +1 -0
- package/dist/batches.d.ts +57 -0
- package/dist/batches.d.ts.map +1 -0
- package/dist/batches.js +453 -0
- package/dist/batches.js.map +1 -0
- package/dist/bedrock-converse.cjs +12 -8
- 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 +14 -10
- package/dist/bedrock-converse.js.map +1 -1
- package/dist/bedrock.cjs +10 -8
- 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 +12 -10
- package/dist/bedrock.js.map +1 -1
- package/dist/byteplus-video.cjs +3 -3
- package/dist/byteplus-video.cjs.map +1 -1
- package/dist/byteplus-video.js +4 -4
- package/dist/byteplus-video.js.map +1 -1
- package/dist/chaos.cjs +622 -72
- package/dist/chaos.cjs.map +1 -1
- package/dist/chaos.d.cts +164 -7
- package/dist/chaos.d.cts.map +1 -1
- package/dist/chaos.d.ts +164 -7
- package/dist/chaos.d.ts.map +1 -1
- package/dist/chaos.js +613 -74
- package/dist/chaos.js.map +1 -1
- package/dist/cli.cjs +42 -23
- package/dist/cli.cjs.map +1 -1
- package/dist/cli.js +42 -23
- package/dist/cli.js.map +1 -1
- package/dist/cohere.cjs +10 -8
- 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 +12 -10
- package/dist/cohere.js.map +1 -1
- package/dist/config-loader.d.cts.map +1 -1
- package/dist/config-loader.d.ts.map +1 -1
- package/dist/convert.cjs +1 -1
- package/dist/convert.cjs.map +1 -1
- package/dist/convert.js +1 -1
- package/dist/convert.js.map +1 -1
- package/dist/elevenlabs-audio.cjs +3 -3
- package/dist/elevenlabs-audio.cjs.map +1 -1
- package/dist/elevenlabs-audio.js +4 -4
- package/dist/elevenlabs-audio.js.map +1 -1
- package/dist/elevenlabs-voice.cjs +1053 -0
- package/dist/elevenlabs-voice.cjs.map +1 -0
- package/dist/elevenlabs-voice.d.cts +72 -0
- package/dist/elevenlabs-voice.d.cts.map +1 -0
- package/dist/elevenlabs-voice.d.ts +72 -0
- package/dist/elevenlabs-voice.d.ts.map +1 -0
- package/dist/elevenlabs-voice.js +1048 -0
- package/dist/elevenlabs-voice.js.map +1 -0
- package/dist/embeddings.cjs +8 -4
- 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 +9 -5
- package/dist/embeddings.js.map +1 -1
- package/dist/fal-audio.cjs +3 -3
- package/dist/fal-audio.cjs.map +1 -1
- package/dist/fal-audio.js +4 -4
- package/dist/fal-audio.js.map +1 -1
- package/dist/fal.cjs +28 -4
- package/dist/fal.cjs.map +1 -1
- package/dist/fal.d.cts +16 -1
- package/dist/fal.d.cts.map +1 -1
- package/dist/fal.d.ts +16 -1
- package/dist/fal.d.ts.map +1 -1
- package/dist/fal.js +28 -5
- package/dist/fal.js.map +1 -1
- package/dist/files.cjs +1071 -0
- package/dist/files.cjs.map +1 -0
- package/dist/files.d.cts +68 -0
- package/dist/files.d.cts.map +1 -0
- package/dist/files.d.ts +68 -0
- package/dist/files.d.ts.map +1 -0
- package/dist/files.js +1059 -0
- package/dist/files.js.map +1 -0
- package/dist/fine-tuning.cjs +1051 -0
- package/dist/fine-tuning.cjs.map +1 -0
- package/dist/fine-tuning.d.cts +96 -0
- package/dist/fine-tuning.d.cts.map +1 -0
- package/dist/fine-tuning.d.ts +96 -0
- package/dist/fine-tuning.d.ts.map +1 -0
- package/dist/fine-tuning.js +1044 -0
- package/dist/fine-tuning.js.map +1 -0
- package/dist/fixture-loader.cjs +0 -0
- package/dist/fixture-loader.cjs.map +1 -1
- package/dist/fixture-loader.d.cts +37 -5
- package/dist/fixture-loader.d.cts.map +1 -1
- package/dist/fixture-loader.d.ts +37 -5
- package/dist/fixture-loader.d.ts.map +1 -1
- package/dist/fixture-loader.js +0 -0
- package/dist/fixture-loader.js.map +1 -1
- package/dist/gemini-embeddings.cjs +2 -2
- package/dist/gemini-embeddings.cjs.map +1 -1
- package/dist/gemini-embeddings.js +3 -3
- package/dist/gemini-embeddings.js.map +1 -1
- package/dist/gemini-interactions.cjs +13 -7
- package/dist/gemini-interactions.cjs.map +1 -1
- package/dist/gemini-interactions.d.cts.map +1 -1
- package/dist/gemini-interactions.d.ts.map +1 -1
- package/dist/gemini-interactions.js +15 -9
- package/dist/gemini-interactions.js.map +1 -1
- package/dist/gemini.cjs +11 -7
- 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 +13 -9
- package/dist/gemini.js.map +1 -1
- package/dist/grok-video.cjs +14 -14
- package/dist/grok-video.cjs.map +1 -1
- package/dist/grok-video.js +15 -15
- package/dist/grok-video.js.map +1 -1
- package/dist/helpers.cjs +229 -7
- package/dist/helpers.cjs.map +1 -1
- package/dist/helpers.d.cts +38 -2
- package/dist/helpers.d.cts.map +1 -1
- package/dist/helpers.d.ts +38 -2
- package/dist/helpers.d.ts.map +1 -1
- package/dist/helpers.js +221 -8
- package/dist/helpers.js.map +1 -1
- package/dist/images.cjs +54 -123
- 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 +55 -124
- package/dist/images.js.map +1 -1
- package/dist/index.cjs +41 -8
- package/dist/index.d.cts +12 -7
- package/dist/index.d.ts +12 -7
- package/dist/index.js +14 -10
- package/dist/jest.cjs +14 -7
- package/dist/jest.cjs.map +1 -1
- package/dist/jest.d.cts +3 -2
- package/dist/jest.d.cts.map +1 -1
- package/dist/jest.d.ts +3 -2
- package/dist/jest.d.ts.map +1 -1
- package/dist/jest.js +14 -7
- package/dist/jest.js.map +1 -1
- package/dist/journal.cjs +41 -4
- package/dist/journal.cjs.map +1 -1
- package/dist/journal.d.cts +44 -3
- package/dist/journal.d.cts.map +1 -1
- package/dist/journal.d.ts +44 -3
- package/dist/journal.d.ts.map +1 -1
- package/dist/journal.js +41 -5
- package/dist/journal.js.map +1 -1
- package/dist/live-fixture.cjs +1192 -0
- package/dist/live-fixture.cjs.map +1 -0
- package/dist/live-fixture.js +1187 -0
- package/dist/live-fixture.js.map +1 -0
- package/dist/live-recorder.cjs +256 -0
- package/dist/live-recorder.cjs.map +1 -0
- package/dist/live-recorder.js +254 -0
- package/dist/live-recorder.js.map +1 -0
- package/dist/live-replay.cjs +286 -0
- package/dist/live-replay.cjs.map +1 -0
- package/dist/live-replay.js +285 -0
- package/dist/live-replay.js.map +1 -0
- package/dist/live-sanitize.cjs +196 -0
- package/dist/live-sanitize.cjs.map +1 -0
- package/dist/live-sanitize.js +196 -0
- package/dist/live-sanitize.js.map +1 -0
- package/dist/live-types.d.cts +71 -0
- package/dist/live-types.d.cts.map +1 -0
- package/dist/live-types.d.ts +71 -0
- package/dist/live-types.d.ts.map +1 -0
- package/dist/llmock.cjs +52 -41
- package/dist/llmock.cjs.map +1 -1
- package/dist/llmock.d.cts +16 -5
- package/dist/llmock.d.cts.map +1 -1
- package/dist/llmock.d.ts +16 -5
- package/dist/llmock.d.ts.map +1 -1
- package/dist/llmock.js +53 -42
- package/dist/llmock.js.map +1 -1
- package/dist/messages.cjs +11 -7
- 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 +13 -9
- package/dist/messages.js.map +1 -1
- package/dist/metrics.cjs +258 -5
- package/dist/metrics.cjs.map +1 -1
- package/dist/metrics.d.cts +3 -1
- package/dist/metrics.d.cts.map +1 -1
- package/dist/metrics.d.ts +3 -1
- package/dist/metrics.d.ts.map +1 -1
- package/dist/metrics.js +255 -6
- package/dist/metrics.js.map +1 -1
- package/dist/moderation.cjs +10 -1
- package/dist/moderation.cjs.map +1 -1
- package/dist/moderation.d.cts.map +1 -1
- package/dist/moderation.d.ts.map +1 -1
- package/dist/moderation.js +10 -1
- package/dist/moderation.js.map +1 -1
- package/dist/ollama.cjs +5 -5
- package/dist/ollama.cjs.map +1 -1
- package/dist/ollama.js +6 -6
- package/dist/ollama.js.map +1 -1
- package/dist/openrouter-video.cjs +5 -5
- package/dist/openrouter-video.cjs.map +1 -1
- package/dist/openrouter-video.js +6 -6
- package/dist/openrouter-video.js.map +1 -1
- package/dist/recorder.cjs +45 -9
- 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 +43 -11
- package/dist/recorder.js.map +1 -1
- package/dist/responses.cjs +4 -3
- package/dist/responses.cjs.map +1 -1
- package/dist/responses.js +5 -5
- package/dist/responses.js.map +1 -1
- package/dist/router.cjs +20 -33
- package/dist/router.cjs.map +1 -1
- package/dist/router.d.cts +4 -1
- package/dist/router.d.cts.map +1 -1
- package/dist/router.d.ts +4 -1
- package/dist/router.d.ts.map +1 -1
- package/dist/router.js +20 -34
- package/dist/router.js.map +1 -1
- package/dist/server.cjs +701 -625
- package/dist/server.cjs.map +1 -1
- package/dist/server.d.cts +1 -0
- package/dist/server.d.cts.map +1 -1
- package/dist/server.d.ts +1 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +704 -628
- package/dist/server.js.map +1 -1
- package/dist/speech.cjs +2 -2
- package/dist/speech.cjs.map +1 -1
- package/dist/speech.js +3 -3
- package/dist/speech.js.map +1 -1
- package/dist/transcription.cjs +4 -4
- package/dist/transcription.cjs.map +1 -1
- package/dist/transcription.js +5 -5
- package/dist/transcription.js.map +1 -1
- package/dist/types.d.cts +119 -16
- package/dist/types.d.cts.map +1 -1
- package/dist/types.d.ts +119 -16
- package/dist/types.d.ts.map +1 -1
- package/dist/validate-cli.cjs +925 -0
- package/dist/validate-cli.cjs.map +1 -0
- package/dist/validate-cli.js +924 -0
- package/dist/validate-cli.js.map +1 -0
- package/dist/vector-types.d.cts.map +1 -1
- package/dist/vector-types.d.ts.map +1 -1
- package/dist/veo-video.cjs +13 -13
- package/dist/veo-video.cjs.map +1 -1
- package/dist/veo-video.js +14 -14
- package/dist/veo-video.js.map +1 -1
- package/dist/video.cjs +4 -4
- package/dist/video.cjs.map +1 -1
- package/dist/video.d.cts +1 -1
- package/dist/video.d.cts.map +1 -1
- package/dist/video.d.ts +1 -1
- package/dist/video.d.ts.map +1 -1
- package/dist/video.js +5 -5
- package/dist/video.js.map +1 -1
- package/dist/vitest.cjs +13 -6
- package/dist/vitest.cjs.map +1 -1
- package/dist/vitest.d.cts +2 -1
- package/dist/vitest.d.cts.map +1 -1
- package/dist/vitest.d.ts +2 -1
- package/dist/vitest.d.ts.map +1 -1
- package/dist/vitest.js +14 -7
- package/dist/vitest.js.map +1 -1
- package/dist/watcher.cjs +2 -1
- package/dist/watcher.cjs.map +1 -1
- package/dist/watcher.js +2 -1
- package/dist/watcher.js.map +1 -1
- package/dist/ws-framing.cjs +150 -35
- package/dist/ws-framing.cjs.map +1 -1
- package/dist/ws-framing.d.cts +18 -3
- package/dist/ws-framing.d.cts.map +1 -1
- package/dist/ws-framing.d.ts +18 -3
- package/dist/ws-framing.d.ts.map +1 -1
- package/dist/ws-framing.js +151 -36
- package/dist/ws-framing.js.map +1 -1
- package/dist/ws-gemini-live.cjs +2 -2
- package/dist/ws-gemini-live.d.ts +2 -2
- package/dist/ws-gemini-live.js +2 -2
- package/dist/ws-live.cjs +401 -0
- package/dist/ws-live.cjs.map +1 -0
- package/dist/ws-live.js +400 -0
- package/dist/ws-live.js.map +1 -0
- package/dist/ws-realtime.cjs +46 -2
- package/dist/ws-realtime.cjs.map +1 -1
- package/dist/ws-realtime.d.cts.map +1 -1
- package/dist/ws-realtime.d.ts +2 -2
- package/dist/ws-realtime.d.ts.map +1 -1
- package/dist/ws-realtime.js +46 -2
- package/dist/ws-realtime.js.map +1 -1
- package/dist/ws-responses.cjs +2 -2
- package/dist/ws-responses.js +2 -2
- package/dist/ws-upstream.cjs +118 -0
- package/dist/ws-upstream.cjs.map +1 -0
- package/dist/ws-upstream.js +115 -0
- package/dist/ws-upstream.js.map +1 -0
- package/fixtures/openai-live-client.json +390 -0
- package/fixtures/openai-live-managed.json +709 -0
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"live-fixture.cjs","names":[],"sources":["../src/live-fixture.ts"],"sourcesContent":["import type {\n LiveFixtureResponse,\n LiveJson,\n LiveObject,\n LiveOptions,\n LivePosition,\n LiveTranscript,\n} from \"./live-types.js\";\n\nexport const DEFAULT_LIVE_OPTIONS = Object.freeze({\n maxSessions: 16,\n maxMessageBytes: 1024 * 1024,\n maxBufferedBytes: 2 * 1024 * 1024,\n maxWriteBytes: 1024 * 1024,\n maxDecodedAudioBytes: 16 * 1024 * 1024,\n maxDurationMs: 120_000,\n idleTimeoutMs: 30_000,\n mismatchTimeoutMs: 30_000,\n});\n\n// Frozen from independently reviewed contract.v3.json (a2ccf050b464c2ca0cfb2f8e880b4976\n// 17d2a028c5147662a1accbcbacd6339d). Additional JSON fields remain literal.\ninterface Shape {\n type?: string | string[];\n const?: LiveJson;\n enum?: LiveJson[];\n $ref?: string;\n anyOf?: Shape[];\n properties?: { [key: string]: Shape };\n required?: string[];\n items?: Shape;\n additionalProperties?: boolean;\n}\nconst DEFINITIONS: { [key: string]: Shape } = {\n Pcm24: {\n type: \"object\",\n properties: { type: { const: \"audio/pcm\" }, rate: { const: 24000 } },\n required: [\"type\", \"rate\"],\n additionalProperties: true,\n },\n Voice: {\n anyOf: [\n { type: \"string\" },\n {\n type: \"object\",\n properties: { id: { type: \"string\" } },\n required: [\"id\"],\n additionalProperties: true,\n },\n ],\n },\n Audio: {\n type: \"object\",\n properties: {\n format: { $ref: \"#/$defs/Pcm24\" },\n output: {\n type: \"object\",\n properties: { voice: { $ref: \"#/$defs/Voice\" } },\n required: [],\n additionalProperties: true,\n },\n },\n required: [],\n additionalProperties: true,\n },\n FunctionTool: {\n type: \"object\",\n properties: {\n type: { const: \"function\" },\n name: { type: \"string\" },\n description: { type: [\"string\", \"null\"] },\n parameters: { type: [\"object\", \"null\"] },\n strict: { type: [\"boolean\", \"null\"] },\n },\n required: [\"type\", \"name\"],\n additionalProperties: true,\n },\n Backend: {\n type: \"object\",\n properties: {\n model: { type: \"string\" },\n instructions: { type: [\"string\", \"null\"] },\n max_output_tokens: { type: [\"number\", \"null\"] },\n parallel_tool_calls: { type: [\"boolean\", \"null\"] },\n reasoning: {\n anyOf: [\n { type: \"null\" },\n {\n type: \"object\",\n properties: {\n effort: { enum: [\"none\", \"minimal\", \"low\", \"medium\", \"high\", \"xhigh\", null] },\n summary: { enum: [\"concise\", \"detailed\", \"auto\", null] },\n },\n required: [],\n additionalProperties: true,\n },\n ],\n },\n service_tier: {\n enum: [\"auto\", \"default\", \"fast_tier_temp_pilot\", \"flex\", \"priority\", \"ultrafast\", null],\n },\n text: {\n anyOf: [\n { type: \"null\" },\n {\n type: \"object\",\n properties: { verbosity: { enum: [\"low\", \"medium\", \"high\", null] } },\n required: [],\n additionalProperties: true,\n },\n ],\n },\n tool_choice: {\n anyOf: [\n { enum: [\"auto\", \"none\", \"required\"] },\n {\n type: \"object\",\n properties: { type: { const: \"function\" }, name: { type: \"string\" } },\n required: [\"type\", \"name\"],\n additionalProperties: true,\n },\n {\n type: \"object\",\n properties: {\n type: { const: \"mcp\" },\n name: { type: \"string\" },\n server_label: { type: \"string\" },\n },\n required: [\"type\", \"name\", \"server_label\"],\n additionalProperties: true,\n },\n ],\n },\n tools: {\n type: \"array\",\n items: {\n anyOf: [\n { $ref: \"#/$defs/FunctionTool\" },\n {\n type: \"object\",\n properties: { type: { const: \"web_search\" } },\n required: [\"type\"],\n additionalProperties: true,\n },\n ],\n },\n },\n },\n required: [\"model\"],\n additionalProperties: true,\n },\n BackendPatch: {\n type: \"object\",\n properties: {\n model: { type: \"string\" },\n instructions: { type: [\"string\", \"null\"] },\n max_output_tokens: { type: [\"number\", \"null\"] },\n parallel_tool_calls: { type: [\"boolean\", \"null\"] },\n reasoning: {\n anyOf: [\n { type: \"null\" },\n {\n type: \"object\",\n properties: {\n effort: { enum: [\"none\", \"minimal\", \"low\", \"medium\", \"high\", \"xhigh\", null] },\n summary: { enum: [\"concise\", \"detailed\", \"auto\", null] },\n },\n required: [],\n additionalProperties: true,\n },\n ],\n },\n service_tier: {\n enum: [\"auto\", \"default\", \"fast_tier_temp_pilot\", \"flex\", \"priority\", \"ultrafast\", null],\n },\n text: {\n anyOf: [\n { type: \"null\" },\n {\n type: \"object\",\n properties: { verbosity: { enum: [\"low\", \"medium\", \"high\", null] } },\n required: [],\n additionalProperties: true,\n },\n ],\n },\n tool_choice: {\n anyOf: [\n { enum: [\"auto\", \"none\", \"required\"] },\n {\n type: \"object\",\n properties: { type: { const: \"function\" }, name: { type: \"string\" } },\n required: [\"type\", \"name\"],\n additionalProperties: true,\n },\n {\n type: \"object\",\n properties: {\n type: { const: \"mcp\" },\n name: { type: \"string\" },\n server_label: { type: \"string\" },\n },\n required: [\"type\", \"name\", \"server_label\"],\n additionalProperties: true,\n },\n ],\n },\n tools: {\n type: \"array\",\n items: {\n anyOf: [\n { $ref: \"#/$defs/FunctionTool\" },\n {\n type: \"object\",\n properties: { type: { const: \"web_search\" } },\n required: [\"type\"],\n additionalProperties: true,\n },\n ],\n },\n },\n },\n required: [],\n additionalProperties: true,\n },\n Delegation: {\n anyOf: [\n { type: \"null\" },\n {\n type: \"object\",\n properties: { type: { const: \"client\" } },\n required: [\"type\"],\n additionalProperties: true,\n },\n {\n type: \"object\",\n properties: { type: { const: \"responses\" }, responses: { $ref: \"#/$defs/Backend\" } },\n required: [\"type\", \"responses\"],\n additionalProperties: true,\n },\n ],\n },\n DelegationPatch: {\n anyOf: [\n { type: \"null\" },\n {\n type: \"object\",\n properties: { type: { const: \"client\" } },\n required: [\"type\"],\n additionalProperties: true,\n },\n {\n type: \"object\",\n properties: { type: { const: \"responses\" }, responses: { $ref: \"#/$defs/BackendPatch\" } },\n required: [\"type\"],\n additionalProperties: true,\n },\n ],\n },\n SessionConfig: {\n type: \"object\",\n properties: {\n model: { const: \"gpt-live-1\" },\n audio: { $ref: \"#/$defs/Audio\" },\n delegation: { $ref: \"#/$defs/Delegation\" },\n instructions: { type: [\"string\", \"null\"] },\n store: { type: \"boolean\" },\n input: { type: \"array\", items: { type: \"object\" } },\n client: { type: \"object\" },\n },\n required: [\"model\"],\n additionalProperties: true,\n },\n SessionResource: {\n type: \"object\",\n properties: {\n model: { const: \"gpt-live-1\" },\n audio: { $ref: \"#/$defs/Audio\" },\n delegation: { $ref: \"#/$defs/Delegation\" },\n instructions: { type: [\"string\", \"null\"] },\n store: { type: \"boolean\" },\n input: { type: \"array\", items: { type: \"object\" } },\n client: { type: \"object\" },\n id: { type: \"string\" },\n expires_at: { type: \"number\" },\n status: { const: \"active\" },\n },\n required: [\"id\", \"expires_at\", \"model\", \"status\"],\n additionalProperties: true,\n },\n SessionPatch: {\n type: \"object\",\n properties: { delegation: { $ref: \"#/$defs/DelegationPatch\" } },\n required: [],\n additionalProperties: true,\n },\n Usage: {\n type: \"object\",\n properties: { seconds: { type: \"number\" } },\n required: [\"seconds\"],\n additionalProperties: true,\n },\n DelegationEventBody: {\n type: \"object\",\n properties: {\n id: { type: \"string\" },\n type: { const: \"delegation\" },\n target: { enum: [\"client\", \"responses\"] },\n response_id: { type: \"string\" },\n },\n required: [\"id\", \"type\", \"target\"],\n additionalProperties: true,\n },\n Error: {\n type: \"object\",\n properties: {\n type: { type: \"string\" },\n code: { type: \"string\" },\n message: { type: \"string\" },\n param: { type: [\"string\", \"null\"] },\n client_event_id: { type: \"string\" },\n },\n required: [\"type\", \"code\", \"message\"],\n additionalProperties: true,\n },\n FunctionOutput: {\n type: \"object\",\n properties: {\n type: { const: \"function_call_output\" },\n call_id: { type: \"string\" },\n output: { type: \"string\" },\n id: { type: \"string\" },\n status: { enum: [\"in_progress\", \"completed\", \"incomplete\"] },\n },\n required: [\"type\", \"call_id\", \"output\"],\n additionalProperties: true,\n },\n NestedResponse: {\n type: \"object\",\n properties: {\n type: { type: \"string\" },\n sequence_number: { type: \"number\" },\n response: {\n type: \"object\",\n properties: {\n id: { type: \"string\" },\n previous_response_id: { type: [\"string\", \"null\"] },\n status: { type: \"string\" },\n usage: { type: [\"object\", \"null\"] },\n output: { type: \"array\" },\n instructions: { type: [\"string\", \"null\"] },\n tools: { type: \"array\" },\n },\n required: [],\n additionalProperties: true,\n },\n item: {\n type: \"object\",\n properties: {\n id: { type: \"string\" },\n type: { type: \"string\" },\n call_id: { type: \"string\" },\n arguments: { type: \"string\" },\n name: { type: \"string\" },\n status: { type: \"string\" },\n },\n required: [],\n additionalProperties: true,\n },\n item_id: { type: \"string\" },\n output_index: { type: \"number\" },\n delta: { type: \"string\" },\n arguments: { type: \"string\" },\n },\n required: [],\n additionalProperties: true,\n },\n};\nconst CLIENT_SCHEMAS: { [key: string]: Shape } = {\n \"session.start\": {\n type: \"object\",\n properties: {\n type: { const: \"session.start\" },\n event_id: { type: [\"string\", \"null\"] },\n session: { $ref: \"#/$defs/SessionConfig\" },\n },\n required: [\"type\", \"session\"],\n additionalProperties: true,\n },\n \"session.update\": {\n type: \"object\",\n properties: {\n type: { const: \"session.update\" },\n event_id: { type: [\"string\", \"null\"] },\n session: { $ref: \"#/$defs/SessionPatch\" },\n },\n required: [\"type\", \"session\"],\n additionalProperties: true,\n },\n \"session.input_audio.append\": {\n type: \"object\",\n properties: {\n type: { const: \"session.input_audio.append\" },\n event_id: { type: [\"string\", \"null\"] },\n audio: { type: \"string\" },\n },\n required: [\"type\", \"audio\"],\n additionalProperties: true,\n },\n \"response.item.create\": {\n type: \"object\",\n properties: {\n type: { const: \"response.item.create\" },\n event_id: { type: [\"string\", \"null\"] },\n item: { $ref: \"#/$defs/FunctionOutput\" },\n },\n required: [\"type\", \"item\"],\n additionalProperties: true,\n },\n \"response.create\": {\n type: \"object\",\n properties: { type: { const: \"response.create\" }, event_id: { type: [\"string\", \"null\"] } },\n required: [\"type\"],\n additionalProperties: true,\n },\n \"session.close\": {\n type: \"object\",\n properties: { type: { const: \"session.close\" }, event_id: { type: [\"string\", \"null\"] } },\n required: [\"type\"],\n additionalProperties: true,\n },\n \"session.instructions.append\": {\n type: \"object\",\n properties: {\n type: { const: \"session.instructions.append\" },\n event_id: { type: [\"string\", \"null\"] },\n content: { type: \"string\" },\n delegation_id: { type: [\"string\", \"null\"] },\n },\n required: [\"type\", \"content\", \"delegation_id\"],\n additionalProperties: true,\n },\n \"session.thinking.append\": {\n type: \"object\",\n properties: {\n type: { const: \"session.thinking.append\" },\n event_id: { type: [\"string\", \"null\"] },\n content: { type: \"string\" },\n delegation_id: { type: [\"string\", \"null\"] },\n },\n required: [\"type\", \"content\", \"delegation_id\"],\n additionalProperties: true,\n },\n \"session.commentary.append\": {\n type: \"object\",\n properties: {\n type: { const: \"session.commentary.append\" },\n event_id: { type: [\"string\", \"null\"] },\n content: { type: \"string\" },\n delegation_id: { type: [\"string\", \"null\"] },\n },\n required: [\"type\", \"content\", \"delegation_id\"],\n additionalProperties: true,\n },\n \"session.input_audio.mute\": {\n type: \"object\",\n properties: {\n type: { const: \"session.input_audio.mute\" },\n event_id: { type: [\"string\", \"null\"] },\n },\n required: [\"type\"],\n additionalProperties: true,\n },\n \"session.input_audio.unmute\": {\n type: \"object\",\n properties: {\n type: { const: \"session.input_audio.unmute\" },\n event_id: { type: [\"string\", \"null\"] },\n },\n required: [\"type\"],\n additionalProperties: true,\n },\n};\nconst SERVER_SCHEMAS: { [key: string]: Shape } = {\n \"session.started\": {\n type: \"object\",\n properties: {\n type: { const: \"session.started\" },\n event_id: { type: \"string\" },\n client_event_id: { type: \"string\" },\n session: { $ref: \"#/$defs/SessionResource\" },\n },\n required: [\"type\", \"event_id\", \"session\"],\n additionalProperties: true,\n },\n \"session.updated\": {\n type: \"object\",\n properties: {\n type: { const: \"session.updated\" },\n event_id: { type: \"string\" },\n client_event_id: { type: \"string\" },\n session: { $ref: \"#/$defs/SessionResource\" },\n },\n required: [\"type\", \"event_id\", \"session\"],\n additionalProperties: true,\n },\n \"session.closed\": {\n type: \"object\",\n properties: {\n type: { const: \"session.closed\" },\n event_id: { type: \"string\" },\n client_event_id: { type: \"string\" },\n session: { $ref: \"#/$defs/SessionResource\" },\n usage: { $ref: \"#/$defs/Usage\" },\n reason: {\n enum: [\"close_requested\", \"expired\", \"content\", \"remote_hangup\", \"connection_lost\"],\n },\n },\n required: [\"type\", \"event_id\", \"session\", \"usage\", \"reason\"],\n additionalProperties: true,\n },\n \"session.output_audio.delta\": {\n type: \"object\",\n properties: {\n type: { const: \"session.output_audio.delta\" },\n delta: { type: \"string\" },\n start_ms: { type: \"number\" },\n end_ms: { type: \"number\" },\n },\n required: [\"type\", \"delta\"],\n additionalProperties: true,\n },\n \"session.input_transcript.delta\": {\n type: \"object\",\n properties: {\n type: { const: \"session.input_transcript.delta\" },\n event_id: { type: \"string\" },\n client_event_id: { type: \"string\" },\n start_ms: { type: \"number\" },\n end_ms: { type: \"number\" },\n delta: { type: \"string\" },\n },\n required: [\"type\", \"event_id\", \"start_ms\", \"end_ms\", \"delta\"],\n additionalProperties: true,\n },\n \"session.output_transcript.delta\": {\n type: \"object\",\n properties: {\n type: { const: \"session.output_transcript.delta\" },\n event_id: { type: \"string\" },\n client_event_id: { type: \"string\" },\n start_ms: { type: \"number\" },\n end_ms: { type: \"number\" },\n delta: { type: \"string\" },\n },\n required: [\"type\", \"event_id\", \"start_ms\", \"end_ms\", \"delta\"],\n additionalProperties: true,\n },\n \"session.instructions.appended\": {\n type: \"object\",\n properties: {\n type: { const: \"session.instructions.appended\" },\n event_id: { type: \"string\" },\n client_event_id: { type: \"string\" },\n start_ms: { type: \"number\" },\n end_ms: { type: \"number\" },\n },\n required: [\"type\", \"event_id\", \"start_ms\", \"end_ms\"],\n additionalProperties: true,\n },\n \"session.thinking.appended\": {\n type: \"object\",\n properties: {\n type: { const: \"session.thinking.appended\" },\n event_id: { type: \"string\" },\n client_event_id: { type: \"string\" },\n start_ms: { type: \"number\" },\n end_ms: { type: \"number\" },\n },\n required: [\"type\", \"event_id\", \"start_ms\", \"end_ms\"],\n additionalProperties: true,\n },\n \"session.commentary.appended\": {\n type: \"object\",\n properties: {\n type: { const: \"session.commentary.appended\" },\n event_id: { type: \"string\" },\n client_event_id: { type: \"string\" },\n start_ms: { type: \"number\" },\n end_ms: { type: \"number\" },\n },\n required: [\"type\", \"event_id\", \"start_ms\", \"end_ms\"],\n additionalProperties: true,\n },\n \"session.input_audio.muted\": {\n type: \"object\",\n properties: {\n type: { const: \"session.input_audio.muted\" },\n event_id: { type: \"string\" },\n client_event_id: { type: \"string\" },\n },\n required: [\"type\", \"event_id\"],\n additionalProperties: true,\n },\n \"session.input_audio.unmuted\": {\n type: \"object\",\n properties: {\n type: { const: \"session.input_audio.unmuted\" },\n event_id: { type: \"string\" },\n client_event_id: { type: \"string\" },\n },\n required: [\"type\", \"event_id\"],\n additionalProperties: true,\n },\n \"session.delegation.created\": {\n type: \"object\",\n properties: {\n type: { const: \"session.delegation.created\" },\n event_id: { type: \"string\" },\n client_event_id: { type: \"string\" },\n delegation: { $ref: \"#/$defs/DelegationEventBody\" },\n offset_ms: { type: \"number\" },\n },\n required: [\"type\", \"event_id\", \"delegation\", \"offset_ms\"],\n additionalProperties: true,\n },\n \"session.usage.updated\": {\n type: \"object\",\n properties: {\n type: { const: \"session.usage.updated\" },\n event_id: { type: \"string\" },\n client_event_id: { type: \"string\" },\n usage: { $ref: \"#/$defs/Usage\" },\n context_window: {\n type: \"object\",\n properties: { usage_ratio: { type: \"number\" } },\n required: [\"usage_ratio\"],\n additionalProperties: true,\n },\n },\n required: [\"type\", \"event_id\", \"usage\"],\n additionalProperties: true,\n },\n \"response.event\": {\n type: \"object\",\n properties: {\n type: { const: \"response.event\" },\n event_id: { type: \"string\" },\n client_event_id: { type: \"string\" },\n event: { $ref: \"#/$defs/NestedResponse\" },\n delegation_id: { type: [\"string\", \"null\"] },\n },\n required: [\"type\", \"event_id\", \"event\"],\n additionalProperties: true,\n },\n error: {\n type: \"object\",\n properties: {\n type: { const: \"error\" },\n event_id: { type: \"string\" },\n client_event_id: { type: \"string\" },\n error: { $ref: \"#/$defs/Error\" },\n },\n required: [\"type\", \"event_id\", \"error\"],\n additionalProperties: true,\n },\n};\nconst DOCUMENTED_ONLY = new Set([\n \"session.instructions.append\",\n \"session.input_audio.mute\",\n \"session.input_audio.unmute\",\n]);\n\nconst MAX_JSON_BYTES = 64 * 1024 * 1024;\nconst MAX_ENTRIES = 5_000_000;\nconst dangerous = new Set([\"__proto__\", \"prototype\", \"constructor\"]);\nfunction fail(path: string, message: string): never {\n throw new Error(`Live fixture ${path}: ${message}`);\n}\nfunction object(value: LiveJson | undefined, path: string): LiveObject {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) fail(path, \"must be an object\");\n return value;\n}\nfunction string(value: LiveJson | undefined, path: string): string {\n if (typeof value !== \"string\" || !value.length) fail(path, \"must be a nonempty string\");\n return value;\n}\nfunction integer(value: LiveJson | undefined, path: string): number {\n if (typeof value !== \"number\" || !Number.isSafeInteger(value) || value < 0)\n fail(path, \"must be a nonnegative safe integer\");\n return value;\n}\nfunction array(value: LiveJson | undefined, path: string): LiveJson[] {\n if (!Array.isArray(value)) fail(path, \"must be an array\");\n return value;\n}\n\n/** Clone before registration; reject getters, prototypes, cycles and oversized JSON before allocating. */\nfunction cloneJson(value: unknown, maxBytes = MAX_JSON_BYTES, rootPath = \"live\"): LiveJson {\n let bytes = 0;\n const ancestors = new Set<object>();\n function charge(count: number, path: string) {\n bytes += count;\n if (bytes > maxBytes) fail(path, \"exceeds JSON byte limit\");\n }\n function visit(current: unknown, path: string, depth: number): LiveJson {\n if (depth > 32) fail(path, \"exceeds JSON depth 32\");\n if (\n current === null ||\n typeof current === \"boolean\" ||\n typeof current === \"number\" ||\n typeof current === \"string\"\n ) {\n if (typeof current === \"number\" && !Number.isFinite(current))\n fail(path, \"must be finite JSON\");\n // A string's UTF-16 length is a lower bound on its serialized byte length.\n if (typeof current === \"string\" && current.length > maxBytes - bytes)\n fail(path, \"exceeds JSON byte limit\");\n charge(Buffer.byteLength(JSON.stringify(current)), path);\n return current;\n }\n if (typeof current !== \"object\") fail(path, \"must be JSON\");\n if (ancestors.has(current)) fail(path, \"contains a cycle\");\n const isArray = Array.isArray(current);\n if (\n Object.getPrototypeOf(current) !== (isArray ? Array.prototype : Object.prototype) &&\n Object.getPrototypeOf(current) !== null\n )\n fail(path, \"must have a plain JSON prototype\");\n if (Object.getOwnPropertySymbols(current).length) fail(path, \"symbol properties are not JSON\");\n ancestors.add(current);\n charge(2, path);\n const result: LiveObject | LiveJson[] = isArray ? [] : {};\n const keys = Object.getOwnPropertyNames(current);\n if (isArray && current.length > MAX_ENTRIES) fail(path, \"exceeds array entry limit\");\n let count = 0;\n for (const key of keys) {\n if (isArray && key === \"length\") continue;\n if (dangerous.has(key)) fail(`${path}.${key}`, \"unsafe property\");\n const desc = Object.getOwnPropertyDescriptor(current, key);\n if (!desc || !desc.enumerable || !(\"value\" in desc))\n fail(`${path}.${key}`, \"must be an enumerable data property\");\n if (isArray && key !== String(count)) fail(path, \"must be a dense JSON array\");\n charge((count++ ? 1 : 0) + (isArray ? 0 : Buffer.byteLength(JSON.stringify(key)) + 1), path);\n const child = visit(desc.value, isArray ? `${path}[${key}]` : `${path}.${key}`, depth + 1);\n if (Array.isArray(result)) result.push(child);\n else result[key] = child;\n }\n if (isArray && count !== current.length) fail(path, \"must be a dense JSON array\");\n ancestors.delete(current);\n return result;\n }\n return visit(value, rootPath, 0);\n}\n\nfunction shape(value: LiveJson | undefined, schema: Shape, path: string): void {\n if (schema.$ref) return shape(value, DEFINITIONS[schema.$ref.slice(\"#/$defs/\".length)], path);\n if (schema.anyOf) {\n for (const option of schema.anyOf) {\n try {\n shape(value, option, path);\n return;\n } catch {\n /* Try the next documented union member. */\n }\n }\n fail(path, \"does not match documented shape\");\n }\n if (\"const\" in schema && value !== schema.const)\n fail(path, `must equal ${JSON.stringify(schema.const)}`);\n if (schema.enum && !schema.enum.includes(value ?? null)) fail(path, \"is not a documented value\");\n if (schema.type) {\n const types = typeof schema.type === \"string\" ? [schema.type] : schema.type;\n const actual = value === null ? \"null\" : Array.isArray(value) ? \"array\" : typeof value;\n if (!types.includes(actual)) fail(path, `must be ${types.join(\" or \")}`);\n }\n if (schema.properties || schema.required) {\n const obj = object(value, path);\n for (const key of schema.required ?? [])\n if (!Object.hasOwn(obj, key)) fail(`${path}.${key}`, \"is required\");\n for (const [key, child] of Object.entries(schema.properties ?? {}))\n if (Object.hasOwn(obj, key)) shape(obj[key], child, `${path}.${key}`);\n }\n if (schema.items)\n array(value, path).forEach((item, i) => shape(item, schema.items!, `${path}[${i}]`));\n}\n\nexport function normalizeLiveOptions(options: LiveOptions = {}) {\n const result: { -readonly [K in keyof typeof DEFAULT_LIVE_OPTIONS]: number } = {\n ...DEFAULT_LIVE_OPTIONS,\n };\n for (const key of Object.keys(DEFAULT_LIVE_OPTIONS) as (keyof typeof DEFAULT_LIVE_OPTIONS)[]) {\n const value = options[key];\n if (value !== undefined) {\n if (!Number.isSafeInteger(value) || value <= 0)\n fail(`options.${key}`, \"must be a positive safe integer\");\n result[key] = value;\n }\n }\n if (\n options.secretValues !== undefined &&\n (!Array.isArray(options.secretValues) ||\n options.secretValues.some((value) => typeof value !== \"string\"))\n )\n fail(\"options.secretValues\", \"must be strings\");\n return { ...result, secretValues: options.secretValues?.slice() ?? [] };\n}\n\n/** Canonical object ordering without changing arrays or literal unknown fields. */\nfunction canonical(value: LiveJson): string {\n if (Array.isArray(value)) return `[${value.map(canonical).join(\",\")}]`;\n if (value && typeof value === \"object\")\n return `{${Object.keys(value)\n .sort()\n .map((key) => `${JSON.stringify(key)}:${canonical(value[key])}`)\n .join(\",\")}}`;\n return JSON.stringify(value);\n}\n// Provider snapshots may add resolved fields, but cannot change explicitly configured values.\nfunction matchConfiguration(expected: LiveJson, actual: LiveJson | undefined, path: string): void {\n if (expected && typeof expected === \"object\" && !Array.isArray(expected)) {\n const actualObject = object(actual, path);\n for (const [key, value] of Object.entries(expected))\n matchConfiguration(value, actualObject[key], `${path}.${key}`);\n } else if (actual === undefined || canonical(expected) !== canonical(actual))\n fail(path, \"differs from accepted configuration\");\n}\nfunction pcmBytes(value: LiveJson | undefined, path: string, remaining: number): number {\n if (typeof value !== \"string\") fail(path, \"must be canonical base64 PCM\");\n if (\n value.length % 4 ||\n !/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(value)\n )\n fail(path, \"must be canonical base64 PCM\");\n const bytes = (value.length / 4) * 3 - (value.endsWith(\"==\") ? 2 : value.endsWith(\"=\") ? 1 : 0);\n if (bytes > remaining) fail(path, \"exceeds decoded audio byte limit\");\n if (bytes % 2) fail(path, \"must contain complete PCM16 samples\");\n // Check unused padding bits without decoding/allocating a second audio buffer.\n const alphabet = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n if (\n (value.endsWith(\"==\") && alphabet.indexOf(value.at(-3)!) & 15) ||\n (value.endsWith(\"=\") && !value.endsWith(\"==\") && alphabet.indexOf(value.at(-2)!) & 3)\n )\n fail(path, \"must be canonical base64 PCM\");\n return bytes;\n}\n/** Shared shape check; callers retain capture source, mode and lifecycle policy. */\nfunction validateClientShape(event: LiveObject, path: string): void {\n const type = string(event.type, `${path}.type`);\n if (!Object.hasOwn(CLIENT_SCHEMAS, type)) fail(`${path}.type`, \"unsupported client command\");\n shape(event, CLIENT_SCHEMAS[type], path);\n}\n\n/** Validate one inbound command before matching a fixture or starting a recording.\n * Per-session audio totals, startup configuration and update/lifecycle policy belong to the caller.\n */\nexport function validateLiveClientEvent(value: unknown, options: LiveOptions = {}): LiveObject {\n const limits = normalizeLiveOptions(options);\n const event = object(\n cloneJson(value, Math.min(limits.maxMessageBytes, MAX_JSON_BYTES), \"event\"),\n \"event\",\n );\n validateClientShape(event, \"event\");\n if (event.type === \"session.input_audio.append\")\n pcmBytes(event.audio, \"event.audio\", limits.maxDecodedAudioBytes);\n return event;\n}\n\nfunction pointer(event: LiveObject, path: string): LiveJson | undefined {\n if (!path.startsWith(\"/\") || /~(?![01])/u.test(path))\n fail(\"bindings.pointer\", \"must be a JSON Pointer\");\n let value: LiveJson | undefined = event;\n for (const segment of path.slice(1).split(\"/\")) {\n const key = segment.replace(/~1/g, \"/\").replace(/~0/g, \"~\");\n if (dangerous.has(key)) fail(\"bindings.pointer\", \"unsafe segment\");\n if (!value || typeof value !== \"object\" || !Object.hasOwn(value, key)) return undefined;\n value = Array.isArray(value) ? value[Number(key)] : value[key];\n }\n return value;\n}\n\nexport type Site = {\n namespace: string;\n owner: \"client\" | \"server\";\n define: boolean;\n imported?: boolean;\n};\nconst lifecycle = new Set([\"response.created\", \"response.in_progress\", \"response.completed\"]);\nexport function bindingSites(event: LiveObject, direction: string): Map<string, Site> {\n const sites = new Map<string, Site>();\n const server = direction === \"server\";\n function add(\n path: string,\n namespace: string,\n define = false,\n owner: \"client\" | \"server\" = \"server\",\n imported = false,\n ) {\n if (typeof pointer(event, path) === \"string\")\n sites.set(path, { namespace, owner, define, imported });\n }\n add(\"/event_id\", server ? \"server-event\" : \"client-event\", true, server ? \"server\" : \"client\");\n if (server) add(\"/client_event_id\", \"client-event\", false, \"client\");\n if (server && event.type === \"error\")\n add(\"/error/client_event_id\", \"client-event\", false, \"client\");\n if (\n server &&\n [\"session.started\", \"session.updated\", \"session.closed\"].includes(String(event.type))\n )\n add(\"/session/id\", \"session\", event.type === \"session.started\");\n if (server && event.type === \"session.delegation.created\") {\n add(\"/delegation/id\", \"delegation\", true);\n add(\"/delegation/response_id\", \"response\", true);\n }\n if (\n (!server &&\n [\n \"session.thinking.append\",\n \"session.commentary.append\",\n \"session.instructions.append\",\n ].includes(String(event.type))) ||\n (server && event.type === \"response.event\")\n )\n add(\"/delegation_id\", \"delegation\");\n if (!server && event.type === \"response.item.create\") add(\"/item/call_id\", \"tool-call\");\n if (server && event.type === \"response.event\") {\n const nested = object(event.event, \"event.event\");\n add(\"/event/response/id\", \"response\", nested.type === \"response.created\");\n add(\n \"/event/response/previous_response_id\",\n \"response\",\n false,\n \"server\",\n lifecycle.has(String(nested.type)),\n );\n add(\"/event/item/id\", \"response-item\", nested.type === \"response.output_item.added\");\n add(\"/event/item_id\", \"response-item\");\n add(\"/event/item/call_id\", \"tool-call\", nested.type === \"response.output_item.added\");\n }\n return sites;\n}\n\nexport function validateLiveTranscript(value: unknown, options: LiveOptions = {}): LiveTranscript {\n const limits = normalizeLiveOptions(options);\n const root = object(cloneJson(value), \"live\");\n if (root.version !== 1) fail(\"version\", \"must equal 1\");\n if (root.model !== \"gpt-live-1\") fail(\"model\", \"must equal gpt-live-1\");\n if (root.mode !== \"client\" && root.mode !== \"managed\") fail(\"mode\", \"must be client or managed\");\n const audio = object(root.audio, \"audio\");\n if (audio.encoding !== \"pcm16le\" || audio.sampleRateHz !== 24000 || audio.channels !== 1)\n fail(\"audio\", \"requires mono PCM16LE at 24000 Hz\");\n const config = object(root.configuration, \"configuration\");\n shape(config, DEFINITIONS.SessionConfig, \"configuration\");\n shape(\n object(config.audio, \"configuration.audio\").format,\n DEFINITIONS.Pcm24,\n \"configuration.audio.format\",\n );\n const delegation = object(config.delegation, \"configuration.delegation\");\n if (delegation.type !== (root.mode === \"managed\" ? \"responses\" : \"client\"))\n fail(\"configuration.delegation\", \"must match mode explicitly\");\n let effectiveConfiguration = structuredClone(config);\n const capture = object(root.capture, \"capture\");\n if (capture.complete !== true)\n fail(\"capture.complete\", \"only complete successful captures are loadable\");\n if (capture.source !== \"authored\" && capture.source !== \"provider\")\n fail(\"capture.source\", \"must be authored or provider\");\n if (capture.provenance !== undefined) {\n const provenance = object(capture.provenance, \"capture.provenance\");\n string(provenance.host, \"capture.provenance.host\");\n string(provenance.referenceVersion, \"capture.provenance.referenceVersion\");\n if (\n !Number.isFinite(Date.parse(string(provenance.observedAt, \"capture.provenance.observedAt\")))\n )\n fail(\"capture.provenance.observedAt\", \"must be a timestamp\");\n if (provenance.path !== \"/v1/live/sessions\" || provenance.sanitationVersion !== 1)\n fail(\"capture.provenance\", \"invalid path or sanitationVersion\");\n }\n const entries = array(root.entries, \"entries\");\n if (!entries.length || entries.length > MAX_ENTRIES) fail(\"entries\", \"invalid entry count\");\n const terminal = integer(capture.terminalEntry, \"capture.terminalEntry\");\n if (terminal !== entries.length - 1)\n fail(\"capture.terminalEntry\", \"must identify the final session.closed event\");\n const bindings = array(root.bindings, \"bindings\");\n const byEntry = new Map<number, { binding: LiveObject; path: string }[]>();\n bindings.forEach((raw, index) => {\n const path = `bindings[${index}]`;\n const binding = object(raw, path);\n const entry = integer(binding.entry, `${path}.entry`);\n if (entry >= entries.length) fail(`${path}.entry`, \"out of range\");\n const bucket = byEntry.get(entry) ?? [];\n bucket.push({ binding, path });\n byEntry.set(entry, bucket);\n });\n const identities = new Map<string, { name: string; owner: string; value: string }>();\n const names = new Map<\n string,\n { namespace: string; owner: string; value: string; acceptedAt?: LivePosition }\n >();\n let command = 0,\n audioBytes = 0,\n previousTime = -1,\n previousServerCommand = 0,\n previousServerAudio = 0;\n const runBytes = new Map<number, number>([[0, 0]]);\n const totals = { client: 0, server: 0 };\n for (let i = 0; i < entries.length; i++) {\n const path = `entries[${i}]`;\n const entry = object(entries[i], path);\n if (entry.direction !== \"client\" && entry.direction !== \"server\")\n fail(`${path}.direction`, \"must be client or server\");\n const atMs = integer(entry.atMs, `${path}.atMs`);\n if (atMs < previousTime || atMs > limits.maxDurationMs)\n fail(`${path}.atMs`, \"must be monotonic and within duration limit\");\n previousTime = atMs;\n const event = object(entry.event, `${path}.event`);\n const type = string(event.type, `${path}.event.type`);\n const client = entry.direction === \"client\";\n if (client) {\n validateClientShape(event, `${path}.event`);\n if (capture.source === \"provider\" && DOCUMENTED_ONLY.has(type))\n fail(`${path}.event.type`, \"unsupported client command for this capture source\");\n } else if (Object.hasOwn(SERVER_SCHEMAS, type))\n shape(event, SERVER_SCHEMAS[type], `${path}.event`);\n if (Buffer.byteLength(JSON.stringify(event)) > limits.maxMessageBytes)\n fail(`${path}.event`, \"exceeds message byte limit\");\n if (type === \"error\") fail(`${path}.event`, \"error probes are not successful fixtures\");\n if (i === 0 && (!client || type !== \"session.start\"))\n fail(path, \"must begin with client session.start\");\n if (type === \"session.start\") {\n if (!client || i !== 0) fail(`${path}.event.type`, \"session.start is only valid at startup\");\n if (canonical(event.session) !== canonical(config))\n fail(`${path}.event.session`, \"must equal configuration\");\n }\n if (type === \"session.update\" && client) {\n const patch = object(event.session, `${path}.event.session`);\n const del = object(patch.delegation, `${path}.event.session.delegation`);\n const backend = object(del.responses, `${path}.event.session.delegation.responses`);\n if (\n root.mode !== \"managed\" ||\n Object.keys(patch).some((key) => key !== \"delegation\") ||\n Object.keys(del).some((key) => key !== \"type\" && key !== \"responses\") ||\n (del.type !== undefined && del.type !== \"responses\") ||\n Object.keys(backend).some((key) => key !== \"instructions\") ||\n !Object.hasOwn(backend, \"instructions\")\n )\n fail(`${path}.event.session`, \"only observed backend instructions update is supported\");\n }\n if (client && type === \"session.update\") {\n const backend = object(\n object(\n object(event.session, `${path}.event.session`).delegation,\n `${path}.event.session.delegation`,\n ).responses,\n `${path}.event.session.delegation.responses`,\n );\n const del = object(effectiveConfiguration.delegation, \"configuration.delegation\");\n effectiveConfiguration = {\n ...effectiveConfiguration,\n delegation: {\n ...del,\n responses: {\n ...object(del.responses, \"configuration.delegation.responses\"),\n instructions: backend.instructions,\n },\n },\n };\n }\n if (!client && [\"session.started\", \"session.updated\", \"session.closed\"].includes(type))\n matchConfiguration(effectiveConfiguration, event.session, `${path}.event.session`);\n if (!client && type === \"response.event\") {\n const nested = object(event.event, `${path}.event.event`);\n if (lifecycle.has(String(nested.type)))\n string(\n object(nested.response, `${path}.event.event.response`).id,\n `${path}.event.event.response.id`,\n );\n if (\n [\"response.output_item.added\", \"response.output_item.done\"].includes(String(nested.type)) &&\n object(nested.item, `${path}.event.event.item`).type === \"function_call\"\n ) {\n const item = object(nested.item, `${path}.event.event.item`);\n for (const field of [\"id\", \"call_id\", \"name\"])\n string(item[field], `${path}.event.event.item.${field}`);\n if (typeof item.arguments !== \"string\")\n fail(`${path}.event.event.item.arguments`, \"must be a string\");\n }\n if (\n [\n \"response.function_call_arguments.delta\",\n \"response.function_call_arguments.done\",\n ].includes(String(nested.type))\n )\n string(nested.item_id, `${path}.event.event.item_id`);\n }\n let decoded = 0;\n if (\n (client && type === \"session.input_audio.append\") ||\n (!client && type === \"session.output_audio.delta\")\n ) {\n decoded = pcmBytes(\n event[client ? \"audio\" : \"delta\"],\n `${path}.event.${client ? \"audio\" : \"delta\"}`,\n limits.maxDecodedAudioBytes - totals[entry.direction],\n );\n totals[entry.direction] += decoded;\n }\n if (client) {\n if (entry.barrier !== undefined)\n fail(`${path}.barrier`, \"client entries cannot have barriers\");\n if (type === \"session.input_audio.append\") audioBytes += decoded;\n else {\n command++;\n audioBytes = 0;\n }\n runBytes.set(command, audioBytes);\n } else {\n const barrier = object(entry.barrier, `${path}.barrier`);\n const c = integer(barrier.command, `${path}.barrier.command`);\n const a = integer(barrier.audioBytes, `${path}.barrier.audioBytes`);\n if (\n a % 2 ||\n c > command ||\n a > (runBytes.get(c) ?? -1) ||\n c < previousServerCommand ||\n (c === previousServerCommand && a < previousServerAudio)\n )\n fail(\n `${path}.barrier`,\n \"must be monotonic, sample-aligned and within preceding client prefix\",\n );\n previousServerCommand = c;\n previousServerAudio = a;\n }\n if (\n i === terminal &&\n (client ||\n type !== \"session.closed\" ||\n ![\"close_requested\", \"remote_hangup\"].includes(String(event.reason)))\n )\n fail(\"capture.terminalEntry\", \"must identify successful server session.closed\");\n if (i !== terminal && type === \"session.closed\")\n fail(`${path}.event.type`, \"session.closed must be terminal\");\n const sites = bindingSites(event, entry.direction);\n const annotated = new Set<string>();\n // Ordinary definitions first, imported definitions next, then references at one wire entry.\n const ordered = (byEntry.get(i) ?? []).slice().sort((a, b) => {\n const rank = (binding: LiveObject) =>\n binding.action === \"reference\" ? 2 : binding.origin === \"imported-context\" ? 1 : 0;\n return rank(a.binding) - rank(b.binding);\n });\n for (const { binding, path: bindingPath } of ordered) {\n const ptr = string(binding.pointer, `${bindingPath}.pointer`);\n const value = pointer(event, ptr);\n const site = sites.get(ptr);\n if (!site || typeof value !== \"string\" || !value.length)\n fail(`${bindingPath}.pointer`, \"not a non-null described identifier field\");\n if (annotated.has(ptr)) fail(bindingPath, \"duplicate pointer annotation\");\n annotated.add(ptr);\n const name = string(binding.name, `${bindingPath}.name`);\n if (binding.owner !== site.owner) fail(`${bindingPath}.owner`, \"does not match descriptor\");\n if (binding.action !== \"define\" && binding.action !== \"reference\")\n fail(`${bindingPath}.action`, \"must be define or reference\");\n if (\n binding.origin !== undefined &&\n binding.origin !== \"observed\" &&\n binding.origin !== \"imported-context\"\n )\n fail(`${bindingPath}.origin`, \"invalid origin\");\n const imported = binding.origin === \"imported-context\";\n if (\n imported &&\n (binding.action !== \"define\" || !site.imported || client || site.owner !== \"server\")\n )\n fail(`${bindingPath}.origin`, \"illegal imported-context site\");\n const key = JSON.stringify([site.namespace, value]);\n const prior = identities.get(key);\n const named = names.get(name);\n if (binding.action === \"define\") {\n if ((!site.define && !imported) || prior || named)\n fail(bindingPath, \"invalid or duplicate identity definition\");\n identities.set(key, { name, owner: site.owner, value });\n names.set(name, {\n namespace: site.namespace,\n owner: site.owner,\n value,\n ...(client ? { acceptedAt: { command, audioBytes } } : {}),\n });\n } else if (\n !prior ||\n !named ||\n prior.name !== name ||\n named.namespace !== site.namespace ||\n named.owner !== site.owner ||\n named.value !== value\n )\n fail(bindingPath, \"reference precedes definition or violates identifier bijection\");\n else if (\n !client &&\n named.acceptedAt &&\n (previousServerCommand < named.acceptedAt.command ||\n (previousServerCommand === named.acceptedAt.command &&\n previousServerAudio < named.acceptedAt.audioBytes))\n )\n fail(`${path}.barrier`, `precedes referenced client input at ${ptr}`);\n }\n for (const ptr of sites.keys())\n if (!annotated.has(ptr)) fail(`${path}.event${ptr}`, \"missing identifier binding\");\n }\n // Every structural field and all JSON values have been checked above; the cast exposes the public contract.\n return root as LiveObject & LiveTranscript;\n}\n\nexport function normalizeLiveFixture(\n value: unknown,\n options: LiveOptions = {},\n): LiveFixtureResponse {\n if (!value || typeof value !== \"object\" || Array.isArray(value))\n fail(\"response\", \"must be an object\");\n const descriptor = Object.getOwnPropertyDescriptor(value, \"live\");\n if (!descriptor || !(\"value\" in descriptor))\n fail(\"response.live\", \"must be an own data property\");\n const timing = Object.getOwnPropertyDescriptor(value, \"liveTiming\");\n if (\n timing &&\n (!(\"value\" in timing) || (timing.value !== \"recorded\" && timing.value !== \"immediate\"))\n )\n fail(\"response.liveTiming\", \"must be recorded or immediate\");\n const live = validateLiveTranscript(descriptor.value, options);\n return timing ? { live, liveTiming: timing.value } : { live };\n}\n"],"mappings":"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"}
|