@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
|
@@ -4,18 +4,14 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
4
4
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
6
|
};
|
|
7
|
-
var HuggingFaceRealtimeClient_1;
|
|
8
7
|
import { RegisterClass } from '@memberjunction/global';
|
|
9
8
|
import { BaseRealtimeClient } from '../generic/baseRealtimeClient.js';
|
|
10
|
-
import {
|
|
11
|
-
import { RealtimePcmPlayback } from '../audio/pcmPlayback.js';
|
|
12
|
-
import { RealtimeAudioMeter } from '../audio/audioMeter.js';
|
|
13
|
-
import { createPcmMicCapture } from '../audio/micCapture.js';
|
|
9
|
+
import { OpenAIProtocolWebSocketRealtimeClient, } from '../generic/openAIProtocolClient.js';
|
|
14
10
|
// ── Audio constants ────────────────────────────────────────────────────────────
|
|
15
11
|
/**
|
|
16
12
|
* Default PCM16 sample rate (mono) both directions, used when the server pact omits `sampleRate`.
|
|
17
13
|
* HuggingFace's speech-to-speech cascade is natively **16 kHz**, so capture AND playout default to that
|
|
18
|
-
* (a wrong rate pitch/speed-distorts audio). Matches the server driver's
|
|
14
|
+
* (a wrong rate pitch/speed-distorts audio). Matches the server driver's `HUGGINGFACE_DEFAULT_PCM_SAMPLE_RATE`.
|
|
19
15
|
*/
|
|
20
16
|
export const HUGGINGFACE_DEFAULT_PCM_SAMPLE_RATE = 16000;
|
|
21
17
|
// ── The driver ─────────────────────────────────────────────────────────────────
|
|
@@ -30,176 +26,53 @@ export const HUGGINGFACE_DEFAULT_PCM_SAMPLE_RATE = 16000;
|
|
|
30
26
|
* — the credential IS the URL): the browser connects to MJAPI's realtime proxy, which tunnels
|
|
31
27
|
* transparently to the internal self-hosted endpoint. The client never learns the internal endpoint.
|
|
32
28
|
*
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
*
|
|
29
|
+
* Because HuggingFace speaks the OpenAI wire protocol over a websocket with a client-owned PCM
|
|
30
|
+
* plane, nearly everything lives in the shared layers (protocol brain + websocket transport in
|
|
31
|
+
* {@link OpenAIProtocolWebSocketRealtimeClient}). This class supplies only the HuggingFace
|
|
32
|
+
* specifics: the proxy-URL connect, the `{ session, sampleRate }` server-pact parsing, the
|
|
33
|
+
* `session.created` readiness gate (OpenAI ordering — a `session.update` sent earlier is
|
|
34
|
+
* dropped), and the benign close semantics of a self-hosted proxy hop.
|
|
37
35
|
*/
|
|
38
|
-
let HuggingFaceRealtimeClient =
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
this.closedByConsumer = false;
|
|
58
|
-
// ── Connection internals ───────────────────────────────────────────────────
|
|
59
|
-
/** Resolver for the in-flight Connect's socket-open wait. */
|
|
60
|
-
this.onOpen = null;
|
|
61
|
-
}
|
|
62
|
-
// ── BaseRealtimeClient: connection lifecycle ───────────────────────────────
|
|
63
|
-
/**
|
|
64
|
-
* Opens the browser-direct websocket to the proxy URL (`config.EphemeralToken`), waits for the
|
|
65
|
-
* endpoint's `session.created`, applies the server-built session config, builds the PCM audio plane
|
|
66
|
-
* at the pact's sample rate, and reports `'listening'`.
|
|
67
|
-
*/
|
|
68
|
-
async Connect(config, micStream) {
|
|
69
|
-
this.setState('connecting');
|
|
70
|
-
this.sessionObject = HuggingFaceRealtimeClient_1.parseSessionObject(config);
|
|
71
|
-
const sampleRate = HuggingFaceRealtimeClient_1.parseSampleRate(config);
|
|
72
|
-
this.micStream = micStream;
|
|
73
|
-
const opened = this.buildSignal((resolve) => (this.onOpen = resolve));
|
|
74
|
-
const created = this.buildSignal((resolve) => (this.onSessionCreated = resolve));
|
|
75
|
-
this.socket = this.createSocket(config.EphemeralToken);
|
|
76
|
-
this.socket.onopen = () => this.onOpen?.();
|
|
77
|
-
this.socket.onmessage = (data) => this.handleSocketMessage(data);
|
|
78
|
-
this.socket.onerror = (message) => this.handleSocketError(message);
|
|
79
|
-
this.socket.onclose = () => this.handleSocketClose();
|
|
80
|
-
await opened;
|
|
81
|
-
this.setState('connected');
|
|
82
|
-
await created;
|
|
83
|
-
this.applySessionConfig();
|
|
84
|
-
this.playback = this.createPlayback(sampleRate);
|
|
85
|
-
this.micCapture = await this.createMicCapture(micStream, sampleRate, (b64) => this.sendInput(b64));
|
|
86
|
-
this.attachOutputAudioMeter(this.playback?.CreateMeter?.() ?? null);
|
|
87
|
-
this.attachInputAudioMeter(RealtimeAudioMeter.ForMicStream(micStream));
|
|
88
|
-
this.setState('listening');
|
|
89
|
-
}
|
|
90
|
-
/** Tears down the audio plane + socket and resets the response state machine. */
|
|
91
|
-
async Disconnect() {
|
|
92
|
-
this.closedByConsumer = true;
|
|
93
|
-
this.closeAudioMeters();
|
|
94
|
-
this.micCapture?.Stop();
|
|
95
|
-
this.micCapture = null;
|
|
96
|
-
this.micStream?.getTracks().forEach((t) => t.stop());
|
|
97
|
-
this.micStream = null;
|
|
98
|
-
this.playback?.Close();
|
|
99
|
-
this.playback = null;
|
|
100
|
-
if (this.socket) {
|
|
101
|
-
try {
|
|
102
|
-
this.socket.close();
|
|
103
|
-
}
|
|
104
|
-
catch { /* already closing */ }
|
|
105
|
-
this.socket = null;
|
|
106
|
-
}
|
|
107
|
-
this.resetResponseState();
|
|
108
|
-
if (this.currentState !== 'error') {
|
|
109
|
-
this.setState('closed');
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
// ── BaseRealtimeClient: outbound actions ──────────────────────────────────
|
|
113
|
-
/**
|
|
114
|
-
* Injects typed text as a user-role message, then triggers a reply through the same collision-safe
|
|
115
|
-
* path tool results use. SendText implies barge-in — an active spoken response is cancelled first.
|
|
116
|
-
*/
|
|
117
|
-
SendText(text) {
|
|
118
|
-
if (!this.socket) {
|
|
119
|
-
return;
|
|
120
|
-
}
|
|
121
|
-
this.CancelActiveResponse();
|
|
122
|
-
this.sendFrame({
|
|
123
|
-
type: 'conversation.item.create',
|
|
124
|
-
item: { type: 'message', role: 'user', content: [{ type: 'input_text', text }] },
|
|
125
|
-
});
|
|
126
|
-
this.requestResultResponse();
|
|
127
|
-
}
|
|
128
|
-
/**
|
|
129
|
-
* Cancels the model's in-flight response (only when one is active) and flushes local playback so
|
|
130
|
-
* already-buffered speech stops immediately. Preserves any queued tool-result trigger. No-op when idle.
|
|
131
|
-
*/
|
|
132
|
-
CancelActiveResponse() {
|
|
133
|
-
if (!this.socket) {
|
|
134
|
-
return;
|
|
135
|
-
}
|
|
136
|
-
const playing = this.playback?.IsPlaying ?? false;
|
|
137
|
-
if (!this.responseActive && !playing) {
|
|
138
|
-
return;
|
|
139
|
-
}
|
|
140
|
-
if (this.responseActive) {
|
|
141
|
-
this.sendFrame({ type: 'response.cancel' });
|
|
142
|
-
this.responseActive = false;
|
|
143
|
-
this.pendingNarrationKind = false;
|
|
144
|
-
this.activeResponseKind = 'normal';
|
|
145
|
-
this.pendingAssistantText = '';
|
|
146
|
-
}
|
|
147
|
-
this.playback?.Flush();
|
|
148
|
-
if (this.currentState === 'speaking') {
|
|
149
|
-
this.setState('listening');
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
/** Injects a system-role context item the model can draw on next time it speaks, WITHOUT a reply. */
|
|
153
|
-
SendContextNote(text) {
|
|
154
|
-
if (!this.socket) {
|
|
155
|
-
return;
|
|
156
|
-
}
|
|
157
|
-
this.sendFrame({
|
|
158
|
-
type: 'conversation.item.create',
|
|
159
|
-
item: { type: 'message', role: 'system', content: [{ type: 'input_text', text }] },
|
|
160
|
-
});
|
|
36
|
+
let HuggingFaceRealtimeClient = class HuggingFaceRealtimeClient extends OpenAIProtocolWebSocketRealtimeClient {
|
|
37
|
+
/** @inheritdoc — used in the shared diagnostics + close messages. */
|
|
38
|
+
get providerDebugLabel() {
|
|
39
|
+
return 'HuggingFaceRealtimeClient';
|
|
40
|
+
}
|
|
41
|
+
// ── Transport hooks ────────────────────────────────────────────────────────
|
|
42
|
+
/** @inheritdoc — the proxy URL IS the credential (one-time ticket in the query string). */
|
|
43
|
+
openProviderSocket(config) {
|
|
44
|
+
return this.createSocket(config.EphemeralToken);
|
|
45
|
+
}
|
|
46
|
+
/** @inheritdoc — the endpoint drops `session.update` until `session.created` confirms the session. */
|
|
47
|
+
get waitsForSessionCreated() {
|
|
48
|
+
return true;
|
|
49
|
+
}
|
|
50
|
+
/** @inheritdoc — extracts the wire-shaped `session` object from the `{ session, sampleRate }` pact. */
|
|
51
|
+
resolveSessionObject(config) {
|
|
52
|
+
const sessionConfig = config.SessionConfig ?? {};
|
|
53
|
+
const raw = sessionConfig['session'];
|
|
54
|
+
return raw !== null && typeof raw === 'object' && !Array.isArray(raw) ? raw : {};
|
|
161
55
|
}
|
|
162
|
-
/**
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
RequestSpokenUpdate(instructions) {
|
|
167
|
-
if (!this.socket || this.responseActive) {
|
|
168
|
-
return;
|
|
169
|
-
}
|
|
170
|
-
this.responseActive = true;
|
|
171
|
-
this.pendingNarrationKind = true;
|
|
172
|
-
this.sendFrame({ type: 'response.create', response: { instructions } });
|
|
56
|
+
/** @inheritdoc — the pact's `sampleRate`, defaulting to the HF-native 16 kHz. */
|
|
57
|
+
resolveSampleRate(config) {
|
|
58
|
+
const raw = config.SessionConfig?.['sampleRate'];
|
|
59
|
+
return typeof raw === 'number' && raw > 0 ? raw : HUGGINGFACE_DEFAULT_PCM_SAMPLE_RATE;
|
|
173
60
|
}
|
|
174
61
|
/**
|
|
175
|
-
*
|
|
176
|
-
*
|
|
62
|
+
* @inheritdoc
|
|
63
|
+
*
|
|
64
|
+
* A close the consumer didn't ask for is reported as a terminal `'closed'` — NOT the fatal
|
|
65
|
+
* error the cloud providers surface: the self-hosted proxy hop closes benignly (ticket
|
|
66
|
+
* expiry, upstream restart), and the host treats `'closed'` as the session-over signal.
|
|
177
67
|
*/
|
|
178
|
-
|
|
179
|
-
if (
|
|
68
|
+
handleSocketClose() {
|
|
69
|
+
if (this.closedByConsumer) {
|
|
180
70
|
return;
|
|
181
71
|
}
|
|
182
|
-
this.
|
|
183
|
-
|
|
184
|
-
item: { type: 'function_call_output', call_id: callID, output: outputJson },
|
|
185
|
-
});
|
|
186
|
-
this.requestResultResponse();
|
|
187
|
-
}
|
|
188
|
-
/** Mute / unmute by toggling the mic tracks' `enabled` flag (transport stays up). */
|
|
189
|
-
SetMuted(muted) {
|
|
190
|
-
for (const t of this.micStream?.getAudioTracks() ?? []) {
|
|
191
|
-
t.enabled = !muted;
|
|
72
|
+
if (this.currentState !== 'error') {
|
|
73
|
+
this.setState('closed');
|
|
192
74
|
}
|
|
193
75
|
}
|
|
194
|
-
/** @inheritdoc */
|
|
195
|
-
get IsBusy() {
|
|
196
|
-
return this.responseActive;
|
|
197
|
-
}
|
|
198
|
-
/** @inheritdoc */
|
|
199
|
-
get IsAudioPlaying() {
|
|
200
|
-
return this.playback?.IsPlaying ?? false;
|
|
201
|
-
}
|
|
202
|
-
// ── Overridable creation seams (tests inject fakes — no network / WebAudio) ──
|
|
203
76
|
/** Creates the websocket to the given URL (the proxy URL). Production wraps the platform `WebSocket`. */
|
|
204
77
|
createSocket(url) {
|
|
205
78
|
const WS = globalThis.WebSocket;
|
|
@@ -221,228 +94,8 @@ let HuggingFaceRealtimeClient = HuggingFaceRealtimeClient_1 = class HuggingFaceR
|
|
|
221
94
|
ws.onclose = () => seam.onclose?.();
|
|
222
95
|
return seam;
|
|
223
96
|
}
|
|
224
|
-
/** Creation seam for the mic-capture pipeline. Production delegates to the shared {@link createPcmMicCapture}. */
|
|
225
|
-
async createMicCapture(micStream, sampleRate, onPcmChunk) {
|
|
226
|
-
return createPcmMicCapture(micStream, sampleRate, onPcmChunk);
|
|
227
|
-
}
|
|
228
|
-
/** Creation seam for the playout engine. Production returns the shared {@link RealtimePcmPlayback}. */
|
|
229
|
-
createPlayback(sampleRate) {
|
|
230
|
-
return new RealtimePcmPlayback(sampleRate);
|
|
231
|
-
}
|
|
232
|
-
/** Extracts the wire-shaped `session` object from the server pact (`{ session, sampleRate }`). */
|
|
233
|
-
static parseSessionObject(config) {
|
|
234
|
-
const sessionConfig = config.SessionConfig ?? {};
|
|
235
|
-
const raw = sessionConfig['session'];
|
|
236
|
-
return raw !== null && typeof raw === 'object' && !Array.isArray(raw) ? raw : {};
|
|
237
|
-
}
|
|
238
|
-
/** Extracts the PCM sample rate from the server pact, defaulting to the HF-native 16 kHz. */
|
|
239
|
-
static parseSampleRate(config) {
|
|
240
|
-
const raw = config.SessionConfig?.['sampleRate'];
|
|
241
|
-
return typeof raw === 'number' && raw > 0 ? raw : HUGGINGFACE_DEFAULT_PCM_SAMPLE_RATE;
|
|
242
|
-
}
|
|
243
|
-
/** Creates a one-shot signal promise, handing its resolver to the supplied setter. */
|
|
244
|
-
buildSignal(assign) {
|
|
245
|
-
return new Promise((resolve) => assign(resolve));
|
|
246
|
-
}
|
|
247
|
-
/** Sends the server-built session config once the session exists (skipped when empty). */
|
|
248
|
-
applySessionConfig() {
|
|
249
|
-
if (Object.keys(this.sessionObject).length === 0) {
|
|
250
|
-
return;
|
|
251
|
-
}
|
|
252
|
-
this.sendFrame({ type: 'session.update', session: this.sessionObject });
|
|
253
|
-
}
|
|
254
|
-
/** Streams one base64 PCM16 mic frame as an `input_audio_buffer.append`. */
|
|
255
|
-
sendInput(base64Pcm16) {
|
|
256
|
-
this.sendFrame({ type: 'input_audio_buffer.append', audio: base64Pcm16 });
|
|
257
|
-
}
|
|
258
|
-
// ── Inbound event translation ──────────────────────────────────────────────
|
|
259
|
-
/** Parses an inbound frame and dispatches it. */
|
|
260
|
-
handleSocketMessage(data) {
|
|
261
|
-
let event;
|
|
262
|
-
try {
|
|
263
|
-
event = JSON.parse(data);
|
|
264
|
-
}
|
|
265
|
-
catch {
|
|
266
|
-
return; // non-JSON frame — ignore
|
|
267
|
-
}
|
|
268
|
-
if (event === null || typeof event !== 'object') {
|
|
269
|
-
return;
|
|
270
|
-
}
|
|
271
|
-
this.handleEvent(event);
|
|
272
|
-
}
|
|
273
|
-
/** Dispatches a typed OpenAI-Realtime server event to the appropriate behavior. */
|
|
274
|
-
handleEvent(event) {
|
|
275
|
-
switch (event.type) {
|
|
276
|
-
case 'session.created':
|
|
277
|
-
this.onSessionCreated?.();
|
|
278
|
-
this.onSessionCreated = null;
|
|
279
|
-
break;
|
|
280
|
-
case 'response.output_audio.delta':
|
|
281
|
-
case 'response.audio.delta':
|
|
282
|
-
this.handleAudioDelta(event.delta);
|
|
283
|
-
break;
|
|
284
|
-
case 'response.output_audio_transcript.delta':
|
|
285
|
-
case 'response.audio_transcript.delta':
|
|
286
|
-
this.onAssistantDelta(event.delta ?? '');
|
|
287
|
-
break;
|
|
288
|
-
case 'response.output_audio_transcript.done':
|
|
289
|
-
case 'response.audio_transcript.done':
|
|
290
|
-
this.onAssistantDone(event.transcript ?? '');
|
|
291
|
-
break;
|
|
292
|
-
case 'conversation.item.input_audio_transcription.completed':
|
|
293
|
-
this.emitTranscript({ Role: 'User', Text: event.transcript ?? '', IsFinal: true, Kind: 'normal' });
|
|
294
|
-
break;
|
|
295
|
-
case 'response.function_call_arguments.done':
|
|
296
|
-
this.onToolCallFrame(event);
|
|
297
|
-
break;
|
|
298
|
-
case 'input_audio_buffer.speech_started':
|
|
299
|
-
this.handleSpeechStarted();
|
|
300
|
-
break;
|
|
301
|
-
case 'response.created':
|
|
302
|
-
this.responseActive = true;
|
|
303
|
-
this.activeResponseKind = this.pendingNarrationKind ? 'narration' : 'normal';
|
|
304
|
-
this.pendingNarrationKind = false;
|
|
305
|
-
break;
|
|
306
|
-
case 'response.done':
|
|
307
|
-
this.handleResponseDone(event);
|
|
308
|
-
break;
|
|
309
|
-
case 'error':
|
|
310
|
-
this.emitError({ Message: event.error?.message ?? 'Unknown provider error', Code: event.error?.code, Fatal: false });
|
|
311
|
-
break;
|
|
312
|
-
default:
|
|
313
|
-
break;
|
|
314
|
-
}
|
|
315
|
-
}
|
|
316
|
-
/** Enqueues one base64 audio chunk for playout and reflects `'speaking'`. */
|
|
317
|
-
handleAudioDelta(deltaBase64) {
|
|
318
|
-
if (!deltaBase64) {
|
|
319
|
-
return;
|
|
320
|
-
}
|
|
321
|
-
if (this.currentState !== 'speaking') {
|
|
322
|
-
this.setState('speaking');
|
|
323
|
-
}
|
|
324
|
-
this.playback?.Enqueue(base64ToArrayBuffer(deltaBase64));
|
|
325
|
-
}
|
|
326
|
-
/** Appends an assistant transcript delta and emits it (tagged with the active response kind). */
|
|
327
|
-
onAssistantDelta(delta) {
|
|
328
|
-
if (!delta) {
|
|
329
|
-
return;
|
|
330
|
-
}
|
|
331
|
-
if (this.currentState !== 'speaking') {
|
|
332
|
-
this.setState('speaking');
|
|
333
|
-
}
|
|
334
|
-
this.pendingAssistantText += delta;
|
|
335
|
-
this.emitTranscript({ Role: 'Assistant', Text: delta, IsFinal: false, Kind: this.activeResponseKind });
|
|
336
|
-
}
|
|
337
|
-
/** Finalizes the assistant turn (empty turns emit nothing). */
|
|
338
|
-
onAssistantDone(transcript) {
|
|
339
|
-
const finalText = transcript || this.pendingAssistantText;
|
|
340
|
-
this.pendingAssistantText = '';
|
|
341
|
-
if (finalText.trim().length > 0) {
|
|
342
|
-
this.emitTranscript({ Role: 'Assistant', Text: finalText, IsFinal: true, Kind: this.activeResponseKind });
|
|
343
|
-
}
|
|
344
|
-
}
|
|
345
|
-
/**
|
|
346
|
-
* Surfaces a completed tool call. Silently leaves `'speaking'` (no emission) so a host busy indicator
|
|
347
|
-
* isn't clobbered, and clears the busy flag (deadlock guard — obligation #2). `arguments` is already a
|
|
348
|
-
* JSON string on the wire.
|
|
349
|
-
*/
|
|
350
|
-
onToolCallFrame(event) {
|
|
351
|
-
if (this.currentState === 'speaking') {
|
|
352
|
-
this.currentState = 'connected';
|
|
353
|
-
}
|
|
354
|
-
this.responseActive = false;
|
|
355
|
-
this.emitToolCall({
|
|
356
|
-
CallID: event.call_id ?? '',
|
|
357
|
-
ToolName: event.name ?? '',
|
|
358
|
-
ArgumentsJson: typeof event.arguments === 'string' ? event.arguments : JSON.stringify(event.arguments ?? {}),
|
|
359
|
-
});
|
|
360
|
-
}
|
|
361
|
-
/**
|
|
362
|
-
* True barge-in ONLY: the user started speaking over active model output (a response in flight or audio
|
|
363
|
-
* audibly playing). Flushes local playback, emits the interruption, returns to `'listening'`.
|
|
364
|
-
*/
|
|
365
|
-
handleSpeechStarted() {
|
|
366
|
-
const playing = this.playback?.IsPlaying ?? false;
|
|
367
|
-
if (this.responseActive || playing) {
|
|
368
|
-
this.playback?.Flush();
|
|
369
|
-
this.emitInterruption();
|
|
370
|
-
}
|
|
371
|
-
this.setState('listening');
|
|
372
|
-
}
|
|
373
|
-
/** Response boundary: release the lock, emit usage, fire any queued tool-result reply, return to listening. */
|
|
374
|
-
handleResponseDone(event) {
|
|
375
|
-
this.responseActive = false;
|
|
376
|
-
this.activeResponseKind = 'normal';
|
|
377
|
-
const usage = event.response?.usage;
|
|
378
|
-
if (usage) {
|
|
379
|
-
this.emitUsage({ InputTokens: usage.input_tokens, OutputTokens: usage.output_tokens, Raw: usage });
|
|
380
|
-
}
|
|
381
|
-
this.flushPendingResultResponse();
|
|
382
|
-
if (this.currentState === 'speaking') {
|
|
383
|
-
this.setState('listening');
|
|
384
|
-
}
|
|
385
|
-
}
|
|
386
|
-
// ── Response state machine ─────────────────────────────────────────────────
|
|
387
|
-
/** Triggers a reply immediately when idle, else queues it until the current response finishes. */
|
|
388
|
-
requestResultResponse() {
|
|
389
|
-
if (!this.socket) {
|
|
390
|
-
return;
|
|
391
|
-
}
|
|
392
|
-
if (this.responseActive) {
|
|
393
|
-
this.pendingResultResponse = true;
|
|
394
|
-
return;
|
|
395
|
-
}
|
|
396
|
-
this.pendingResultResponse = false;
|
|
397
|
-
this.responseActive = true;
|
|
398
|
-
this.sendFrame({ type: 'response.create' });
|
|
399
|
-
this.setState('speaking');
|
|
400
|
-
}
|
|
401
|
-
/** On a turn completing, fire any queued tool-result response so the answer is spoken. */
|
|
402
|
-
flushPendingResultResponse() {
|
|
403
|
-
if (!this.pendingResultResponse || !this.socket) {
|
|
404
|
-
return;
|
|
405
|
-
}
|
|
406
|
-
this.pendingResultResponse = false;
|
|
407
|
-
this.responseActive = true;
|
|
408
|
-
this.sendFrame({ type: 'response.create' });
|
|
409
|
-
this.setState('speaking');
|
|
410
|
-
}
|
|
411
|
-
/** Resets the per-session response state machine (used on Disconnect). */
|
|
412
|
-
resetResponseState() {
|
|
413
|
-
this.pendingAssistantText = '';
|
|
414
|
-
this.responseActive = false;
|
|
415
|
-
this.pendingResultResponse = false;
|
|
416
|
-
this.pendingNarrationKind = false;
|
|
417
|
-
this.activeResponseKind = 'normal';
|
|
418
|
-
}
|
|
419
|
-
// ── Transport error / close ────────────────────────────────────────────────
|
|
420
|
-
/** A socket-level error is fatal — the transport is gone (obligation #6). */
|
|
421
|
-
handleSocketError(message) {
|
|
422
|
-
this.emitError({ Message: message, Fatal: true });
|
|
423
|
-
this.setState('error');
|
|
424
|
-
}
|
|
425
|
-
/** A close is silent when consumer-initiated; otherwise reported as a terminal `'closed'`. */
|
|
426
|
-
handleSocketClose() {
|
|
427
|
-
if (this.closedByConsumer) {
|
|
428
|
-
return;
|
|
429
|
-
}
|
|
430
|
-
if (this.currentState !== 'error') {
|
|
431
|
-
this.setState('closed');
|
|
432
|
-
}
|
|
433
|
-
}
|
|
434
|
-
// ── Helpers ────────────────────────────────────────────────────────────────
|
|
435
|
-
/** Updates the client's own state view and emits the change to the host. */
|
|
436
|
-
setState(state) {
|
|
437
|
-
this.currentState = state;
|
|
438
|
-
this.emitStateChange(state);
|
|
439
|
-
}
|
|
440
|
-
/** JSON-serializes and sends one client frame (no-op when the socket is closed). */
|
|
441
|
-
sendFrame(frame) {
|
|
442
|
-
this.socket?.send(JSON.stringify(frame));
|
|
443
|
-
}
|
|
444
97
|
};
|
|
445
|
-
HuggingFaceRealtimeClient =
|
|
98
|
+
HuggingFaceRealtimeClient = __decorate([
|
|
446
99
|
RegisterClass(BaseRealtimeClient, 'huggingface')
|
|
447
100
|
], HuggingFaceRealtimeClient);
|
|
448
101
|
export { HuggingFaceRealtimeClient };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"huggingFaceRealtimeClient.js","sourceRoot":"","sources":["../../src/drivers/huggingFaceRealtimeClient.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"huggingFaceRealtimeClient.js","sourceRoot":"","sources":["../../src/drivers/huggingFaceRealtimeClient.ts"],"names":[],"mappings":"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"}
|