@memberjunction/ai-realtime-client 5.48.0 → 5.49.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/README.md +11 -0
- package/dist/drivers/huggingFaceRealtimeClient.d.ts +27 -148
- package/dist/drivers/huggingFaceRealtimeClient.d.ts.map +1 -1
- package/dist/drivers/huggingFaceRealtimeClient.js +41 -388
- package/dist/drivers/huggingFaceRealtimeClient.js.map +1 -1
- package/dist/drivers/openAIRealtimeClient.d.ts +28 -270
- package/dist/drivers/openAIRealtimeClient.d.ts.map +1 -1
- package/dist/drivers/openAIRealtimeClient.js +42 -379
- package/dist/drivers/openAIRealtimeClient.js.map +1 -1
- package/dist/drivers/xaiRealtimeClient.d.ts +57 -370
- package/dist/drivers/xaiRealtimeClient.d.ts.map +1 -1
- package/dist/drivers/xaiRealtimeClient.js +85 -554
- package/dist/drivers/xaiRealtimeClient.js.map +1 -1
- package/dist/generic/openAIProtocolClient.d.ts +527 -0
- package/dist/generic/openAIProtocolClient.d.ts.map +1 -0
- package/dist/generic/openAIProtocolClient.js +873 -0
- package/dist/generic/openAIProtocolClient.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xaiRealtimeClient.js","sourceRoot":"","sources":["../../src/drivers/xaiRealtimeClient.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"xaiRealtimeClient.js","sourceRoot":"","sources":["../../src/drivers/xaiRealtimeClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,527 @@
|
|
|
1
|
+
import { ClientRealtimeSessionConfig, JSONObject } from '@memberjunction/ai';
|
|
2
|
+
import { BaseRealtimeClient, RealtimeClientState } from './baseRealtimeClient.js';
|
|
3
|
+
import { IRealtimePcmPlayback } from '../audio/pcmPlayback.js';
|
|
4
|
+
import { IPcmMicCapture } from '../audio/micCapture.js';
|
|
5
|
+
/** Streaming delta of the assistant's spoken-text transcript (GA or beta event name). */
|
|
6
|
+
export interface OAIProtocolTranscriptDelta {
|
|
7
|
+
type: 'response.output_audio_transcript.delta' | 'response.audio_transcript.delta';
|
|
8
|
+
delta: string;
|
|
9
|
+
response_id?: string;
|
|
10
|
+
item_id?: string;
|
|
11
|
+
}
|
|
12
|
+
/** Final assistant transcript for a turn (GA or beta event name). */
|
|
13
|
+
export interface OAIProtocolTranscriptDone {
|
|
14
|
+
type: 'response.output_audio_transcript.done' | 'response.audio_transcript.done';
|
|
15
|
+
transcript: string;
|
|
16
|
+
response_id?: string;
|
|
17
|
+
item_id?: string;
|
|
18
|
+
}
|
|
19
|
+
/** One base64 PCM16 chunk of the agent's spoken output (websocket transports only). */
|
|
20
|
+
export interface OAIProtocolAudioDelta {
|
|
21
|
+
type: 'response.audio.delta' | 'response.output_audio.delta';
|
|
22
|
+
delta: string;
|
|
23
|
+
response_id?: string;
|
|
24
|
+
item_id?: string;
|
|
25
|
+
}
|
|
26
|
+
/** Final transcription of the user's spoken input for a turn. */
|
|
27
|
+
export interface OAIProtocolInputTranscriptionCompleted {
|
|
28
|
+
type: 'conversation.item.input_audio_transcription.completed';
|
|
29
|
+
transcript: string;
|
|
30
|
+
item_id?: string;
|
|
31
|
+
}
|
|
32
|
+
/** The model finished assembling a function (tool) call and wants it executed. */
|
|
33
|
+
export interface OAIProtocolFunctionCallArgumentsDone {
|
|
34
|
+
type: 'response.function_call_arguments.done';
|
|
35
|
+
call_id: string;
|
|
36
|
+
name: string;
|
|
37
|
+
/** JSON-encoded arguments. */
|
|
38
|
+
arguments: string;
|
|
39
|
+
}
|
|
40
|
+
/** The provider detected the user starting to speak (barge-in). */
|
|
41
|
+
export interface OAIProtocolSpeechStarted {
|
|
42
|
+
type: 'input_audio_buffer.speech_started';
|
|
43
|
+
}
|
|
44
|
+
/** A new response (turn) started — tracked so we never start a second overlapping response. */
|
|
45
|
+
export interface OAIProtocolResponseCreated {
|
|
46
|
+
type: 'response.created';
|
|
47
|
+
}
|
|
48
|
+
/** The endpoint confirmed the session exists (used by deferring transports as the config gate). */
|
|
49
|
+
export interface OAIProtocolSessionCreated {
|
|
50
|
+
type: 'session.created';
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* A full response (turn) completed — carries the usage payload for THIS response
|
|
54
|
+
* (`input_tokens` / `output_tokens`), i.e. per-response DELTAS, exactly the `OnUsage`
|
|
55
|
+
* contract shape.
|
|
56
|
+
*/
|
|
57
|
+
export interface OAIProtocolResponseDone {
|
|
58
|
+
type: 'response.done';
|
|
59
|
+
response?: {
|
|
60
|
+
usage?: {
|
|
61
|
+
input_tokens?: number;
|
|
62
|
+
output_tokens?: number;
|
|
63
|
+
[detail: string]: unknown;
|
|
64
|
+
};
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* WebRTC-only playback events: the provider-managed client audio buffer started/stopped
|
|
69
|
+
* PLAYING. Websocket transports own their playback locally and never receive these.
|
|
70
|
+
*/
|
|
71
|
+
export interface OAIProtocolOutputAudioBufferStarted {
|
|
72
|
+
type: 'output_audio_buffer.started';
|
|
73
|
+
}
|
|
74
|
+
export interface OAIProtocolOutputAudioBufferStopped {
|
|
75
|
+
type: 'output_audio_buffer.stopped' | 'output_audio_buffer.cleared';
|
|
76
|
+
}
|
|
77
|
+
/** Provider-side error frame. */
|
|
78
|
+
export interface OAIProtocolErrorEvent {
|
|
79
|
+
type: 'error';
|
|
80
|
+
error?: {
|
|
81
|
+
message?: string;
|
|
82
|
+
code?: string;
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
/** Events whose `type` we don't explicitly handle still parse to this shape. */
|
|
86
|
+
export interface OAIProtocolUnknownEvent {
|
|
87
|
+
type: string;
|
|
88
|
+
}
|
|
89
|
+
export type OpenAIProtocolServerEvent = OAIProtocolTranscriptDelta | OAIProtocolTranscriptDone | OAIProtocolAudioDelta | OAIProtocolInputTranscriptionCompleted | OAIProtocolFunctionCallArgumentsDone | OAIProtocolSpeechStarted | OAIProtocolResponseCreated | OAIProtocolSessionCreated | OAIProtocolResponseDone | OAIProtocolOutputAudioBufferStarted | OAIProtocolOutputAudioBufferStopped | OAIProtocolErrorEvent | OAIProtocolUnknownEvent;
|
|
90
|
+
/** Applies the server-built session config (instructions + tools) to the live session. */
|
|
91
|
+
export interface OAIProtocolSessionUpdateEvent {
|
|
92
|
+
type: 'session.update';
|
|
93
|
+
session: JSONObject;
|
|
94
|
+
}
|
|
95
|
+
/** A user or system `message` conversation item. */
|
|
96
|
+
export interface OAIProtocolMessageItem {
|
|
97
|
+
type: 'message';
|
|
98
|
+
role: 'user' | 'system';
|
|
99
|
+
content: Array<{
|
|
100
|
+
type: 'input_text';
|
|
101
|
+
text: string;
|
|
102
|
+
}>;
|
|
103
|
+
}
|
|
104
|
+
/** The output of an executed function (tool) call, correlated by `call_id`. */
|
|
105
|
+
export interface OAIProtocolFunctionCallOutputItem {
|
|
106
|
+
type: 'function_call_output';
|
|
107
|
+
call_id: string;
|
|
108
|
+
output: string;
|
|
109
|
+
}
|
|
110
|
+
/** Creates a conversation item (message or tool output). */
|
|
111
|
+
export interface OAIProtocolConversationItemCreateEvent {
|
|
112
|
+
type: 'conversation.item.create';
|
|
113
|
+
item: OAIProtocolMessageItem | OAIProtocolFunctionCallOutputItem;
|
|
114
|
+
}
|
|
115
|
+
/** Asks the model to produce a response, optionally with one-off instructions. */
|
|
116
|
+
export interface OAIProtocolResponseCreateEvent {
|
|
117
|
+
type: 'response.create';
|
|
118
|
+
response?: {
|
|
119
|
+
instructions: string;
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
/** Cancels the model's in-flight response (generation stops; a response.done follows). */
|
|
123
|
+
export interface OAIProtocolResponseCancelEvent {
|
|
124
|
+
type: 'response.cancel';
|
|
125
|
+
}
|
|
126
|
+
/** WebRTC-only: stops + clears the provider-managed output audio buffer immediately. */
|
|
127
|
+
export interface OAIProtocolOutputAudioBufferClearEvent {
|
|
128
|
+
type: 'output_audio_buffer.clear';
|
|
129
|
+
}
|
|
130
|
+
/** Appends one base64 PCM16 mic chunk to the provider's input audio buffer (websocket transports). */
|
|
131
|
+
export interface OAIProtocolInputAudioBufferAppendEvent {
|
|
132
|
+
type: 'input_audio_buffer.append';
|
|
133
|
+
audio: string;
|
|
134
|
+
}
|
|
135
|
+
export type OpenAIProtocolClientEvent = OAIProtocolSessionUpdateEvent | OAIProtocolConversationItemCreateEvent | OAIProtocolResponseCreateEvent | OAIProtocolResponseCancelEvent | OAIProtocolOutputAudioBufferClearEvent | OAIProtocolInputAudioBufferAppendEvent;
|
|
136
|
+
/**
|
|
137
|
+
* The shared **OpenAI-protocol brain** for realtime CLIENT drivers — the transport-agnostic
|
|
138
|
+
* middle layer between {@link BaseRealtimeClient} and the per-provider drivers.
|
|
139
|
+
*
|
|
140
|
+
* Every OpenAI-protocol provider (OpenAI itself over WebRTC, xAI Grok Voice and self-hosted
|
|
141
|
+
* HuggingFace over websockets) shares the exact same event vocabulary and turn discipline, so
|
|
142
|
+
* this class owns — ONCE — the pieces that were previously cloned per driver:
|
|
143
|
+
*
|
|
144
|
+
* - **Inbound event dispatch** ({@link handleEvent}): GA + beta transcript names, input
|
|
145
|
+
* transcription, tool calls, barge-in gating, playback-buffer events, provider error frames.
|
|
146
|
+
* - **The response state machine**: `responseActive` set on `response.created` / cleared on
|
|
147
|
+
* `response.done`; tool-result `response.create`s queued while a response is in flight and
|
|
148
|
+
* flushed on `response.done` so the model ALWAYS voices delegated results.
|
|
149
|
+
* - **Narration-kind tagging**: {@link RequestSpokenUpdate} marks the NEXT response as
|
|
150
|
+
* `'narration'` so its transcripts are emitted with `Kind: 'narration'` (ephemeral).
|
|
151
|
+
* - **The outbound actions**: {@link SendText} (implies barge-in), {@link SendContextNote},
|
|
152
|
+
* {@link SendToolResult}, {@link CancelActiveResponse}, {@link SetMuted}.
|
|
153
|
+
*
|
|
154
|
+
* Transport specifics stay in subclasses through a small set of seams: {@link canSendEvents} /
|
|
155
|
+
* {@link sendProtocolEvent} (the wire), {@link stopAudioOutput} (how already-generated speech is
|
|
156
|
+
* silenced), {@link handleAudioDeltaFrame} (websocket transports enqueue PCM; WebRTC ignores —
|
|
157
|
+
* audio rides the peer connection), and per-provider behavioral overrides
|
|
158
|
+
* ({@link onUserTranscriptFrame}, {@link onSpeechStartedFrame}, {@link releasesBusyFlagOnToolCall}).
|
|
159
|
+
*/
|
|
160
|
+
export declare abstract class OpenAIProtocolRealtimeClient extends BaseRealtimeClient {
|
|
161
|
+
/** Accumulates the in-flight assistant transcript across delta frames. */
|
|
162
|
+
protected pendingAssistantText: string;
|
|
163
|
+
/** True while the model has a response in flight; gates narration + queues the tool result. */
|
|
164
|
+
protected responseActive: boolean;
|
|
165
|
+
/** Set when a tool result is ready while a response is active; sent on the next response.done. */
|
|
166
|
+
protected pendingResultResponse: boolean;
|
|
167
|
+
/**
|
|
168
|
+
* Count of locally-initiated `response.create`s whose `response.created` echo has not arrived
|
|
169
|
+
* yet. While non-zero, a `response.done` belongs to an EARLIER (typically just-cancelled)
|
|
170
|
+
* response — it must not clear the busy flag, flush the queued trigger, or flip the state for
|
|
171
|
+
* the response we just started (usage is still emitted). Consumed by `response.created`.
|
|
172
|
+
*/
|
|
173
|
+
protected pendingLocalResponseCreates: number;
|
|
174
|
+
/**
|
|
175
|
+
* True while a response the provider has CONFIRMED (`response.created` seen, `response.done` not
|
|
176
|
+
* yet) is in flight. Distinct from {@link responseActive}, which is set EAGERLY before a local
|
|
177
|
+
* `response.create` is even sent: if the provider REJECTS that create (an `error` frame with no
|
|
178
|
+
* `response.created`), `responseActive` would otherwise stay stuck true forever. This flag lets
|
|
179
|
+
* {@link onErrorFrame} tell "the eager flag is a phantom for a rejected create" (no confirmed
|
|
180
|
+
* response) from "a real response is genuinely active" (e.g. a concurrent VAD turn), so it clears
|
|
181
|
+
* the phantom without disturbing a live turn. Set on `response.created`, cleared on `response.done`.
|
|
182
|
+
*/
|
|
183
|
+
protected confirmedResponseActive: boolean;
|
|
184
|
+
/**
|
|
185
|
+
* Set by {@link RequestSpokenUpdate} just before it sends its `response.create`, and
|
|
186
|
+
* CONSUMED by the very next `response.created` frame, which stamps
|
|
187
|
+
* {@link activeResponseKind} for that turn. Narration is only requested while the model is
|
|
188
|
+
* idle (hosts gate on {@link IsBusy}), so under normal ordering the next `response.created`
|
|
189
|
+
* is ours.
|
|
190
|
+
*/
|
|
191
|
+
protected pendingNarrationKind: boolean;
|
|
192
|
+
/**
|
|
193
|
+
* The kind of the response currently in flight. Event ordering (confirmed against the live
|
|
194
|
+
* OpenAI API): `response.created` → transcript deltas → `*_audio_transcript.done` →
|
|
195
|
+
* `response.done`. The transcript-done frame therefore arrives while the kind is still set,
|
|
196
|
+
* letting {@link onAssistantDone} classify the turn; `response.done` then resets it.
|
|
197
|
+
*/
|
|
198
|
+
protected activeResponseKind: 'normal' | 'narration';
|
|
199
|
+
/**
|
|
200
|
+
* The client's own view of the session state — mirrors what `emitStateChange` last
|
|
201
|
+
* reported, EXCEPT after a tool call is emitted: the host typically shows its own busy
|
|
202
|
+
* state then, so the client silently leaves `'speaking'` (no emission) to preserve the
|
|
203
|
+
* host's indicator until the result reply starts (see {@link onToolCallFrame}).
|
|
204
|
+
*/
|
|
205
|
+
protected currentState: RealtimeClientState;
|
|
206
|
+
/** The mic stream owned by the current connection (used by the shared {@link SetMuted}). */
|
|
207
|
+
protected micStream: MediaStream | null;
|
|
208
|
+
/** Whether the transport can currently deliver client events (channel/socket open). */
|
|
209
|
+
protected abstract canSendEvents(): boolean;
|
|
210
|
+
/** Delivers one protocol client event over the transport (only called when {@link canSendEvents}). */
|
|
211
|
+
protected abstract sendProtocolEvent(event: OpenAIProtocolClientEvent): void;
|
|
212
|
+
/**
|
|
213
|
+
* Silences already-generated speech during a cancel: websocket transports flush their local
|
|
214
|
+
* playout queue; the WebRTC transport asks the provider to clear its managed output buffer.
|
|
215
|
+
*/
|
|
216
|
+
protected abstract stopAudioOutput(): void;
|
|
217
|
+
/** Debug label used in the shared console diagnostics. */
|
|
218
|
+
protected get providerDebugLabel(): string;
|
|
219
|
+
/**
|
|
220
|
+
* Handles one base64 PCM16 audio delta. Default: no-op — on the WebRTC transport the agent's
|
|
221
|
+
* audio rides the peer connection's remote track, not data-channel frames. Websocket
|
|
222
|
+
* transports override to enqueue into their local playout engine.
|
|
223
|
+
*/
|
|
224
|
+
protected handleAudioDeltaFrame(_deltaBase64: string): void;
|
|
225
|
+
/**
|
|
226
|
+
* Emits the user's spoken-input transcription. Default (OpenAI/HuggingFace): each
|
|
227
|
+
* `.completed` frame is one final caption. Providers that STREAM the completed event
|
|
228
|
+
* (Grok re-sends the full growing text each time) override to collapse the stream into a
|
|
229
|
+
* single in-place-updating bubble.
|
|
230
|
+
*/
|
|
231
|
+
protected onUserTranscriptFrame(transcript: string): void;
|
|
232
|
+
/**
|
|
233
|
+
* The user started speaking. TRUE barge-in only when it cut off active model output (a
|
|
234
|
+
* response in flight or audio audibly playing) — a normal turn while the model is idle is
|
|
235
|
+
* NOT an interruption, so the emission is gated (base-contract rule). Transports that own
|
|
236
|
+
* their playback override to also flush the local playout queue.
|
|
237
|
+
*/
|
|
238
|
+
protected onSpeechStartedFrame(): void;
|
|
239
|
+
/**
|
|
240
|
+
* Whether a completed tool call CLEARS {@link responseActive}. WebRTC keeps the flag (the
|
|
241
|
+
* provider reliably follows with `response.done`); websocket transports clear it as a
|
|
242
|
+
* deadlock guard so a queued {@link SendToolResult} can never wedge if the endpoint skips
|
|
243
|
+
* the trailing frame.
|
|
244
|
+
*/
|
|
245
|
+
protected get releasesBusyFlagOnToolCall(): boolean;
|
|
246
|
+
/** Hook for transports that gate on the endpoint's `session.created` frame. Default: no-op. */
|
|
247
|
+
protected onSessionCreatedFrame(): void;
|
|
248
|
+
/** Diagnostic hook for each parsed inbound event. Default: silent. */
|
|
249
|
+
protected logInboundEvent(_event: OpenAIProtocolServerEvent): void;
|
|
250
|
+
/** Diagnostic hook for each non-JSON inbound frame. Default: silent. */
|
|
251
|
+
protected onNonJsonFrame(_raw: string): void;
|
|
252
|
+
/** Diagnostic hook for each outbound event. Default: silent. */
|
|
253
|
+
protected logOutboundEvent(_event: OpenAIProtocolClientEvent): void;
|
|
254
|
+
/**
|
|
255
|
+
* Injects typed text as a user-role `message` conversation item, then triggers a reply
|
|
256
|
+
* through the SAME collision-safe path tool results use ({@link requestResultResponse}).
|
|
257
|
+
* No-op when the transport isn't open.
|
|
258
|
+
*
|
|
259
|
+
* **SendText implies barge-in** (base-contract rule): an active spoken response is
|
|
260
|
+
* cancelled via {@link CancelActiveResponse} before the text is injected, so the typed
|
|
261
|
+
* turn takes the floor immediately instead of waiting behind stale speech. When nothing is
|
|
262
|
+
* active the cancel is a no-op and the reply triggers immediately.
|
|
263
|
+
*/
|
|
264
|
+
SendText(text: string): void;
|
|
265
|
+
/**
|
|
266
|
+
* @inheritdoc
|
|
267
|
+
*
|
|
268
|
+
* Sends `response.cancel` (only when a response is actually in flight) and silences
|
|
269
|
+
* already-generated speech via the transport's {@link stopAudioOutput}. Resets the local
|
|
270
|
+
* response state machine (active flag, narration kind, accumulated transcript) but
|
|
271
|
+
* PRESERVES any queued tool-result trigger: delegated work is never affected by a
|
|
272
|
+
* floor-control cancel, and the queued trigger still fires on the cancelled response's
|
|
273
|
+
* trailing `response.done`. No-op when idle or when the transport is not open.
|
|
274
|
+
*/
|
|
275
|
+
CancelActiveResponse(): void;
|
|
276
|
+
/**
|
|
277
|
+
* Injects a system-role context item the model can draw on the next time it speaks,
|
|
278
|
+
* WITHOUT forcing a reply. Item creation is always safe mid-response.
|
|
279
|
+
*
|
|
280
|
+
* NOTE: role must be 'system' — gpt-realtime (and the compatible endpoints) reject
|
|
281
|
+
* 'developer' items ("Developer messages are only supported for quicksilver sessions").
|
|
282
|
+
*/
|
|
283
|
+
SendContextNote(text: string): void;
|
|
284
|
+
/**
|
|
285
|
+
* Triggers ONE short spoken update with the given instructions. Marks the upcoming
|
|
286
|
+
* response as `'narration'` (flag consumed by the next `response.created`) so its
|
|
287
|
+
* transcripts are emitted with `Kind: 'narration'` — ephemeral by contract. Sets
|
|
288
|
+
* {@link responseActive} eagerly so a tool result landing mid-narration queues instead of
|
|
289
|
+
* colliding.
|
|
290
|
+
*
|
|
291
|
+
* **Skips when busy** (base-contract collision rule — drivers MUST queue or skip): a
|
|
292
|
+
* `response.create` sent while a response is in flight would be rejected/garbled by the
|
|
293
|
+
* provider, and narration is disposable by contract, so the update is dropped with a debug
|
|
294
|
+
* log rather than queued to come out late and stale. Hosts SHOULD still gate on
|
|
295
|
+
* {@link IsBusy} / {@link IsAudioPlaying} for timing quality.
|
|
296
|
+
*/
|
|
297
|
+
RequestSpokenUpdate(instructions: string): void;
|
|
298
|
+
/**
|
|
299
|
+
* Sends the tool result back as a `function_call_output` conversation item, then triggers
|
|
300
|
+
* a reply — immediately if the model is idle, otherwise queued until the current response
|
|
301
|
+
* (e.g. a progress narration) finishes. Without the queueing the result's `response.create`
|
|
302
|
+
* would collide with an in-flight narration and be dropped, leaving the model silent when
|
|
303
|
+
* delegated work comes back.
|
|
304
|
+
*/
|
|
305
|
+
SendToolResult(callID: string, outputJson: string): void;
|
|
306
|
+
/**
|
|
307
|
+
* Mutes / unmutes by toggling the mic tracks' `enabled` flag: the transport stays up and
|
|
308
|
+
* streams SILENCE while muted (the provider's VAD sees a continuous stream and the un-mute
|
|
309
|
+
* is glitch-free — the same policy across the client driver family).
|
|
310
|
+
*/
|
|
311
|
+
SetMuted(muted: boolean): void;
|
|
312
|
+
/** @inheritdoc */
|
|
313
|
+
get IsBusy(): boolean;
|
|
314
|
+
/**
|
|
315
|
+
* Parses one raw inbound payload and dispatches it. Non-JSON frames and non-object JSON
|
|
316
|
+
* values are ignored (with the {@link onNonJsonFrame} diagnostic hook for the former).
|
|
317
|
+
*/
|
|
318
|
+
protected handleProtocolMessage(raw: string): void;
|
|
319
|
+
/** Dispatches a typed OpenAI-protocol server event to the appropriate behavior. */
|
|
320
|
+
protected handleEvent(event: OpenAIProtocolServerEvent): void;
|
|
321
|
+
/**
|
|
322
|
+
* Called when the model takes the floor (`response.created`), i.e. the user's turn is definitively
|
|
323
|
+
* over. Drivers that track per-user-turn transcription state override this to reset it. No-op here.
|
|
324
|
+
*/
|
|
325
|
+
protected onResponseStarted(): void;
|
|
326
|
+
/** WebRTC-only playback-buffer hooks; websocket transports never receive these frames. */
|
|
327
|
+
protected onOutputAudioBufferStarted(): void;
|
|
328
|
+
protected onOutputAudioBufferStopped(): void;
|
|
329
|
+
/** Reflects `'speaking'` on the first audio delta, then hands the chunk to the transport. */
|
|
330
|
+
private onAudioDelta;
|
|
331
|
+
/** Appends an assistant transcript delta, reflects `'speaking'`, and emits the delta. */
|
|
332
|
+
private onAssistantDelta;
|
|
333
|
+
/**
|
|
334
|
+
* Finalizes the assistant turn: emits the final transcript tagged with the ACTIVE response
|
|
335
|
+
* kind (the transcript-done frame arrives BEFORE `response.done`, so
|
|
336
|
+
* {@link activeResponseKind} still reflects this turn), then returns to `'listening'`.
|
|
337
|
+
* Empty turns emit nothing.
|
|
338
|
+
*/
|
|
339
|
+
private onAssistantDone;
|
|
340
|
+
/**
|
|
341
|
+
* Surfaces a completed tool call to the host. The client silently leaves the `'speaking'`
|
|
342
|
+
* state (NO emission) so a host-rendered busy indicator (e.g. "thinking") isn't clobbered
|
|
343
|
+
* by this turn's trailing `response.done` / playback-stopped frames. Websocket transports
|
|
344
|
+
* additionally clear the busy flag ({@link releasesBusyFlagOnToolCall}) as a deadlock guard.
|
|
345
|
+
*/
|
|
346
|
+
private onToolCallFrame;
|
|
347
|
+
/**
|
|
348
|
+
* Emits the completed response's usage to the host as a DELTA (the `response.done` usage
|
|
349
|
+
* payload covers exactly this response, so it is already incremental — the `OnUsage`
|
|
350
|
+
* contract's preferred shape). Frames without a usage payload emit nothing.
|
|
351
|
+
*/
|
|
352
|
+
private emitResponseUsage;
|
|
353
|
+
/**
|
|
354
|
+
* Surfaces a provider error frame (non-fatal; the session continues).
|
|
355
|
+
*
|
|
356
|
+
* SELF-HEAL for the stale-response counter (see {@link pendingLocalResponseCreates}): a
|
|
357
|
+
* `response.create` the provider REJECTS (overlap, invalid params) produces an `error` frame
|
|
358
|
+
* and **no** `response.created`, so the counter would otherwise never decrement and every
|
|
359
|
+
* future `response.done` would take the stale branch — wedging the client (`IsBusy` stuck true,
|
|
360
|
+
* narration + tool results silently dropped). Decrementing here (floored at 0) reverts to the
|
|
361
|
+
* pre-counter self-healing behavior for that turn rather than leaving the session dead. An
|
|
362
|
+
* error unrelated to a local create at worst under-protects one `done` (the old default), never
|
|
363
|
+
* wedges.
|
|
364
|
+
*/
|
|
365
|
+
private onErrorFrame;
|
|
366
|
+
/**
|
|
367
|
+
* Asks the model to speak (a tool result or typed-text reply) — immediately if it's idle,
|
|
368
|
+
* otherwise queued until the current response finishes. An immediate trigger also
|
|
369
|
+
* CONSUMES any queued trigger debt: every payload item is already in the conversation, so
|
|
370
|
+
* one `response.create` voices everything (e.g. typed text barging in over a narration
|
|
371
|
+
* that had tool results queued behind it).
|
|
372
|
+
*/
|
|
373
|
+
protected requestResultResponse(): void;
|
|
374
|
+
/** On a turn completing, fire any queued tool-result response so the answer is spoken. */
|
|
375
|
+
protected flushPendingResultResponse(): void;
|
|
376
|
+
/** Resets the per-session response state machine (used on Disconnect). */
|
|
377
|
+
protected resetResponseState(): void;
|
|
378
|
+
/** Updates the client's own state view and emits the change to the host. */
|
|
379
|
+
protected setState(state: RealtimeClientState): void;
|
|
380
|
+
/** Logs (diagnostic hook) and delivers one client event when the transport is open. */
|
|
381
|
+
protected sendEvent(event: OpenAIProtocolClientEvent): void;
|
|
382
|
+
}
|
|
383
|
+
/**
|
|
384
|
+
* The minimal websocket surface the websocket-transport drivers depend on: assignable lifecycle
|
|
385
|
+
* handlers plus `send`/`close`. Declaring the seam as an interface (rather than the platform
|
|
386
|
+
* `WebSocket`) lets unit tests inject a fully in-memory fake — no websocket, no network.
|
|
387
|
+
*/
|
|
388
|
+
export interface IOpenAIProtocolClientSocket {
|
|
389
|
+
/** Invoked once the socket is open. */
|
|
390
|
+
onopen: (() => void) | null;
|
|
391
|
+
/** Invoked with each inbound frame's raw string payload. */
|
|
392
|
+
onmessage: ((data: string) => void) | null;
|
|
393
|
+
/** Invoked on a socket-level error (fatal). */
|
|
394
|
+
onerror: ((message: string) => void) | null;
|
|
395
|
+
/** Invoked when the socket closes (any reason). */
|
|
396
|
+
onclose: (() => void) | null;
|
|
397
|
+
/** Sends one JSON-serialized client frame. */
|
|
398
|
+
send(data: string): void;
|
|
399
|
+
/** Terminates the underlying connection. */
|
|
400
|
+
close(): void;
|
|
401
|
+
}
|
|
402
|
+
/**
|
|
403
|
+
* The shared **websocket + client-owned-PCM transport** for OpenAI-protocol client drivers
|
|
404
|
+
* (xAI Grok Voice, self-hosted HuggingFace). Extends the protocol brain with everything the
|
|
405
|
+
* websocket drivers previously each owned:
|
|
406
|
+
*
|
|
407
|
+
* - The socket lifecycle: wire-up, open/created gating (profile-driven via
|
|
408
|
+
* {@link waitsForSessionCreated}), fatal error / unexpected-close handling.
|
|
409
|
+
* - The PCM audio plane: shared mic-capture worklet streaming `input_audio_buffer.append`
|
|
410
|
+
* frames up, shared playout engine scheduling base64 deltas down, audio meters both ways.
|
|
411
|
+
* - The transport implementations of the brain's seams: {@link sendProtocolEvent} /
|
|
412
|
+
* {@link canSendEvents} over the socket, {@link stopAudioOutput} → local playout flush,
|
|
413
|
+
* {@link handleAudioDeltaFrame} → playout enqueue, `IsAudioPlaying` → the playout clock.
|
|
414
|
+
*
|
|
415
|
+
* Concrete drivers supply only: the socket target ({@link openProviderSocket}), the session
|
|
416
|
+
* object + sample rate resolution from the server pact ({@link resolveSessionObject} /
|
|
417
|
+
* {@link resolveSampleRate}), and any provider behavior overrides (streamed user transcripts,
|
|
418
|
+
* close semantics).
|
|
419
|
+
*/
|
|
420
|
+
export declare abstract class OpenAIProtocolWebSocketRealtimeClient extends OpenAIProtocolRealtimeClient {
|
|
421
|
+
/** The live socket (null when disconnected). Protected so test subclasses can inspect. */
|
|
422
|
+
protected socket: IOpenAIProtocolClientSocket | null;
|
|
423
|
+
/** The local playout engine (client-owned audio plane). */
|
|
424
|
+
protected playback: IRealtimePcmPlayback | null;
|
|
425
|
+
/** The mic-capture pipeline streaming PCM16 up to the provider. */
|
|
426
|
+
protected micCapture: IPcmMicCapture | null;
|
|
427
|
+
/**
|
|
428
|
+
* The wire-shaped session object applied via `session.update` at the readiness boundary.
|
|
429
|
+
* Protected so test subclasses can seed it without a full Connect.
|
|
430
|
+
*/
|
|
431
|
+
protected sessionObject: JSONObject;
|
|
432
|
+
/** True once Disconnect ran — an expected socket close must not surface as fatal. */
|
|
433
|
+
protected closedByConsumer: boolean;
|
|
434
|
+
/** True while the socket is OPEN — gates every send so a CONNECTING socket never throws. */
|
|
435
|
+
protected socketOpen: boolean;
|
|
436
|
+
/** Resolver for the in-flight Connect's `session.created` wait (deferring providers only). */
|
|
437
|
+
private sessionCreatedResolver;
|
|
438
|
+
/** Rejects the in-flight Connect (open OR created phase); null outside Connect. */
|
|
439
|
+
private failPendingConnect;
|
|
440
|
+
/** Opens the provider socket for this connection (drivers own URL/auth specifics). */
|
|
441
|
+
protected abstract openProviderSocket(config: ClientRealtimeSessionConfig): IOpenAIProtocolClientSocket;
|
|
442
|
+
/** Extracts the wire-shaped `session` object from the server pact. Default: the pact itself. */
|
|
443
|
+
protected resolveSessionObject(config: ClientRealtimeSessionConfig): JSONObject;
|
|
444
|
+
/** Resolves the PCM sample rate for the audio plane (both directions). */
|
|
445
|
+
protected abstract resolveSampleRate(config: ClientRealtimeSessionConfig): number;
|
|
446
|
+
/**
|
|
447
|
+
* Whether the readiness boundary waits for the endpoint's `session.created` frame before
|
|
448
|
+
* applying the session config (HuggingFace) or applies it on socket open (xAI — the
|
|
449
|
+
* protocol has no separate readiness ack there).
|
|
450
|
+
*/
|
|
451
|
+
protected get waitsForSessionCreated(): boolean;
|
|
452
|
+
/**
|
|
453
|
+
* Connect-phase deadline in milliseconds, covering socket-open AND (when the provider
|
|
454
|
+
* defers) the `session.created` wait. On expiry `Connect` rejects with a fatal error
|
|
455
|
+
* instead of hanging forever against a silent endpoint. Override per driver/deployment.
|
|
456
|
+
*/
|
|
457
|
+
protected get connectTimeoutMs(): number;
|
|
458
|
+
/**
|
|
459
|
+
* Opens the websocket, gates on open (and `session.created` when the provider defers),
|
|
460
|
+
* applies the server-authored session config as the FIRST frame (prompt + tool authority
|
|
461
|
+
* stay server-side), builds the PCM audio plane at the provider's rate, and reports
|
|
462
|
+
* `'listening'` only after all of that (obligation #7).
|
|
463
|
+
*/
|
|
464
|
+
Connect(config: ClientRealtimeSessionConfig, micStream: MediaStream): Promise<void>;
|
|
465
|
+
/**
|
|
466
|
+
* Tears down the socket, mic capture, mic tracks, and playout engine, resets the response
|
|
467
|
+
* state machine, and emits a final `'closed'` (unless already `'error'`). Safe to call
|
|
468
|
+
* more than once.
|
|
469
|
+
*/
|
|
470
|
+
Disconnect(): Promise<void>;
|
|
471
|
+
/** @inheritdoc — requires an OPEN socket (a CONNECTING raw WebSocket throws on send). */
|
|
472
|
+
protected canSendEvents(): boolean;
|
|
473
|
+
/** @inheritdoc */
|
|
474
|
+
protected sendProtocolEvent(event: OpenAIProtocolClientEvent): void;
|
|
475
|
+
/** @inheritdoc — the client OWNS the audio plane, so a cancel flushes the local queue. */
|
|
476
|
+
protected stopAudioOutput(): void;
|
|
477
|
+
/** @inheritdoc — enqueues one base64 PCM16 chunk into the local playout engine. */
|
|
478
|
+
protected handleAudioDeltaFrame(deltaBase64: string): void;
|
|
479
|
+
/**
|
|
480
|
+
* @inheritdoc
|
|
481
|
+
*
|
|
482
|
+
* Computed directly from the playout engine's playhead clock — this client OWNS the output
|
|
483
|
+
* buffer, so "audibly playing" is precisely "scheduled audio extends beyond the audio
|
|
484
|
+
* context's current time".
|
|
485
|
+
*/
|
|
486
|
+
get IsAudioPlaying(): boolean;
|
|
487
|
+
/**
|
|
488
|
+
* @inheritdoc — websocket transports flush their local playout on TRUE barge-in
|
|
489
|
+
* (obligation #3); the provider cancels its own turn and emits a terminal `response.done`.
|
|
490
|
+
*/
|
|
491
|
+
protected onSpeechStartedFrame(): void;
|
|
492
|
+
/** @inheritdoc — deadlock guard: compat endpoints may skip `response.done` after a tool call. */
|
|
493
|
+
protected get releasesBusyFlagOnToolCall(): boolean;
|
|
494
|
+
/** @inheritdoc — releases a deferring Connect's `session.created` gate. */
|
|
495
|
+
protected onSessionCreatedFrame(): void;
|
|
496
|
+
/**
|
|
497
|
+
* Sends the server-controlled session config (instructions + tools) as a `session.update`
|
|
498
|
+
* so the co-agent's identity and tool set apply. Skipped when the pact carried no config
|
|
499
|
+
* (e.g. the host failed to parse the server payload — it already logged that; sending an
|
|
500
|
+
* EMPTY `session.update` would be wrong).
|
|
501
|
+
*/
|
|
502
|
+
protected applySessionConfig(): void;
|
|
503
|
+
/** Streams one base64 PCM16 mic chunk as an `input_audio_buffer.append` frame. */
|
|
504
|
+
protected sendMicChunk(base64Pcm16: string): void;
|
|
505
|
+
/** Formats a socket-level error message for the host. Providers brand this (see xAI). */
|
|
506
|
+
protected formatTransportError(message: string): string;
|
|
507
|
+
/** The fatal-error message surfaced when the socket closes unexpectedly. Providers brand this. */
|
|
508
|
+
protected get unexpectedCloseMessage(): string;
|
|
509
|
+
/** Surfaces a fatal socket error and marks the session unusable (obligation #6). */
|
|
510
|
+
protected handleSocketError(message: string): void;
|
|
511
|
+
/**
|
|
512
|
+
* A socket close the CONSUMER didn't ask for. Default: FATAL — providers hard-close at
|
|
513
|
+
* token expiry and when they end the session themselves, so an unexpected close is how
|
|
514
|
+
* credential / session death reaches the host (obligation #6). Providers with benign
|
|
515
|
+
* close semantics (a self-hosted proxy hop) override.
|
|
516
|
+
*/
|
|
517
|
+
protected handleSocketClose(): void;
|
|
518
|
+
/**
|
|
519
|
+
* Creation seam for the mic-capture pipeline at the provider's rate. Production delegates
|
|
520
|
+
* to the shared {@link createPcmMicCapture}; unit tests override this with a no-op fake
|
|
521
|
+
* (and may capture `onPcmChunk` to simulate mic frames).
|
|
522
|
+
*/
|
|
523
|
+
protected createMicCapture(micStream: MediaStream, sampleRate: number, onPcmChunk: (base64Pcm16: string) => void): Promise<IPcmMicCapture>;
|
|
524
|
+
/** Creation seam for the playout engine. Production returns the shared {@link RealtimePcmPlayback}. */
|
|
525
|
+
protected createPlayback(sampleRate: number): IRealtimePcmPlayback;
|
|
526
|
+
}
|
|
527
|
+
//# sourceMappingURL=openAIProtocolClient.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openAIProtocolClient.d.ts","sourceRoot":"","sources":["../../src/generic/openAIProtocolClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC7E,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAE/E,OAAO,EAAE,oBAAoB,EAAuB,MAAM,sBAAsB,CAAC;AAEjF,OAAO,EAAuB,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAO1E,yFAAyF;AACzF,MAAM,WAAW,0BAA0B;IACvC,IAAI,EAAE,wCAAwC,GAAG,iCAAiC,CAAC;IACnF,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,qEAAqE;AACrE,MAAM,WAAW,yBAAyB;IACtC,IAAI,EAAE,uCAAuC,GAAG,gCAAgC,CAAC;IACjF,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,uFAAuF;AACvF,MAAM,WAAW,qBAAqB;IAClC,IAAI,EAAE,sBAAsB,GAAG,6BAA6B,CAAC;IAC7D,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,iEAAiE;AACjE,MAAM,WAAW,sCAAsC;IACnD,IAAI,EAAE,uDAAuD,CAAC;IAC9D,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,kFAAkF;AAClF,MAAM,WAAW,oCAAoC;IACjD,IAAI,EAAE,uCAAuC,CAAC;IAC9C,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,8BAA8B;IAC9B,SAAS,EAAE,MAAM,CAAC;CACrB;AAED,mEAAmE;AACnE,MAAM,WAAW,wBAAwB;IACrC,IAAI,EAAE,mCAAmC,CAAC;CAC7C;AAED,+FAA+F;AAC/F,MAAM,WAAW,0BAA0B;IACvC,IAAI,EAAE,kBAAkB,CAAC;CAC5B;AAED,mGAAmG;AACnG,MAAM,WAAW,yBAAyB;IACtC,IAAI,EAAE,iBAAiB,CAAC;CAC3B;AAED;;;;GAIG;AACH,MAAM,WAAW,uBAAuB;IACpC,IAAI,EAAE,eAAe,CAAC;IACtB,QAAQ,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE;YAAE,YAAY,CAAC,EAAE,MAAM,CAAC;YAAC,aAAa,CAAC,EAAE,MAAM,CAAC;YAAC,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAA;SAAE,CAAA;KAAE,CAAC;CACvG;AAED;;;GAGG;AACH,MAAM,WAAW,mCAAmC;IAChD,IAAI,EAAE,6BAA6B,CAAC;CACvC;AACD,MAAM,WAAW,mCAAmC;IAChD,IAAI,EAAE,6BAA6B,GAAG,6BAA6B,CAAC;CACvE;AAED,iCAAiC;AACjC,MAAM,WAAW,qBAAqB;IAClC,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC/C;AAED,gFAAgF;AAChF,MAAM,WAAW,uBAAuB;IACpC,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,yBAAyB,GAC/B,0BAA0B,GAC1B,yBAAyB,GACzB,qBAAqB,GACrB,sCAAsC,GACtC,oCAAoC,GACpC,wBAAwB,GACxB,0BAA0B,GAC1B,yBAAyB,GACzB,uBAAuB,GACvB,mCAAmC,GACnC,mCAAmC,GACnC,qBAAqB,GACrB,uBAAuB,CAAC;AAI9B,0FAA0F;AAC1F,MAAM,WAAW,6BAA6B;IAC1C,IAAI,EAAE,gBAAgB,CAAC;IACvB,OAAO,EAAE,UAAU,CAAC;CACvB;AAED,oDAAoD;AACpD,MAAM,WAAW,sBAAsB;IACnC,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAC;IACxB,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,YAAY,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACxD;AAED,+EAA+E;AAC/E,MAAM,WAAW,iCAAiC;IAC9C,IAAI,EAAE,sBAAsB,CAAC;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,4DAA4D;AAC5D,MAAM,WAAW,sCAAsC;IACnD,IAAI,EAAE,0BAA0B,CAAC;IACjC,IAAI,EAAE,sBAAsB,GAAG,iCAAiC,CAAC;CACpE;AAED,kFAAkF;AAClF,MAAM,WAAW,8BAA8B;IAC3C,IAAI,EAAE,iBAAiB,CAAC;IACxB,QAAQ,CAAC,EAAE;QAAE,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC;CACvC;AAED,0FAA0F;AAC1F,MAAM,WAAW,8BAA8B;IAC3C,IAAI,EAAE,iBAAiB,CAAC;CAC3B;AAED,wFAAwF;AACxF,MAAM,WAAW,sCAAsC;IACnD,IAAI,EAAE,2BAA2B,CAAC;CACrC;AAED,sGAAsG;AACtG,MAAM,WAAW,sCAAsC;IACnD,IAAI,EAAE,2BAA2B,CAAC;IAClC,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,yBAAyB,GAC/B,6BAA6B,GAC7B,sCAAsC,GACtC,8BAA8B,GAC9B,8BAA8B,GAC9B,sCAAsC,GACtC,sCAAsC,CAAC;AAI7C;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,8BAAsB,4BAA6B,SAAQ,kBAAkB;IAEzE,0EAA0E;IAC1E,SAAS,CAAC,oBAAoB,SAAM;IACpC,+FAA+F;IAC/F,SAAS,CAAC,cAAc,UAAS;IACjC,kGAAkG;IAClG,SAAS,CAAC,qBAAqB,UAAS;IACxC;;;;;OAKG;IACH,SAAS,CAAC,2BAA2B,SAAK;IAC1C;;;;;;;;OAQG;IACH,SAAS,CAAC,uBAAuB,UAAS;IAC1C;;;;;;OAMG;IACH,SAAS,CAAC,oBAAoB,UAAS;IACvC;;;;;OAKG;IACH,SAAS,CAAC,kBAAkB,EAAE,QAAQ,GAAG,WAAW,CAAY;IAChE;;;;;OAKG;IACH,SAAS,CAAC,YAAY,EAAE,mBAAmB,CAAY;IACvD,4FAA4F;IAC5F,SAAS,CAAC,SAAS,EAAE,WAAW,GAAG,IAAI,CAAQ;IAI/C,uFAAuF;IACvF,SAAS,CAAC,QAAQ,CAAC,aAAa,IAAI,OAAO;IAC3C,sGAAsG;IACtG,SAAS,CAAC,QAAQ,CAAC,iBAAiB,CAAC,KAAK,EAAE,yBAAyB,GAAG,IAAI;IAC5E;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,eAAe,IAAI,IAAI;IAI1C,0DAA0D;IAC1D,SAAS,KAAK,kBAAkB,IAAI,MAAM,CAEzC;IAED;;;;OAIG;IACH,SAAS,CAAC,qBAAqB,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;IAI3D;;;;;OAKG;IACH,SAAS,CAAC,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAIzD;;;;;OAKG;IACH,SAAS,CAAC,oBAAoB,IAAI,IAAI;IAWtC;;;;;OAKG;IACH,SAAS,KAAK,0BAA0B,IAAI,OAAO,CAElD;IAED,+FAA+F;IAC/F,SAAS,CAAC,qBAAqB,IAAI,IAAI;IAIvC,sEAAsE;IACtE,SAAS,CAAC,eAAe,CAAC,MAAM,EAAE,yBAAyB,GAAG,IAAI;IAIlE,wEAAwE;IACxE,SAAS,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI5C,gEAAgE;IAChE,SAAS,CAAC,gBAAgB,CAAC,MAAM,EAAE,yBAAyB,GAAG,IAAI;IAMnE;;;;;;;;;OASG;IACI,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAYnC;;;;;;;;;OASG;IACI,oBAAoB,IAAI,IAAI;IAoBnC;;;;;;OAMG;IACI,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAU1C;;;;;;;;;;;;OAYG;IACI,mBAAmB,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;IActD;;;;;;OAMG;IACI,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IAW/D;;;;OAIG;IACI,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAMrC,kBAAkB;IAClB,IAAW,MAAM,IAAI,OAAO,CAE3B;IAID;;;OAGG;IACH,SAAS,CAAC,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAelD,mFAAmF;IACnF,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,yBAAyB,GAAG,IAAI;IAuF7D;;;OAGG;IACH,SAAS,CAAC,iBAAiB,IAAI,IAAI;IAInC,0FAA0F;IAC1F,SAAS,CAAC,0BAA0B,IAAI,IAAI;IAG5C,SAAS,CAAC,0BAA0B,IAAI,IAAI;IAI5C,6FAA6F;IAC7F,OAAO,CAAC,YAAY;IAUpB,yFAAyF;IACzF,OAAO,CAAC,gBAAgB;IAWxB;;;;;OAKG;IACH,OAAO,CAAC,eAAe;IAWvB;;;;;OAKG;IACH,OAAO,CAAC,eAAe;IAUvB;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;IAYzB;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,YAAY;IAgCpB;;;;;;OAMG;IACH,SAAS,CAAC,qBAAqB,IAAI,IAAI;IAevC,0FAA0F;IAC1F,SAAS,CAAC,0BAA0B,IAAI,IAAI;IAW5C,0EAA0E;IAC1E,SAAS,CAAC,kBAAkB,IAAI,IAAI;IAYpC,4EAA4E;IAC5E,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,mBAAmB,GAAG,IAAI;IAKpD,uFAAuF;IACvF,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,yBAAyB,GAAG,IAAI;CAO9D;AAID;;;;GAIG;AACH,MAAM,WAAW,2BAA2B;IACxC,uCAAuC;IACvC,MAAM,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,CAAC;IAC5B,4DAA4D;IAC5D,SAAS,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC;IAC3C,+CAA+C;IAC/C,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC;IAC5C,mDAAmD;IACnD,OAAO,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,CAAC;IAC7B,8CAA8C;IAC9C,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,4CAA4C;IAC5C,KAAK,IAAI,IAAI,CAAC;CACjB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,8BAAsB,qCAAsC,SAAQ,4BAA4B;IAC5F,0FAA0F;IAC1F,SAAS,CAAC,MAAM,EAAE,2BAA2B,GAAG,IAAI,CAAQ;IAC5D,2DAA2D;IAC3D,SAAS,CAAC,QAAQ,EAAE,oBAAoB,GAAG,IAAI,CAAQ;IACvD,mEAAmE;IACnE,SAAS,CAAC,UAAU,EAAE,cAAc,GAAG,IAAI,CAAQ;IACnD;;;OAGG;IACH,SAAS,CAAC,aAAa,EAAE,UAAU,CAAM;IACzC,qFAAqF;IACrF,SAAS,CAAC,gBAAgB,UAAS;IACnC,4FAA4F;IAC5F,SAAS,CAAC,UAAU,UAAS;IAC7B,8FAA8F;IAC9F,OAAO,CAAC,sBAAsB,CAA6B;IAC3D,mFAAmF;IACnF,OAAO,CAAC,kBAAkB,CAAyC;IAInE,sFAAsF;IACtF,SAAS,CAAC,QAAQ,CAAC,kBAAkB,CAAC,MAAM,EAAE,2BAA2B,GAAG,2BAA2B;IACvG,gGAAgG;IAChG,SAAS,CAAC,oBAAoB,CAAC,MAAM,EAAE,2BAA2B,GAAG,UAAU;IAG/E,0EAA0E;IAC1E,SAAS,CAAC,QAAQ,CAAC,iBAAiB,CAAC,MAAM,EAAE,2BAA2B,GAAG,MAAM;IACjF;;;;OAIG;IACH,SAAS,KAAK,sBAAsB,IAAI,OAAO,CAE9C;IAED;;;;OAIG;IACH,SAAS,KAAK,gBAAgB,IAAI,MAAM,CAEvC;IAID;;;;;OAKG;IACU,OAAO,CAAC,MAAM,EAAE,2BAA2B,EAAE,SAAS,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAgGhG;;;;OAIG;IACU,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAgCxC,yFAAyF;IACzF,SAAS,CAAC,aAAa,IAAI,OAAO;IAIlC,kBAAkB;IAClB,SAAS,CAAC,iBAAiB,CAAC,KAAK,EAAE,yBAAyB,GAAG,IAAI;IAInE,0FAA0F;IAC1F,SAAS,CAAC,eAAe,IAAI,IAAI;IAIjC,mFAAmF;cAChE,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAInE;;;;;;OAMG;IACH,IAAW,cAAc,IAAI,OAAO,CAEnC;IAED;;;OAGG;cACgB,oBAAoB,IAAI,IAAI;IAU/C,iGAAiG;IACjG,cAAuB,0BAA0B,IAAI,OAAO,CAE3D;IAED,2EAA2E;cACxD,qBAAqB,IAAI,IAAI;IAOhD;;;;;OAKG;IACH,SAAS,CAAC,kBAAkB,IAAI,IAAI;IAOpC,kFAAkF;IAClF,SAAS,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAMjD,yFAAyF;IACzF,SAAS,CAAC,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAIvD,kGAAkG;IAClG,SAAS,KAAK,sBAAsB,IAAI,MAAM,CAE7C;IAED,oFAAoF;IACpF,SAAS,CAAC,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAQlD;;;;;OAKG;IACH,SAAS,CAAC,iBAAiB,IAAI,IAAI;IAUnC;;;;OAIG;cACa,gBAAgB,CAC5B,SAAS,EAAE,WAAW,EACtB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,GAC1C,OAAO,CAAC,cAAc,CAAC;IAI1B,uGAAuG;IACvG,SAAS,CAAC,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,oBAAoB;CAGrE"}
|