@llmrtc/llmrtc-web-client 1.0.0 → 1.2.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/CHANGELOG.md +63 -0
- package/NOTICE +7 -0
- package/dist/connection-state.d.ts +4 -0
- package/dist/connection-state.js +7 -1
- package/dist/connection-state.js.map +1 -1
- package/dist/index.d.ts +45 -2
- package/dist/index.js +307 -77
- package/dist/index.js.map +1 -1
- package/package.json +13 -5
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# @llmrtc/llmrtc-web-client
|
|
2
|
+
|
|
3
|
+
## 1.2.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 3db8818: Realtime relay milestone 3 (RFC 0001): playbooks, client events,
|
|
8
|
+
reconnect grace.
|
|
9
|
+
- Playbooks work in relay mode (llm_decision transitions;
|
|
10
|
+
clearHistory and per-stage llmConfig are not applied in relay mode): playbook_transition tool calls
|
|
11
|
+
reconfigure the live session's instructions and tools via the shared
|
|
12
|
+
PlaybookEngine, emit stage-change to clients, and nudge the model to
|
|
13
|
+
speak the new stage.
|
|
14
|
+
- Web client: new assistantTranscript and usage events, plus a
|
|
15
|
+
reserved modeChanged event (mid-session pipeline fallback ships in a
|
|
16
|
+
later milestone);
|
|
17
|
+
new mode-changed protocol message; session interface gains optional
|
|
18
|
+
requestResponse (OpenAI adapter implements it).
|
|
19
|
+
- Client reconnect grace: a dropped client has clientReconnectGraceMs
|
|
20
|
+
(default 30s) to reconnect and adopt its still-live provider session
|
|
21
|
+
(honest historyRecovered semantics); playback re-targets the new
|
|
22
|
+
peer.
|
|
23
|
+
- New docs page: Realtime Speech-to-Speech (experimental).
|
|
24
|
+
|
|
25
|
+
### Patch Changes
|
|
26
|
+
|
|
27
|
+
- Updated dependencies [6a74624]
|
|
28
|
+
- Updated dependencies [2cc97a0]
|
|
29
|
+
- Updated dependencies [3db8818]
|
|
30
|
+
- @llmrtc/llmrtc-core@1.3.0
|
|
31
|
+
|
|
32
|
+
## 1.1.0
|
|
33
|
+
|
|
34
|
+
### Minor Changes
|
|
35
|
+
|
|
36
|
+
- 8ff3ea3: Correctness release: make the advertised behavior actually work end to end.
|
|
37
|
+
- Core: system prompt is always sent and pinned outside the history window;
|
|
38
|
+
runTurnStream accepts an AbortSignal (barge-in); onLLMEnd has real
|
|
39
|
+
guardrail semantics; concurrent turns serialize correctly; clearHistory
|
|
40
|
+
transitions clear conversation history; PlaybookHooks are wired; tool
|
|
41
|
+
executor abort/ordering fixes; deep tool-argument validation.
|
|
42
|
+
- Providers: multi-turn tool calling now works across OpenAI, Anthropic,
|
|
43
|
+
Gemini, Bedrock, OpenRouter, LMStudio, and Ollama (history replay,
|
|
44
|
+
parallel tool results, streaming accumulation); malformed tool arguments
|
|
45
|
+
are flagged instead of silently becoming {}; Bedrock defaults to an
|
|
46
|
+
invocable inference profile; Ollama NDJSON streaming is buffered
|
|
47
|
+
correctly; ElevenLabs format mapping fixed; Whisper uploads are named by
|
|
48
|
+
their actual container.
|
|
49
|
+
- Backend: turns serialize per connection and barge-in aborts the in-flight
|
|
50
|
+
turn in any phase; session reconnection binds the recovered history;
|
|
51
|
+
Metered TURN credentials refresh on a TTL; start()/stop() lifecycle
|
|
52
|
+
fixes; real-time audio pacing.
|
|
53
|
+
- Web client: vision frames are delivered in time to reach the turn;
|
|
54
|
+
session resume follows the protocol and actually restores history;
|
|
55
|
+
close()/failure releases the microphone and camera; frame capture works
|
|
56
|
+
outside Chromium; non-WebRTC fallback (sendAudio/ttsChunk) is usable.
|
|
57
|
+
- Packaging: packages resolve under require(), clean checkouts build first
|
|
58
|
+
try, and npm tarballs ship the NOTICE file.
|
|
59
|
+
|
|
60
|
+
### Patch Changes
|
|
61
|
+
|
|
62
|
+
- Updated dependencies [8ff3ea3]
|
|
63
|
+
- @llmrtc/llmrtc-core@1.1.0
|
package/NOTICE
ADDED
|
@@ -82,6 +82,10 @@ export declare class ConnectionStateMachine extends EventEmitter<ConnectionState
|
|
|
82
82
|
* Reset the state machine to initial state.
|
|
83
83
|
*/
|
|
84
84
|
reset(): void;
|
|
85
|
+
/**
|
|
86
|
+
* Reset only the retry counter (e.g. when the user restarts the client).
|
|
87
|
+
*/
|
|
88
|
+
resetRetries(): void;
|
|
85
89
|
/**
|
|
86
90
|
* Update the configuration.
|
|
87
91
|
*/
|
package/dist/connection-state.js
CHANGED
|
@@ -116,7 +116,7 @@ export class ConnectionStateMachine extends EventEmitter {
|
|
|
116
116
|
ConnectionState.FAILED
|
|
117
117
|
],
|
|
118
118
|
[ConnectionState.FAILED]: [ConnectionState.CONNECTING], // Allow retry from failed
|
|
119
|
-
[ConnectionState.CLOSED]: [] //
|
|
119
|
+
[ConnectionState.CLOSED]: [ConnectionState.CONNECTING] // Allow restart after close()
|
|
120
120
|
};
|
|
121
121
|
return validTransitions[from]?.includes(to) ?? false;
|
|
122
122
|
}
|
|
@@ -148,6 +148,12 @@ export class ConnectionStateMachine extends EventEmitter {
|
|
|
148
148
|
this._state = ConnectionState.DISCONNECTED;
|
|
149
149
|
this._retryCount = 0;
|
|
150
150
|
}
|
|
151
|
+
/**
|
|
152
|
+
* Reset only the retry counter (e.g. when the user restarts the client).
|
|
153
|
+
*/
|
|
154
|
+
resetRetries() {
|
|
155
|
+
this._retryCount = 0;
|
|
156
|
+
}
|
|
151
157
|
/**
|
|
152
158
|
* Update the configuration.
|
|
153
159
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection-state.js","sourceRoot":"","sources":["../src/connection-state.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"connection-state.js","sourceRoot":"","sources":["../src/connection-state.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -38,10 +38,24 @@ export interface StageChangePayload {
|
|
|
38
38
|
reason: string;
|
|
39
39
|
}
|
|
40
40
|
export type ClientEvents = {
|
|
41
|
-
transcript: (text: string) => void;
|
|
41
|
+
transcript: (text: string, isFinal?: boolean) => void;
|
|
42
|
+
/** Assistant-side transcript (realtime relay mode). */
|
|
43
|
+
assistantTranscript: (text: string, isFinal?: boolean) => void;
|
|
44
|
+
/** Per-response token usage (realtime relay mode). */
|
|
45
|
+
usage: (usage: {
|
|
46
|
+
inputTokens: number;
|
|
47
|
+
outputTokens: number;
|
|
48
|
+
audioInputTokens?: number;
|
|
49
|
+
audioOutputTokens?: number;
|
|
50
|
+
cachedTokens?: number;
|
|
51
|
+
}) => void;
|
|
52
|
+
/** Mid-session mode change (relay fell back to pipeline). */
|
|
53
|
+
modeChanged: (mode: 'pipeline' | 'realtime') => void;
|
|
42
54
|
llm: (text: string) => void;
|
|
43
55
|
llmChunk: (text: string) => void;
|
|
44
56
|
tts: (audio: ArrayBuffer, format: string) => void;
|
|
57
|
+
/** Streaming TTS audio when no WebRTC audio track is available */
|
|
58
|
+
ttsChunk: (audio: ArrayBuffer, format: string, sampleRate?: number) => void;
|
|
45
59
|
ttsTrack: (stream: MediaStream) => void;
|
|
46
60
|
ttsStart: () => void;
|
|
47
61
|
ttsComplete: () => void;
|
|
@@ -54,6 +68,8 @@ export type ClientEvents = {
|
|
|
54
68
|
error: (error: ClientError) => void;
|
|
55
69
|
stateChange: (state: ConnectionState) => void;
|
|
56
70
|
reconnecting: (attempt: number, maxAttempts: number) => void;
|
|
71
|
+
/** Fired after a reconnect completes; indicates whether history was recovered */
|
|
72
|
+
reconnected: (historyRecovered: boolean) => void;
|
|
57
73
|
};
|
|
58
74
|
export interface FrameCaptureController {
|
|
59
75
|
stop(): void;
|
|
@@ -72,6 +88,12 @@ export declare class LLMRTCWebClient extends EventEmitter<ClientEvents> {
|
|
|
72
88
|
private heartbeatTimeout?;
|
|
73
89
|
private missedHeartbeats;
|
|
74
90
|
private reconnectTimeout?;
|
|
91
|
+
/**
|
|
92
|
+
* Incremented on every cleanup. An in-flight reconnect attempt compares
|
|
93
|
+
* its captured epoch after each await; a mismatch means close() (or a
|
|
94
|
+
* newer attempt) superseded it and it must not resurrect the connection.
|
|
95
|
+
*/
|
|
96
|
+
private connectionEpoch;
|
|
75
97
|
/** ICE servers received from server in ready message */
|
|
76
98
|
private serverIceServers;
|
|
77
99
|
private audioTrack?;
|
|
@@ -93,6 +115,11 @@ export declare class LLMRTCWebClient extends EventEmitter<ClientEvents> {
|
|
|
93
115
|
*/
|
|
94
116
|
start(): Promise<void>;
|
|
95
117
|
private connect;
|
|
118
|
+
/**
|
|
119
|
+
* Send a reconnect request and wait for the ack.
|
|
120
|
+
* Resolves with whether the server recovered the previous history.
|
|
121
|
+
*/
|
|
122
|
+
private requestSessionResume;
|
|
96
123
|
private connectWebSocket;
|
|
97
124
|
private waitForReady;
|
|
98
125
|
private setupPeerEventHandlers;
|
|
@@ -101,6 +128,14 @@ export declare class LLMRTCWebClient extends EventEmitter<ClientEvents> {
|
|
|
101
128
|
private handlePayload;
|
|
102
129
|
private handleWebSocketClose;
|
|
103
130
|
private handleConnectionError;
|
|
131
|
+
/**
|
|
132
|
+
* Terminal failure: release every live resource (most importantly the
|
|
133
|
+
* microphone and camera - a failed client must not keep recording) and
|
|
134
|
+
* report the error.
|
|
135
|
+
*/
|
|
136
|
+
private enterFailedState;
|
|
137
|
+
/** Stop microphone and capture tracks and drop the references. */
|
|
138
|
+
private stopMediaTracks;
|
|
104
139
|
private scheduleReconnect;
|
|
105
140
|
private attemptReconnect;
|
|
106
141
|
private startHeartbeat;
|
|
@@ -111,6 +146,13 @@ export declare class LLMRTCWebClient extends EventEmitter<ClientEvents> {
|
|
|
111
146
|
*/
|
|
112
147
|
shareAudio(stream: MediaStream): Promise<AudioController>;
|
|
113
148
|
private waitForStableSignaling;
|
|
149
|
+
/**
|
|
150
|
+
* Send a complete audio utterance over the signaling channel.
|
|
151
|
+
* This is the non-WebRTC fallback path (e.g. when the server reports
|
|
152
|
+
* WEBRTC_UNAVAILABLE): the server transcribes the buffer and replies
|
|
153
|
+
* over the WebSocket, streaming TTS via 'ttsChunk'/'tts' events.
|
|
154
|
+
*/
|
|
155
|
+
sendAudio(audio: ArrayBuffer, attachments?: AttachmentPayload[]): void;
|
|
114
156
|
/**
|
|
115
157
|
* Send vision attachments to include with next speech segment.
|
|
116
158
|
*/
|
|
@@ -119,7 +161,8 @@ export declare class LLMRTCWebClient extends EventEmitter<ClientEvents> {
|
|
|
119
161
|
shareVideo(stream: MediaStream, intervalMs?: number): FrameCaptureController;
|
|
120
162
|
shareScreen(stream: MediaStream, intervalMs?: number): FrameCaptureController;
|
|
121
163
|
/**
|
|
122
|
-
* Close the connection.
|
|
164
|
+
* Close the connection and release all media (microphone included).
|
|
165
|
+
* The client can be started again with start().
|
|
123
166
|
*/
|
|
124
167
|
close(): void;
|
|
125
168
|
private cleanup;
|
package/dist/index.js
CHANGED
|
@@ -75,6 +75,17 @@ export class LLMRTCWebClient extends EventEmitter {
|
|
|
75
75
|
writable: true,
|
|
76
76
|
value: void 0
|
|
77
77
|
});
|
|
78
|
+
/**
|
|
79
|
+
* Incremented on every cleanup. An in-flight reconnect attempt compares
|
|
80
|
+
* its captured epoch after each await; a mismatch means close() (or a
|
|
81
|
+
* newer attempt) superseded it and it must not resurrect the connection.
|
|
82
|
+
*/
|
|
83
|
+
Object.defineProperty(this, "connectionEpoch", {
|
|
84
|
+
enumerable: true,
|
|
85
|
+
configurable: true,
|
|
86
|
+
writable: true,
|
|
87
|
+
value: 0
|
|
88
|
+
});
|
|
78
89
|
/** ICE servers received from server in ready message */
|
|
79
90
|
Object.defineProperty(this, "serverIceServers", {
|
|
80
91
|
enumerable: true,
|
|
@@ -139,9 +150,15 @@ export class LLMRTCWebClient extends EventEmitter {
|
|
|
139
150
|
* Start the connection to the server.
|
|
140
151
|
*/
|
|
141
152
|
async start() {
|
|
142
|
-
|
|
153
|
+
const restartableStates = [
|
|
154
|
+
ConnectionState.DISCONNECTED,
|
|
155
|
+
ConnectionState.FAILED,
|
|
156
|
+
ConnectionState.CLOSED
|
|
157
|
+
];
|
|
158
|
+
if (!restartableStates.includes(this.stateMachine.state)) {
|
|
143
159
|
throw new Error('Client already started or connecting');
|
|
144
160
|
}
|
|
161
|
+
this.stateMachine.resetRetries();
|
|
145
162
|
this.stateMachine.transition(ConnectionState.CONNECTING);
|
|
146
163
|
try {
|
|
147
164
|
await this.connect();
|
|
@@ -152,12 +169,19 @@ export class LLMRTCWebClient extends EventEmitter {
|
|
|
152
169
|
throw error;
|
|
153
170
|
}
|
|
154
171
|
}
|
|
155
|
-
async connect() {
|
|
172
|
+
async connect(resumeSessionId) {
|
|
156
173
|
// 1. Establish WebSocket
|
|
157
174
|
await this.connectWebSocket();
|
|
158
175
|
// 2. Wait for ready message with session ID and ICE servers
|
|
159
176
|
await this.waitForReady();
|
|
160
|
-
// 3.
|
|
177
|
+
// 3. Resume the previous session BEFORE negotiating the peer, so the
|
|
178
|
+
// server binds the recovered conversation to this connection
|
|
179
|
+
// (protocol order: ready -> reconnect -> reconnect-ack -> offer)
|
|
180
|
+
if (resumeSessionId) {
|
|
181
|
+
const recovered = await this.requestSessionResume(resumeSessionId);
|
|
182
|
+
this.emit('reconnected', recovered);
|
|
183
|
+
}
|
|
184
|
+
// 4. Resolve ICE servers
|
|
161
185
|
// Priority: client config > server-provided > default STUN
|
|
162
186
|
const iceServers = this.config.iceServers?.length
|
|
163
187
|
? this.config.iceServers
|
|
@@ -165,16 +189,53 @@ export class LLMRTCWebClient extends EventEmitter {
|
|
|
165
189
|
? this.serverIceServers
|
|
166
190
|
: DEFAULT_ICE_SERVERS;
|
|
167
191
|
console.log('[web-client] Using', iceServers.length, 'ICE servers');
|
|
168
|
-
//
|
|
192
|
+
// 5. Create peer connection
|
|
169
193
|
this.peer = new NativePeer({ iceServers, trickle: false }, true);
|
|
170
194
|
this.setupPeerEventHandlers();
|
|
171
|
-
//
|
|
195
|
+
// 6. Create offer (triggers signal event which sends to server)
|
|
172
196
|
await this.peer.createOffer();
|
|
173
|
-
//
|
|
197
|
+
// 7. Wait for peer connection to be established
|
|
174
198
|
await this.waitForPeerConnection();
|
|
175
|
-
//
|
|
199
|
+
// 8. Start heartbeat
|
|
176
200
|
this.startHeartbeat();
|
|
177
201
|
}
|
|
202
|
+
/**
|
|
203
|
+
* Send a reconnect request and wait for the ack.
|
|
204
|
+
* Resolves with whether the server recovered the previous history.
|
|
205
|
+
*/
|
|
206
|
+
requestSessionResume(sessionId) {
|
|
207
|
+
return new Promise((resolve) => {
|
|
208
|
+
const ws = this.ws;
|
|
209
|
+
if (!ws || ws.readyState !== WebSocket.OPEN) {
|
|
210
|
+
resolve(false);
|
|
211
|
+
return;
|
|
212
|
+
}
|
|
213
|
+
const timeout = setTimeout(() => {
|
|
214
|
+
ws.removeEventListener('message', handler);
|
|
215
|
+
console.warn('[web-client] Timed out waiting for reconnect-ack');
|
|
216
|
+
resolve(false);
|
|
217
|
+
}, 5000);
|
|
218
|
+
const handler = (ev) => {
|
|
219
|
+
try {
|
|
220
|
+
const msg = JSON.parse(ev.data);
|
|
221
|
+
if (msg.type === 'reconnect-ack') {
|
|
222
|
+
clearTimeout(timeout);
|
|
223
|
+
ws.removeEventListener('message', handler);
|
|
224
|
+
if (msg.success && msg.sessionId) {
|
|
225
|
+
this.sessionId = msg.sessionId;
|
|
226
|
+
}
|
|
227
|
+
resolve(Boolean(msg.success && msg.historyRecovered));
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
catch {
|
|
231
|
+
// Ignore parse errors
|
|
232
|
+
}
|
|
233
|
+
};
|
|
234
|
+
ws.addEventListener('message', handler);
|
|
235
|
+
console.log('[web-client] Requesting session resume:', sessionId);
|
|
236
|
+
ws.send(JSON.stringify({ type: 'reconnect', sessionId }));
|
|
237
|
+
});
|
|
238
|
+
}
|
|
178
239
|
connectWebSocket() {
|
|
179
240
|
return new Promise((resolve, reject) => {
|
|
180
241
|
console.log('[web-client] Connecting to', this.config.signallingUrl);
|
|
@@ -202,6 +263,7 @@ export class LLMRTCWebClient extends EventEmitter {
|
|
|
202
263
|
waitForReady() {
|
|
203
264
|
return new Promise((resolve, reject) => {
|
|
204
265
|
const timeout = setTimeout(() => {
|
|
266
|
+
this.ws?.removeEventListener('message', handler);
|
|
205
267
|
reject(new Error('Timeout waiting for ready message'));
|
|
206
268
|
}, 10000);
|
|
207
269
|
const handler = (ev) => {
|
|
@@ -313,7 +375,14 @@ export class LLMRTCWebClient extends EventEmitter {
|
|
|
313
375
|
case 'signal':
|
|
314
376
|
if (this.peer && !this.peer.destroyed) {
|
|
315
377
|
console.log('[web-client] Received answer signal');
|
|
316
|
-
this.peer.signal(msg.signal)
|
|
378
|
+
this.peer.signal(msg.signal).catch((err) => {
|
|
379
|
+
console.error('[web-client] Failed to apply signal:', err);
|
|
380
|
+
this.emit('error', {
|
|
381
|
+
code: 'SIGNALING_ERROR',
|
|
382
|
+
message: err.message,
|
|
383
|
+
recoverable: true
|
|
384
|
+
});
|
|
385
|
+
});
|
|
317
386
|
}
|
|
318
387
|
break;
|
|
319
388
|
case 'pong':
|
|
@@ -351,7 +420,22 @@ export class LLMRTCWebClient extends EventEmitter {
|
|
|
351
420
|
const msg = JSON.parse(raw);
|
|
352
421
|
switch (msg.type) {
|
|
353
422
|
case 'transcript':
|
|
354
|
-
this.emit('transcript', msg.text);
|
|
423
|
+
this.emit('transcript', msg.text, msg.isFinal ?? true);
|
|
424
|
+
break;
|
|
425
|
+
case 'assistant-transcript':
|
|
426
|
+
this.emit('assistantTranscript', msg.text, msg.isFinal ?? true);
|
|
427
|
+
break;
|
|
428
|
+
case 'usage':
|
|
429
|
+
this.emit('usage', {
|
|
430
|
+
inputTokens: msg.inputTokens ?? 0,
|
|
431
|
+
outputTokens: msg.outputTokens ?? 0,
|
|
432
|
+
audioInputTokens: msg.audioInputTokens,
|
|
433
|
+
audioOutputTokens: msg.audioOutputTokens,
|
|
434
|
+
cachedTokens: msg.cachedTokens
|
|
435
|
+
});
|
|
436
|
+
break;
|
|
437
|
+
case 'mode-changed':
|
|
438
|
+
this.emit('modeChanged', msg.mode);
|
|
355
439
|
break;
|
|
356
440
|
case 'llm-chunk':
|
|
357
441
|
if (msg.content)
|
|
@@ -364,6 +448,11 @@ export class LLMRTCWebClient extends EventEmitter {
|
|
|
364
448
|
if (msg.data)
|
|
365
449
|
this.emit('tts', base64ToArrayBuffer(msg.data), msg.format ?? 'mp3');
|
|
366
450
|
break;
|
|
451
|
+
case 'tts-chunk':
|
|
452
|
+
// Streaming TTS fallback when no WebRTC audio track exists
|
|
453
|
+
if (msg.data)
|
|
454
|
+
this.emit('ttsChunk', base64ToArrayBuffer(msg.data), msg.format ?? 'pcm', msg.sampleRate);
|
|
455
|
+
break;
|
|
367
456
|
case 'tts-start':
|
|
368
457
|
this.emit('ttsStart');
|
|
369
458
|
break;
|
|
@@ -374,10 +463,14 @@ export class LLMRTCWebClient extends EventEmitter {
|
|
|
374
463
|
this.emit('ttsCancelled');
|
|
375
464
|
break;
|
|
376
465
|
case 'speech-start':
|
|
466
|
+
// Ship the current camera/screen frames now, while the utterance
|
|
467
|
+
// is still in progress - the server snapshots attachments the
|
|
468
|
+
// moment its VAD ends the turn, so sending them on speech-end
|
|
469
|
+
// arrives too late to be included
|
|
470
|
+
this.sendAttachments();
|
|
377
471
|
this.emit('speechStart');
|
|
378
472
|
break;
|
|
379
473
|
case 'speech-end':
|
|
380
|
-
this.sendAttachments();
|
|
381
474
|
this.emit('speechEnd');
|
|
382
475
|
break;
|
|
383
476
|
case 'tool-call-start':
|
|
@@ -427,33 +520,49 @@ export class LLMRTCWebClient extends EventEmitter {
|
|
|
427
520
|
this.scheduleReconnect();
|
|
428
521
|
}
|
|
429
522
|
else {
|
|
430
|
-
this.
|
|
431
|
-
this.emit('error', {
|
|
432
|
-
code: 'CONNECTION_ERROR',
|
|
433
|
-
message: error.message,
|
|
434
|
-
recoverable: false
|
|
435
|
-
});
|
|
523
|
+
this.enterFailedState('CONNECTION_ERROR', error.message);
|
|
436
524
|
}
|
|
437
525
|
}
|
|
526
|
+
/**
|
|
527
|
+
* Terminal failure: release every live resource (most importantly the
|
|
528
|
+
* microphone and camera - a failed client must not keep recording) and
|
|
529
|
+
* report the error.
|
|
530
|
+
*/
|
|
531
|
+
enterFailedState(code, message) {
|
|
532
|
+
this.stopMediaTracks();
|
|
533
|
+
this.cleanup(false);
|
|
534
|
+
this.stateMachine.transition(ConnectionState.FAILED);
|
|
535
|
+
this.emit('error', { code, message, recoverable: false });
|
|
536
|
+
}
|
|
537
|
+
/** Stop microphone and capture tracks and drop the references. */
|
|
538
|
+
stopMediaTracks() {
|
|
539
|
+
this.audioTrack?.stop();
|
|
540
|
+
this.audioStream?.getTracks().forEach((t) => t.stop());
|
|
541
|
+
this.audioTrack = undefined;
|
|
542
|
+
this.audioStream = undefined;
|
|
543
|
+
this.audioSender = undefined;
|
|
544
|
+
this.videoCapture?.stop();
|
|
545
|
+
this.screenCapture?.stop();
|
|
546
|
+
this.videoCapture = undefined;
|
|
547
|
+
this.screenCapture = undefined;
|
|
548
|
+
}
|
|
438
549
|
scheduleReconnect() {
|
|
439
550
|
if (!this.stateMachine.reconnectionEnabled) {
|
|
440
|
-
this.
|
|
551
|
+
this.enterFailedState('CONNECTION_ERROR', 'Connection lost');
|
|
441
552
|
return;
|
|
442
553
|
}
|
|
443
554
|
// Clear any existing reconnect timeout
|
|
444
555
|
if (this.reconnectTimeout) {
|
|
445
556
|
clearTimeout(this.reconnectTimeout);
|
|
446
557
|
}
|
|
558
|
+
// The old connection's heartbeat must not fire during backoff - it
|
|
559
|
+
// would burn retries against a socket we already know is dead
|
|
560
|
+
this.stopHeartbeat();
|
|
447
561
|
this.stateMachine.transition(ConnectionState.RECONNECTING);
|
|
448
562
|
const delay = this.stateMachine.getNextRetryDelay();
|
|
449
563
|
if (delay === null) {
|
|
450
564
|
// Max retries exceeded
|
|
451
|
-
this.
|
|
452
|
-
this.emit('error', {
|
|
453
|
-
code: 'RECONNECTION_FAILED',
|
|
454
|
-
message: 'Maximum reconnection attempts exceeded',
|
|
455
|
-
recoverable: false
|
|
456
|
-
});
|
|
565
|
+
this.enterFailedState('RECONNECTION_FAILED', 'Maximum reconnection attempts exceeded');
|
|
457
566
|
return;
|
|
458
567
|
}
|
|
459
568
|
console.log(`[web-client] Reconnecting in ${delay}ms (attempt ${this.stateMachine.retryCount}/${this.stateMachine.maxRetries})`);
|
|
@@ -461,31 +570,45 @@ export class LLMRTCWebClient extends EventEmitter {
|
|
|
461
570
|
this.reconnectTimeout = setTimeout(() => this.attemptReconnect(), delay);
|
|
462
571
|
}
|
|
463
572
|
async attemptReconnect() {
|
|
573
|
+
if (this.stateMachine.state === ConnectionState.CLOSED ||
|
|
574
|
+
this.stateMachine.state === ConnectionState.FAILED) {
|
|
575
|
+
return;
|
|
576
|
+
}
|
|
464
577
|
// Save old session ID BEFORE cleanup/connect (connect() will set a new sessionId)
|
|
465
578
|
const oldSessionId = this.sessionId;
|
|
466
579
|
// Clean up existing connections but keep session ID
|
|
467
580
|
this.cleanup(false);
|
|
581
|
+
const epoch = this.connectionEpoch;
|
|
468
582
|
this.stateMachine.transition(ConnectionState.CONNECTING);
|
|
469
583
|
try {
|
|
470
|
-
|
|
471
|
-
//
|
|
472
|
-
|
|
473
|
-
//
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
584
|
+
// connect() resumes the old session between ready and the offer, so
|
|
585
|
+
// the recovered history is bound before any turn can run
|
|
586
|
+
await this.connect(oldSessionId);
|
|
587
|
+
// close() may have run while we were connecting; don't resurrect a
|
|
588
|
+
// connection the user has already hung up
|
|
589
|
+
if (this.connectionEpoch !== epoch) {
|
|
590
|
+
console.log('[web-client] Reconnect superseded, tearing down');
|
|
591
|
+
this.peer?.destroy();
|
|
592
|
+
this.peer = null;
|
|
593
|
+
if (this.ws) {
|
|
594
|
+
this.ws.onclose = null;
|
|
595
|
+
this.ws.close();
|
|
596
|
+
this.ws = null;
|
|
597
|
+
}
|
|
598
|
+
this.stopHeartbeat();
|
|
599
|
+
return;
|
|
480
600
|
}
|
|
481
601
|
// Re-add audio track if we had one
|
|
482
|
-
if (this.audioStream && this.audioTrack) {
|
|
602
|
+
if (this.audioStream && this.audioTrack && this.audioTrack.readyState === 'live') {
|
|
483
603
|
console.log('[web-client] Re-adding audio track after reconnect');
|
|
484
604
|
this.audioSender = this.peer?.addTrack(this.audioTrack, this.audioStream);
|
|
485
605
|
}
|
|
486
606
|
this.stateMachine.transition(ConnectionState.CONNECTED);
|
|
487
607
|
}
|
|
488
608
|
catch (error) {
|
|
609
|
+
if (this.connectionEpoch !== epoch) {
|
|
610
|
+
return;
|
|
611
|
+
}
|
|
489
612
|
console.error('[web-client] Reconnect attempt failed:', error);
|
|
490
613
|
this.scheduleReconnect();
|
|
491
614
|
}
|
|
@@ -498,7 +621,8 @@ export class LLMRTCWebClient extends EventEmitter {
|
|
|
498
621
|
this.heartbeatTimeout = setTimeout(() => {
|
|
499
622
|
this.missedHeartbeats++;
|
|
500
623
|
console.warn(`[web-client] Missed heartbeat (${this.missedHeartbeats}/${MAX_MISSED_HEARTBEATS})`);
|
|
501
|
-
if (this.missedHeartbeats >= MAX_MISSED_HEARTBEATS
|
|
624
|
+
if (this.missedHeartbeats >= MAX_MISSED_HEARTBEATS &&
|
|
625
|
+
this.stateMachine.state === ConnectionState.CONNECTED) {
|
|
502
626
|
console.warn('[web-client] Too many missed heartbeats, reconnecting');
|
|
503
627
|
this.scheduleReconnect();
|
|
504
628
|
}
|
|
@@ -525,43 +649,77 @@ export class LLMRTCWebClient extends EventEmitter {
|
|
|
525
649
|
if (!this.peer?.connected) {
|
|
526
650
|
throw new Error('Peer not connected');
|
|
527
651
|
}
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
if (!this.audioTrack) {
|
|
652
|
+
const track = stream.getAudioTracks()[0];
|
|
653
|
+
if (!track) {
|
|
531
654
|
throw new Error('No audio track in stream');
|
|
532
655
|
}
|
|
656
|
+
// Sharing again replaces the previous share; two live mic tracks would
|
|
657
|
+
// confuse the server's single-track VAD pipeline
|
|
658
|
+
if (this.audioSender && this.peer) {
|
|
659
|
+
console.log('[web-client] Replacing existing audio share');
|
|
660
|
+
this.peer.removeTrack(this.audioSender);
|
|
661
|
+
this.audioTrack?.stop();
|
|
662
|
+
}
|
|
663
|
+
this.audioStream = stream;
|
|
664
|
+
this.audioTrack = track;
|
|
533
665
|
console.log('[web-client] Adding audio track to peer connection');
|
|
534
|
-
|
|
666
|
+
const sender = this.peer.addTrack(track, stream);
|
|
667
|
+
this.audioSender = sender;
|
|
535
668
|
// Wait for signaling to stabilize
|
|
536
669
|
await this.waitForStableSignaling();
|
|
537
670
|
console.log('[web-client] Audio track added - VAD handled server-side');
|
|
538
671
|
return {
|
|
539
672
|
stop: async () => {
|
|
540
673
|
console.log('[web-client] Stopping audio sharing');
|
|
541
|
-
if
|
|
542
|
-
|
|
674
|
+
// Only touch client state if this share is still the active one
|
|
675
|
+
if (this.audioSender === sender && this.peer) {
|
|
676
|
+
this.peer.removeTrack(sender);
|
|
543
677
|
this.audioSender = undefined;
|
|
678
|
+
this.audioTrack = undefined;
|
|
679
|
+
this.audioStream = undefined;
|
|
544
680
|
}
|
|
545
|
-
|
|
681
|
+
track.stop();
|
|
546
682
|
stream.getTracks().forEach((t) => t.stop());
|
|
547
|
-
this.audioTrack = undefined;
|
|
548
|
-
this.audioStream = undefined;
|
|
549
683
|
}
|
|
550
684
|
};
|
|
551
685
|
}
|
|
552
|
-
waitForStableSignaling() {
|
|
553
|
-
return new Promise((resolve) => {
|
|
686
|
+
waitForStableSignaling(timeoutMs = 10000) {
|
|
687
|
+
return new Promise((resolve, reject) => {
|
|
688
|
+
const deadline = Date.now() + timeoutMs;
|
|
554
689
|
const checkState = () => {
|
|
555
|
-
if (this.peer
|
|
690
|
+
if (!this.peer || this.peer.destroyed) {
|
|
691
|
+
reject(new Error('Peer closed while waiting for stable signaling'));
|
|
692
|
+
return;
|
|
693
|
+
}
|
|
694
|
+
if (this.peer.signalingState === 'stable') {
|
|
556
695
|
resolve();
|
|
696
|
+
return;
|
|
557
697
|
}
|
|
558
|
-
|
|
559
|
-
|
|
698
|
+
if (Date.now() >= deadline) {
|
|
699
|
+
reject(new Error('Timed out waiting for stable signaling'));
|
|
700
|
+
return;
|
|
560
701
|
}
|
|
702
|
+
setTimeout(checkState, 100);
|
|
561
703
|
};
|
|
562
704
|
setTimeout(checkState, 100);
|
|
563
705
|
});
|
|
564
706
|
}
|
|
707
|
+
/**
|
|
708
|
+
* Send a complete audio utterance over the signaling channel.
|
|
709
|
+
* This is the non-WebRTC fallback path (e.g. when the server reports
|
|
710
|
+
* WEBRTC_UNAVAILABLE): the server transcribes the buffer and replies
|
|
711
|
+
* over the WebSocket, streaming TTS via 'ttsChunk'/'tts' events.
|
|
712
|
+
*/
|
|
713
|
+
sendAudio(audio, attachments) {
|
|
714
|
+
if (this.ws?.readyState !== WebSocket.OPEN) {
|
|
715
|
+
throw new Error('Signaling channel not open');
|
|
716
|
+
}
|
|
717
|
+
this.ws.send(JSON.stringify({
|
|
718
|
+
type: 'audio',
|
|
719
|
+
data: arrayBufferToBase64(audio),
|
|
720
|
+
attachments: attachments ?? this.gatherAttachments()
|
|
721
|
+
}));
|
|
722
|
+
}
|
|
565
723
|
/**
|
|
566
724
|
* Send vision attachments to include with next speech segment.
|
|
567
725
|
*/
|
|
@@ -594,20 +752,22 @@ export class LLMRTCWebClient extends EventEmitter {
|
|
|
594
752
|
return ctrl;
|
|
595
753
|
}
|
|
596
754
|
/**
|
|
597
|
-
* Close the connection.
|
|
755
|
+
* Close the connection and release all media (microphone included).
|
|
756
|
+
* The client can be started again with start().
|
|
598
757
|
*/
|
|
599
758
|
close() {
|
|
600
759
|
this.stateMachine.transition(ConnectionState.CLOSED);
|
|
760
|
+
this.stopMediaTracks();
|
|
601
761
|
this.cleanup(true);
|
|
602
762
|
}
|
|
603
763
|
cleanup(fullCleanup) {
|
|
764
|
+
// Invalidate any in-flight reconnect attempt
|
|
765
|
+
this.connectionEpoch++;
|
|
604
766
|
this.stopHeartbeat();
|
|
605
767
|
if (this.reconnectTimeout) {
|
|
606
768
|
clearTimeout(this.reconnectTimeout);
|
|
607
769
|
this.reconnectTimeout = undefined;
|
|
608
770
|
}
|
|
609
|
-
this.videoCapture?.stop();
|
|
610
|
-
this.screenCapture?.stop();
|
|
611
771
|
this.peer?.destroy();
|
|
612
772
|
this.peer = null;
|
|
613
773
|
if (this.ws) {
|
|
@@ -616,16 +776,30 @@ export class LLMRTCWebClient extends EventEmitter {
|
|
|
616
776
|
this.ws = null;
|
|
617
777
|
}
|
|
618
778
|
if (fullCleanup) {
|
|
779
|
+
// Frame captures are local (frames travel over the data channel), so
|
|
780
|
+
// they survive reconnects; they only stop on close()/failure
|
|
781
|
+
this.videoCapture?.stop();
|
|
782
|
+
this.screenCapture?.stop();
|
|
783
|
+
this.videoCapture = undefined;
|
|
784
|
+
this.screenCapture = undefined;
|
|
619
785
|
this.sessionId = null;
|
|
620
786
|
this.serverIceServers = null;
|
|
621
787
|
this.audioTrack = undefined;
|
|
622
788
|
this.audioStream = undefined;
|
|
623
789
|
this.audioSender = undefined;
|
|
624
|
-
this.stateMachine.reset();
|
|
625
790
|
}
|
|
626
791
|
}
|
|
627
792
|
}
|
|
628
793
|
// Helper functions
|
|
794
|
+
function arrayBufferToBase64(buffer) {
|
|
795
|
+
const bytes = new Uint8Array(buffer);
|
|
796
|
+
let binary = '';
|
|
797
|
+
const chunkSize = 0x8000;
|
|
798
|
+
for (let i = 0; i < bytes.length; i += chunkSize) {
|
|
799
|
+
binary += String.fromCharCode(...bytes.subarray(i, i + chunkSize));
|
|
800
|
+
}
|
|
801
|
+
return btoa(binary);
|
|
802
|
+
}
|
|
629
803
|
function base64ToArrayBuffer(base64) {
|
|
630
804
|
const binary = atob(base64);
|
|
631
805
|
const bytes = new Uint8Array(binary.length);
|
|
@@ -636,15 +810,22 @@ function base64ToArrayBuffer(base64) {
|
|
|
636
810
|
}
|
|
637
811
|
export async function recordOnce(durationMs = 4000) {
|
|
638
812
|
const stream = await navigator.mediaDevices.getUserMedia({ audio: true });
|
|
639
|
-
|
|
813
|
+
// Pick a container the browser actually supports (Safari records mp4/aac,
|
|
814
|
+
// Chromium and Firefox record webm)
|
|
815
|
+
const mimeType = ['audio/webm', 'audio/mp4', 'audio/ogg'].find((t) => typeof MediaRecorder.isTypeSupported === 'function' ? MediaRecorder.isTypeSupported(t) : true);
|
|
816
|
+
const recorder = new MediaRecorder(stream, mimeType ? { mimeType } : undefined);
|
|
640
817
|
const chunks = [];
|
|
641
|
-
return new Promise((resolve) => {
|
|
818
|
+
return new Promise((resolve, reject) => {
|
|
642
819
|
recorder.ondataavailable = (e) => {
|
|
643
820
|
if (e.data.size > 0)
|
|
644
821
|
chunks.push(e.data);
|
|
645
822
|
};
|
|
823
|
+
recorder.onerror = (e) => {
|
|
824
|
+
stream.getTracks().forEach((t) => t.stop());
|
|
825
|
+
reject(e.error ?? new Error('Recording failed'));
|
|
826
|
+
};
|
|
646
827
|
recorder.onstop = async () => {
|
|
647
|
-
const blob = new Blob(chunks, { type: 'audio/webm' });
|
|
828
|
+
const blob = new Blob(chunks, { type: recorder.mimeType || 'audio/webm' });
|
|
648
829
|
const buf = await blob.arrayBuffer();
|
|
649
830
|
stream.getTracks().forEach((t) => t.stop());
|
|
650
831
|
resolve(buf);
|
|
@@ -660,49 +841,98 @@ export async function captureScreenFrame() {
|
|
|
660
841
|
track.stop();
|
|
661
842
|
return image;
|
|
662
843
|
}
|
|
663
|
-
|
|
664
|
-
const
|
|
665
|
-
|
|
844
|
+
function createFrameGrabber(stream) {
|
|
845
|
+
const track = stream.getVideoTracks()[0];
|
|
846
|
+
if (!track) {
|
|
847
|
+
throw new Error('No video track in stream');
|
|
848
|
+
}
|
|
666
849
|
const canvas = document.createElement('canvas');
|
|
667
|
-
canvas.width = bitmap.width;
|
|
668
|
-
canvas.height = bitmap.height;
|
|
669
850
|
const ctx = canvas.getContext('2d');
|
|
670
|
-
if (!ctx)
|
|
851
|
+
if (!ctx) {
|
|
671
852
|
throw new Error('canvas context missing');
|
|
672
|
-
|
|
673
|
-
const
|
|
674
|
-
|
|
853
|
+
}
|
|
854
|
+
const ImageCaptureCtor = window.ImageCapture;
|
|
855
|
+
if (ImageCaptureCtor) {
|
|
856
|
+
const capture = new ImageCaptureCtor(track);
|
|
857
|
+
return {
|
|
858
|
+
grab: async () => {
|
|
859
|
+
const bitmap = await capture.grabFrame();
|
|
860
|
+
canvas.width = bitmap.width;
|
|
861
|
+
canvas.height = bitmap.height;
|
|
862
|
+
ctx.drawImage(bitmap, 0, 0);
|
|
863
|
+
return canvas.toDataURL('image/jpeg', 0.6);
|
|
864
|
+
},
|
|
865
|
+
dispose: () => {
|
|
866
|
+
// Nothing to release
|
|
867
|
+
}
|
|
868
|
+
};
|
|
869
|
+
}
|
|
870
|
+
// Fallback: hidden video element
|
|
871
|
+
const video = document.createElement('video');
|
|
872
|
+
video.muted = true;
|
|
873
|
+
video.playsInline = true;
|
|
874
|
+
video.srcObject = stream;
|
|
875
|
+
const playing = video.play().catch(() => {
|
|
876
|
+
// Autoplay of a muted, detached video element is permitted everywhere;
|
|
877
|
+
// failures surface on grab() as zero dimensions
|
|
878
|
+
});
|
|
879
|
+
return {
|
|
880
|
+
grab: async () => {
|
|
881
|
+
await playing;
|
|
882
|
+
if (!video.videoWidth || !video.videoHeight) {
|
|
883
|
+
throw new Error('Video frame not ready');
|
|
884
|
+
}
|
|
885
|
+
canvas.width = video.videoWidth;
|
|
886
|
+
canvas.height = video.videoHeight;
|
|
887
|
+
ctx.drawImage(video, 0, 0);
|
|
888
|
+
return canvas.toDataURL('image/jpeg', 0.6);
|
|
889
|
+
},
|
|
890
|
+
dispose: () => {
|
|
891
|
+
video.pause();
|
|
892
|
+
video.srcObject = null;
|
|
893
|
+
}
|
|
894
|
+
};
|
|
895
|
+
}
|
|
896
|
+
async function grabFrame(track) {
|
|
897
|
+
const grabber = createFrameGrabber(new MediaStream([track]));
|
|
898
|
+
try {
|
|
899
|
+
return await grabber.grab();
|
|
900
|
+
}
|
|
901
|
+
finally {
|
|
902
|
+
grabber.dispose();
|
|
903
|
+
}
|
|
675
904
|
}
|
|
676
905
|
function startFrameCapture(stream, intervalMs) {
|
|
677
|
-
const track = stream.getVideoTracks()[0];
|
|
678
906
|
let stopped = false;
|
|
679
|
-
const canvas = document.createElement('canvas');
|
|
680
|
-
const ctx = canvas.getContext('2d');
|
|
681
907
|
let lastFrame = null;
|
|
908
|
+
let consecutiveFailures = 0;
|
|
909
|
+
const grabber = createFrameGrabber(stream);
|
|
682
910
|
const tick = async () => {
|
|
683
911
|
if (stopped)
|
|
684
912
|
return;
|
|
685
913
|
try {
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
canvas.width = bitmap.width;
|
|
689
|
-
canvas.height = bitmap.height;
|
|
690
|
-
ctx?.drawImage(bitmap, 0, 0);
|
|
691
|
-
lastFrame = canvas.toDataURL('image/jpeg', 0.6);
|
|
914
|
+
lastFrame = await grabber.grab();
|
|
915
|
+
consecutiveFailures = 0;
|
|
692
916
|
}
|
|
693
917
|
catch (err) {
|
|
694
|
-
|
|
918
|
+
consecutiveFailures++;
|
|
919
|
+
if (consecutiveFailures === 5) {
|
|
920
|
+
console.warn('[web-client] Frame capture failing repeatedly; no frames will be attached:', err);
|
|
921
|
+
}
|
|
922
|
+
}
|
|
923
|
+
if (!stopped) {
|
|
924
|
+
timer = window.setTimeout(tick, intervalMs);
|
|
695
925
|
}
|
|
696
|
-
timer = window.setTimeout(tick, intervalMs);
|
|
697
926
|
};
|
|
698
927
|
let timer = window.setTimeout(tick, intervalMs);
|
|
699
928
|
return {
|
|
700
929
|
stop: () => {
|
|
701
930
|
stopped = true;
|
|
702
931
|
window.clearTimeout(timer);
|
|
932
|
+
grabber.dispose();
|
|
703
933
|
stream.getTracks().forEach((t) => t.stop());
|
|
704
934
|
},
|
|
705
|
-
getLastFrame: () => lastFrame
|
|
935
|
+
getLastFrame: () => (stopped ? null : lastFrame)
|
|
706
936
|
};
|
|
707
937
|
}
|
|
708
938
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@llmrtc/llmrtc-web-client",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.0",
|
|
4
4
|
"description": "Browser client SDK for @llmrtc/LLMRTC",
|
|
5
5
|
"homepage": "https://www.llmrtc.org",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -9,9 +9,11 @@
|
|
|
9
9
|
"types": "dist/index.d.ts",
|
|
10
10
|
"exports": {
|
|
11
11
|
".": {
|
|
12
|
+
"types": "./dist/index.d.ts",
|
|
12
13
|
"import": "./dist/index.js",
|
|
13
|
-
"
|
|
14
|
-
}
|
|
14
|
+
"default": "./dist/index.js"
|
|
15
|
+
},
|
|
16
|
+
"./package.json": "./package.json"
|
|
15
17
|
},
|
|
16
18
|
"repository": {
|
|
17
19
|
"type": "git",
|
|
@@ -28,7 +30,9 @@
|
|
|
28
30
|
"files": [
|
|
29
31
|
"dist",
|
|
30
32
|
"README.md",
|
|
31
|
-
"LICENSE"
|
|
33
|
+
"LICENSE",
|
|
34
|
+
"NOTICE",
|
|
35
|
+
"CHANGELOG.md"
|
|
32
36
|
],
|
|
33
37
|
"scripts": {
|
|
34
38
|
"build": "tsc -b",
|
|
@@ -36,8 +40,12 @@
|
|
|
36
40
|
"prepublishOnly": "npm run build"
|
|
37
41
|
},
|
|
38
42
|
"dependencies": {
|
|
39
|
-
"@llmrtc/llmrtc-core": "^1.
|
|
43
|
+
"@llmrtc/llmrtc-core": "^1.3.0",
|
|
40
44
|
"eventemitter3": "^5.0.1",
|
|
41
45
|
"zod": "^3.23.8"
|
|
46
|
+
},
|
|
47
|
+
"sideEffects": false,
|
|
48
|
+
"engines": {
|
|
49
|
+
"node": ">=20"
|
|
42
50
|
}
|
|
43
51
|
}
|