@voicethere/client 0.16.1 → 0.17.1

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.
@@ -1,13 +1,2 @@
1
- export type SpokenChatCaptionOptions = {
2
- enabled: boolean;
3
- onUpsert: (utteranceId: string, visibleText: string) => void;
4
- setTimeout?: typeof setTimeout;
5
- clearTimeout?: typeof clearTimeout;
6
- };
7
- export type SpokenChatCaption = {
8
- handleControlMessage: (payload: Record<string, unknown>) => void;
9
- setEnabled: (enabled: boolean) => void;
10
- dispose: () => void;
11
- };
12
- export declare function createSpokenChatCaption(opts: SpokenChatCaptionOptions): SpokenChatCaption;
1
+ export { createSpokenChatCaption, type SpokenChatCaption, type SpokenChatCaptionOptions, type SpokenTurnUpsertInfo, } from "../spoken-text-reveal.js";
13
2
  //# sourceMappingURL=spoken-chat-caption.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"spoken-chat-caption.d.ts","sourceRoot":"","sources":["../../src/embed/spoken-chat-caption.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,wBAAwB,GAAG;IACrC,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7D,UAAU,CAAC,EAAE,OAAO,UAAU,CAAC;IAC/B,YAAY,CAAC,EAAE,OAAO,YAAY,CAAC;CACpC,CAAC;AAqBF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,oBAAoB,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IACjE,UAAU,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,CAAC;AAgEF,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,wBAAwB,GAC7B,iBAAiB,CAoTnB"}
1
+ {"version":3,"file":"spoken-chat-caption.d.ts","sourceRoot":"","sources":["../../src/embed/spoken-chat-caption.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,KAAK,iBAAiB,EACtB,KAAK,wBAAwB,EAC7B,KAAK,oBAAoB,GAC1B,MAAM,0BAA0B,CAAC"}
@@ -1,335 +1,2 @@
1
- const START_FALLBACK_MS = 400;
2
- const DEFAULT_MS_PER_WORD = 330;
3
- const COMPLETED_IDS_MAX = 32;
4
- function splitWords(text) {
5
- return text.split(/\s+/).filter(Boolean);
6
- }
7
- function incomingAgentTextFromControlMessage(payload, options) {
8
- const type = typeof payload.type === "string" ? payload.type : "";
9
- if (type === "session_error" ||
10
- type === "agent_error" ||
11
- type === "session_close" ||
12
- type === "session_reconnect_token") {
13
- return null;
14
- }
15
- if (type === "speech_event") {
16
- if (options.ignoreSpeechEventAgentText) {
17
- return null;
18
- }
19
- const event = typeof payload.event === "string" ? payload.event : "";
20
- const text = typeof payload.text === "string" ? payload.text.trim() : "";
21
- if (!text)
22
- return null;
23
- if (event.includes("final") || event.includes("agent")) {
24
- return text;
25
- }
26
- return null;
27
- }
28
- if (type === "chat_reply") {
29
- const text = typeof payload.text === "string" ? payload.text.trim() : "";
30
- return text || null;
31
- }
32
- if (type === "chat_broadcast") {
33
- const text = typeof payload.text === "string" ? payload.text.trim() : "";
34
- return text || null;
35
- }
36
- if (type === "chat") {
37
- const role = typeof payload.role === "string" ? payload.role : "";
38
- const text = typeof payload.text === "string" ? payload.text.trim() : "";
39
- if (!text)
40
- return null;
41
- if (role === "agent" || role === "assistant") {
42
- return text;
43
- }
44
- return null;
45
- }
46
- const text = typeof payload.text === "string" ? payload.text.trim() : "";
47
- if (text &&
48
- (type === "agent_message" || type === "message" || type === "assistant")) {
49
- return text;
50
- }
51
- return null;
52
- }
53
- export function createSpokenChatCaption(opts) {
54
- let enabled = opts.enabled;
55
- let state = null;
56
- let utteranceCounter = 0;
57
- const completed = new Map();
58
- const setTimeoutFn = opts.setTimeout ?? setTimeout;
59
- const clearTimeoutFn = opts.clearTimeout ?? clearTimeout;
60
- const newUtteranceId = () => {
61
- utteranceCounter += 1;
62
- return `utterance-${utteranceCounter}`;
63
- };
64
- const clearUtteranceTimers = (utterance) => {
65
- if (utterance.startTimeoutId !== undefined) {
66
- clearTimeoutFn(utterance.startTimeoutId);
67
- utterance.startTimeoutId = undefined;
68
- }
69
- if (utterance.tickTimeoutId !== undefined) {
70
- clearTimeoutFn(utterance.tickTimeoutId);
71
- utterance.tickTimeoutId = undefined;
72
- }
73
- };
74
- const visibleTextFor = (utterance) => {
75
- if (utterance.visibleWordCount <= 0)
76
- return "";
77
- return utterance.words.slice(0, utterance.visibleWordCount).join(" ");
78
- };
79
- const upsertCurrent = () => {
80
- if (!state)
81
- return;
82
- opts.onUpsert(state.utteranceId, visibleTextFor(state));
83
- };
84
- const markCompleted = (utterance) => {
85
- completed.delete(utterance.utteranceId);
86
- completed.set(utterance.utteranceId, utterance.words.join(" "));
87
- while (completed.size > COMPLETED_IDS_MAX) {
88
- const oldest = completed.keys().next().value;
89
- if (oldest === undefined)
90
- break;
91
- completed.delete(oldest);
92
- }
93
- };
94
- /** A streamed utterance is done when its text is final and fully shown. */
95
- const finishStreamedIfComplete = (utterance) => {
96
- if (!utterance.streamed ||
97
- !utterance.final ||
98
- utterance.frozen ||
99
- utterance.visibleWordCount < utterance.words.length) {
100
- return;
101
- }
102
- clearUtteranceTimers(utterance);
103
- markCompleted(utterance);
104
- if (state === utterance) {
105
- state = null;
106
- }
107
- };
108
- const scheduleNextWord = (utterance) => {
109
- if (utterance.frozen ||
110
- utterance.paused ||
111
- utterance.tickTimeoutId !== undefined ||
112
- utterance.visibleWordCount >= utterance.words.length) {
113
- return;
114
- }
115
- utterance.tickTimeoutId = setTimeoutFn(() => {
116
- utterance.tickTimeoutId = undefined;
117
- if (!state || state !== utterance || utterance.frozen)
118
- return;
119
- if (utterance.paused)
120
- return;
121
- utterance.visibleWordCount += 1;
122
- upsertCurrent();
123
- scheduleNextWord(utterance);
124
- finishStreamedIfComplete(utterance);
125
- }, utterance.intervalMs);
126
- };
127
- const startReveal = (utterance) => {
128
- if (utterance.revealStarted || utterance.frozen)
129
- return;
130
- utterance.revealStarted = true;
131
- utterance.waitingForStart = false;
132
- if (utterance.startTimeoutId !== undefined) {
133
- clearTimeoutFn(utterance.startTimeoutId);
134
- utterance.startTimeoutId = undefined;
135
- }
136
- if (utterance.words.length === 0) {
137
- upsertCurrent();
138
- return;
139
- }
140
- if (utterance.visibleWordCount === 0) {
141
- utterance.visibleWordCount = 1;
142
- }
143
- upsertCurrent();
144
- if (utterance.visibleWordCount < utterance.words.length) {
145
- scheduleNextWord(utterance);
146
- }
147
- finishStreamedIfComplete(utterance);
148
- };
149
- const snapToFull = (utterance) => {
150
- if (utterance.frozen)
151
- return;
152
- clearUtteranceTimers(utterance);
153
- utterance.revealStarted = true;
154
- utterance.waitingForStart = false;
155
- utterance.visibleWordCount = utterance.words.length;
156
- opts.onUpsert(utterance.utteranceId, utterance.words.join(" "));
157
- if (state === utterance) {
158
- state = null;
159
- }
160
- };
161
- const resetUtteranceState = () => {
162
- if (state) {
163
- clearUtteranceTimers(state);
164
- state = null;
165
- }
166
- };
167
- const updateStreamed = (utterance, text, partial) => {
168
- if (utterance.frozen)
169
- return;
170
- const words = splitWords(text);
171
- const isPrefix = utterance.words.length <= words.length &&
172
- utterance.words.every((word, i) => word === words[i]);
173
- utterance.words = words;
174
- if (!partial) {
175
- utterance.final = true;
176
- // Once final, the line is never paused: assistant_done can arrive after
177
- // the last chunk's agent_speaking_end.
178
- utterance.paused = false;
179
- }
180
- if (!isPrefix) {
181
- utterance.visibleWordCount = Math.min(utterance.visibleWordCount, words.length);
182
- if (utterance.revealStarted)
183
- upsertCurrent();
184
- }
185
- if (utterance.revealStarted) {
186
- scheduleNextWord(utterance);
187
- }
188
- finishStreamedIfComplete(utterance);
189
- };
190
- const handleChatReply = (payload) => {
191
- const text = typeof payload.text === "string" ? payload.text.trim() : "";
192
- if (!text)
193
- return;
194
- const utteranceId = typeof payload.utteranceId === "string" && payload.utteranceId.trim()
195
- ? payload.utteranceId.trim()
196
- : newUtteranceId();
197
- const durationMs = typeof payload.durationMs === "number" && payload.durationMs > 0
198
- ? payload.durationMs
199
- : undefined;
200
- const streamExplicit = payload.stream === true;
201
- const partial = payload.partial === true;
202
- if (!enabled) {
203
- resetUtteranceState();
204
- opts.onUpsert(utteranceId, text);
205
- return;
206
- }
207
- if (state && state.utteranceId === utteranceId && state.streamed) {
208
- updateStreamed(state, text, partial);
209
- return;
210
- }
211
- if (completed.get(utteranceId) === splitWords(text).join(" ")) {
212
- return;
213
- }
214
- if (state &&
215
- state.utteranceId !== utteranceId &&
216
- state.revealStarted &&
217
- !state.frozen &&
218
- state.visibleWordCount < state.words.length) {
219
- clearUtteranceTimers(state);
220
- state = null;
221
- }
222
- else if (state && state.utteranceId !== utteranceId) {
223
- resetUtteranceState();
224
- }
225
- else if (state && state.utteranceId === utteranceId) {
226
- clearUtteranceTimers(state);
227
- }
228
- const words = splitWords(text);
229
- const wordCount = Math.max(words.length, 1);
230
- const intervalMs = durationMs !== undefined ? durationMs / wordCount : DEFAULT_MS_PER_WORD;
231
- state = {
232
- utteranceId,
233
- words,
234
- visibleWordCount: 0,
235
- intervalMs,
236
- frozen: false,
237
- revealStarted: false,
238
- waitingForStart: true,
239
- streamExplicit,
240
- streamed: partial,
241
- final: !partial,
242
- paused: false,
243
- };
244
- state.startTimeoutId = setTimeoutFn(() => {
245
- if (!state?.waitingForStart || state.revealStarted)
246
- return;
247
- if (state.streamExplicit || state.streamed) {
248
- startReveal(state);
249
- }
250
- else {
251
- snapToFull(state);
252
- }
253
- }, START_FALLBACK_MS);
254
- };
255
- const handleSpeechEvent = (payload) => {
256
- const event = typeof payload.event === "string" ? payload.event : "";
257
- if (event === "agent_speaking_start") {
258
- if (state?.streamed && !state.frozen) {
259
- state.paused = false;
260
- if (!state.revealStarted) {
261
- startReveal(state);
262
- }
263
- else {
264
- scheduleNextWord(state);
265
- }
266
- return;
267
- }
268
- if (state && (state.waitingForStart || !state.revealStarted)) {
269
- startReveal(state);
270
- }
271
- return;
272
- }
273
- if (event === "agent_speaking_end") {
274
- if (state?.streamed) {
275
- if (state.final)
276
- return;
277
- state.paused = true;
278
- if (state.tickTimeoutId !== undefined) {
279
- clearTimeoutFn(state.tickTimeoutId);
280
- state.tickTimeoutId = undefined;
281
- }
282
- return;
283
- }
284
- if (state) {
285
- clearUtteranceTimers(state);
286
- state.visibleWordCount = state.words.length;
287
- state.waitingForStart = false;
288
- upsertCurrent();
289
- state = null;
290
- }
291
- return;
292
- }
293
- if (event === "barge_in") {
294
- if (state) {
295
- clearUtteranceTimers(state);
296
- state.frozen = true;
297
- state.waitingForStart = false;
298
- }
299
- }
300
- };
301
- const handleControlMessage = (payload) => {
302
- const type = typeof payload.type === "string" ? payload.type : "";
303
- if (type === "chat_reply") {
304
- handleChatReply(payload);
305
- return;
306
- }
307
- if (type === "speech_event") {
308
- if (enabled) {
309
- handleSpeechEvent(payload);
310
- return;
311
- }
312
- }
313
- const incoming = incomingAgentTextFromControlMessage(payload, {
314
- ignoreSpeechEventAgentText: enabled,
315
- });
316
- if (incoming) {
317
- resetUtteranceState();
318
- opts.onUpsert(newUtteranceId(), incoming);
319
- }
320
- };
321
- const dispose = () => {
322
- resetUtteranceState();
323
- };
324
- return {
325
- handleControlMessage,
326
- setEnabled: (next) => {
327
- enabled = next;
328
- if (!enabled) {
329
- dispose();
330
- }
331
- },
332
- dispose,
333
- };
334
- }
1
+ export { createSpokenChatCaption, } from "../spoken-text-reveal.js";
335
2
  //# sourceMappingURL=spoken-chat-caption.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"spoken-chat-caption.js","sourceRoot":"","sources":["../../src/embed/spoken-chat-caption.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"spoken-chat-caption.js","sourceRoot":"","sources":["../../src/embed/spoken-chat-caption.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,GAIxB,MAAM,0BAA0B,CAAC"}
package/dist/index.d.ts CHANGED
@@ -6,6 +6,7 @@ import type { ConnectedClient, VoiceThereClientOptions } from "./types.js";
6
6
  export declare function connectVoiceSession(options: VoiceThereClientOptions): Promise<ConnectedClient>;
7
7
  export { appendJoinToken, resolveConnection } from "./resolve-connection.js";
8
8
  export { ConnectionError, createConnectionError, formatConnectionErrorSource, getRootConnectionErrorHandler, reportConnectionError, setRootConnectionErrorHandler, type ConnectionErrorSource, type RootConnectionErrorHandler, } from "./connection-errors.js";
9
+ export { createAgentTextReveal, createSpokenChatCaption, type AgentTextReveal, type AgentTextUpdate, type SpokenChatCaption, type SpokenChatCaptionOptions, type SpokenTurnUpsertInfo, type SpokenTextRevealMode, } from "./spoken-text-reveal.js";
9
10
  export { parseAgentInterruptedEvent, parseAgentStateEvent, } from "./agent-control-events.js";
10
11
  export type { AgentInterruptedEvent, AgentStateEvent, AgentStateName, CloudSessionCredentials, VoiceThereClientOptions, ConnectedClient, } from "./types.js";
11
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAE3E;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,eAAe,CAAC,CAmB1B;AAED,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC7E,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,2BAA2B,EAC3B,6BAA6B,EAC7B,qBAAqB,EACrB,6BAA6B,EAC7B,KAAK,qBAAqB,EAC1B,KAAK,0BAA0B,GAChC,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,0BAA0B,EAC1B,oBAAoB,GACrB,MAAM,2BAA2B,CAAC;AACnC,YAAY,EACV,qBAAqB,EACrB,eAAe,EACf,cAAc,EACd,uBAAuB,EACvB,uBAAuB,EACvB,eAAe,GAChB,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAE3E;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,eAAe,CAAC,CAmB1B;AAED,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC7E,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,2BAA2B,EAC3B,6BAA6B,EAC7B,qBAAqB,EACrB,6BAA6B,EAC7B,KAAK,qBAAqB,EAC1B,KAAK,0BAA0B,GAChC,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,qBAAqB,EACrB,uBAAuB,EACvB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,wBAAwB,EAC7B,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,GAC1B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,0BAA0B,EAC1B,oBAAoB,GACrB,MAAM,2BAA2B,CAAC;AACnC,YAAY,EACV,qBAAqB,EACrB,eAAe,EACf,cAAc,EACd,uBAAuB,EACvB,uBAAuB,EACvB,eAAe,GAChB,MAAM,YAAY,CAAC"}
package/dist/index.js CHANGED
@@ -24,5 +24,6 @@ export async function connectVoiceSession(options) {
24
24
  }
25
25
  export { appendJoinToken, resolveConnection } from "./resolve-connection.js";
26
26
  export { ConnectionError, createConnectionError, formatConnectionErrorSource, getRootConnectionErrorHandler, reportConnectionError, setRootConnectionErrorHandler, } from "./connection-errors.js";
27
+ export { createAgentTextReveal, createSpokenChatCaption, } from "./spoken-text-reveal.js";
27
28
  export { parseAgentInterruptedEvent, parseAgentStateEvent, } from "./agent-control-events.js";
28
29
  //# 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":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAE9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAG5D;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,OAAgC;IAEhC,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;IACpE,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC;QACjC,GAAG,EAAE,YAAY;QACjB,IAAI,EAAE,MAAM;QACZ,MAAM;KACP,CAAC,CAAC;IAEH,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;IAEvB,OAAO;QACL,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,MAAM,EAAE,MAAM,CAAC,IAAI;QACnB,YAAY;QACZ,UAAU,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE;QACrC,EAAE,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE;YACtB,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC7B,CAAC;KACF,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC7E,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,2BAA2B,EAC3B,6BAA6B,EAC7B,qBAAqB,EACrB,6BAA6B,GAG9B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,0BAA0B,EAC1B,oBAAoB,GACrB,MAAM,2BAA2B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAE9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAG5D;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,OAAgC;IAEhC,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;IACpE,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC;QACjC,GAAG,EAAE,YAAY;QACjB,IAAI,EAAE,MAAM;QACZ,MAAM;KACP,CAAC,CAAC;IAEH,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;IAEvB,OAAO;QACL,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,MAAM,EAAE,MAAM,CAAC,IAAI;QACnB,YAAY;QACZ,UAAU,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE;QACrC,EAAE,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE;YACtB,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC7B,CAAC;KACF,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC7E,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,2BAA2B,EAC3B,6BAA6B,EAC7B,qBAAqB,EACrB,6BAA6B,GAG9B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,qBAAqB,EACrB,uBAAuB,GAOxB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,0BAA0B,EAC1B,oBAAoB,GACrB,MAAM,2BAA2B,CAAC"}
@@ -6,4 +6,5 @@ export type { BrowserSession, BrowserSessionMode, ConnectBrowserSessionOptions,
6
6
  export { collectWebRtcDiagnostics, formatIceTriageLine, formatWebRtcDiagnosticsLines, summarizeRtcStatsReport, } from "../browser/browser-session.js";
7
7
  export type { WebRtcRuntime } from "../browser/webrtc-runtime.js";
8
8
  export { CLIENT_CAPABILITIES, type ClientCapabilities, } from "../browser/client-capabilities.js";
9
+ export { createAgentTextReveal, createSpokenChatCaption, type AgentTextReveal, type AgentTextUpdate, type SpokenChatCaption, type SpokenChatCaptionOptions, type SpokenTurnUpsertInfo, type SpokenTextRevealMode, } from "../spoken-text-reveal.js";
9
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/node/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAE3D,OAAO,EACL,qBAAqB,EACrB,0BAA0B,EAC1B,yBAAyB,EACzB,kBAAkB,EAClB,YAAY,EACZ,4BAA4B,EAC5B,0BAA0B,EAC1B,eAAe,EACf,mCAAmC,EACnC,yBAAyB,EACzB,4BAA4B,EAC5B,iCAAiC,EACjC,2BAA2B,EAC3B,sBAAsB,EACtB,yBAAyB,EACzB,2BAA2B,EAC3B,wBAAwB,GACzB,MAAM,+BAA+B,CAAC;AAEvC,YAAY,EACV,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,+BAA+B,CAAC;AAEvC,YAAY,EACV,cAAc,EACd,kBAAkB,EAClB,4BAA4B,EAC5B,mBAAmB,EACnB,0BAA0B,EAC1B,kBAAkB,EAClB,qBAAqB,EACrB,mBAAmB,EACnB,kBAAkB,EAClB,sBAAsB,EACtB,sBAAsB,EACtB,iBAAiB,EACjB,6BAA6B,EAC7B,kBAAkB,GACnB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EACL,wBAAwB,EACxB,mBAAmB,EACnB,4BAA4B,EAC5B,uBAAuB,GACxB,MAAM,+BAA+B,CAAC;AAEvC,YAAY,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAElE,OAAO,EACL,mBAAmB,EACnB,KAAK,kBAAkB,GACxB,MAAM,mCAAmC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/node/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAE3D,OAAO,EACL,qBAAqB,EACrB,0BAA0B,EAC1B,yBAAyB,EACzB,kBAAkB,EAClB,YAAY,EACZ,4BAA4B,EAC5B,0BAA0B,EAC1B,eAAe,EACf,mCAAmC,EACnC,yBAAyB,EACzB,4BAA4B,EAC5B,iCAAiC,EACjC,2BAA2B,EAC3B,sBAAsB,EACtB,yBAAyB,EACzB,2BAA2B,EAC3B,wBAAwB,GACzB,MAAM,+BAA+B,CAAC;AAEvC,YAAY,EACV,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,+BAA+B,CAAC;AAEvC,YAAY,EACV,cAAc,EACd,kBAAkB,EAClB,4BAA4B,EAC5B,mBAAmB,EACnB,0BAA0B,EAC1B,kBAAkB,EAClB,qBAAqB,EACrB,mBAAmB,EACnB,kBAAkB,EAClB,sBAAsB,EACtB,sBAAsB,EACtB,iBAAiB,EACjB,6BAA6B,EAC7B,kBAAkB,GACnB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EACL,wBAAwB,EACxB,mBAAmB,EACnB,4BAA4B,EAC5B,uBAAuB,GACxB,MAAM,+BAA+B,CAAC;AAEvC,YAAY,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAElE,OAAO,EACL,mBAAmB,EACnB,KAAK,kBAAkB,GACxB,MAAM,mCAAmC,CAAC;AAE3C,OAAO,EACL,qBAAqB,EACrB,uBAAuB,EACvB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,wBAAwB,EAC7B,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,GAC1B,MAAM,0BAA0B,CAAC"}
@@ -3,4 +3,5 @@ export { NodeWebSocketAdapter } from "./node-websocket.js";
3
3
  export { connectBrowserSession, connectBrowserVoiceSession, connectBrowserChatSession, connectDataSession, startSession, CustomerContextTooLargeError, MAX_CUSTOMER_CONTEXT_BYTES, fetchSessionApi, DEFAULT_SESSION_API_RETRY_DELAYS_MS, isRetryableSessionApiBody, isRetryableSessionApiFailure, isRetryableSessionApiNetworkError, isRetryableSessionApiStatus, BrowserSessionModeType, ProvisionedRunnerModeType, VOICE_CONTROL_CHANNEL_LABEL, VOICE_SYNC_CHANNEL_LABEL, } from "../browser/browser-session.js";
4
4
  export { collectWebRtcDiagnostics, formatIceTriageLine, formatWebRtcDiagnosticsLines, summarizeRtcStatsReport, } from "../browser/browser-session.js";
5
5
  export { CLIENT_CAPABILITIES, } from "../browser/client-capabilities.js";
6
+ export { createAgentTextReveal, createSpokenChatCaption, } from "../spoken-text-reveal.js";
6
7
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/node/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAE3D,OAAO,EACL,qBAAqB,EACrB,0BAA0B,EAC1B,yBAAyB,EACzB,kBAAkB,EAClB,YAAY,EACZ,4BAA4B,EAC5B,0BAA0B,EAC1B,eAAe,EACf,mCAAmC,EACnC,yBAAyB,EACzB,4BAA4B,EAC5B,iCAAiC,EACjC,2BAA2B,EAC3B,sBAAsB,EACtB,yBAAyB,EACzB,2BAA2B,EAC3B,wBAAwB,GACzB,MAAM,+BAA+B,CAAC;AAwBvC,OAAO,EACL,wBAAwB,EACxB,mBAAmB,EACnB,4BAA4B,EAC5B,uBAAuB,GACxB,MAAM,+BAA+B,CAAC;AAIvC,OAAO,EACL,mBAAmB,GAEpB,MAAM,mCAAmC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/node/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAE3D,OAAO,EACL,qBAAqB,EACrB,0BAA0B,EAC1B,yBAAyB,EACzB,kBAAkB,EAClB,YAAY,EACZ,4BAA4B,EAC5B,0BAA0B,EAC1B,eAAe,EACf,mCAAmC,EACnC,yBAAyB,EACzB,4BAA4B,EAC5B,iCAAiC,EACjC,2BAA2B,EAC3B,sBAAsB,EACtB,yBAAyB,EACzB,2BAA2B,EAC3B,wBAAwB,GACzB,MAAM,+BAA+B,CAAC;AAwBvC,OAAO,EACL,wBAAwB,EACxB,mBAAmB,EACnB,4BAA4B,EAC5B,uBAAuB,GACxB,MAAM,+BAA+B,CAAC;AAIvC,OAAO,EACL,mBAAmB,GAEpB,MAAM,mCAAmC,CAAC;AAE3C,OAAO,EACL,qBAAqB,EACrB,uBAAuB,GAOxB,MAAM,0BAA0B,CAAC"}
@@ -0,0 +1,54 @@
1
+ /** Passed as third `onUpsert` argument for spoken `assistant_*` turns only. */
2
+ export type SpokenTurnUpsertInfo = {
3
+ /** The turn's text is complete and this is all that will ever be shown. */
4
+ final: boolean;
5
+ inReplyTo?: string;
6
+ };
7
+ export type SpokenChatCaptionOptions = {
8
+ enabled: boolean;
9
+ /**
10
+ * Default `true`. When `false`, a plain `chat_reply` is shown at once (no pacing, no start
11
+ * wait) while spoken `assistant_*` turns are still paced by speech events.
12
+ */
13
+ paceChatReply?: boolean;
14
+ onUpsert: (utteranceId: string, visibleText: string, info?: SpokenTurnUpsertInfo) => void;
15
+ setTimeout?: typeof setTimeout;
16
+ clearTimeout?: typeof clearTimeout;
17
+ };
18
+ export type SpokenChatCaption = {
19
+ handleControlMessage: (payload: Record<string, unknown>) => void;
20
+ setEnabled: (enabled: boolean) => void;
21
+ dispose: () => void;
22
+ };
23
+ export declare function createSpokenChatCaption(opts: SpokenChatCaptionOptions): SpokenChatCaption;
24
+ /**
25
+ * `playback` (default): spoken agent text is revealed word by word while the agent speaks.
26
+ * `immediate`: spoken agent text is reported as soon as the agent hands it to speech.
27
+ */
28
+ export type SpokenTextRevealMode = "playback" | "immediate";
29
+ export type AgentTextUpdate = {
30
+ turnId: string;
31
+ /** Visible text of the whole turn so far (not a delta). */
32
+ text: string;
33
+ spoken: boolean;
34
+ /** No further update for this turn will follow. */
35
+ final: boolean;
36
+ inReplyTo?: string;
37
+ };
38
+ export type AgentTextReveal = {
39
+ handleControlMessage: (payload: Record<string, unknown>) => void;
40
+ dispose: () => void;
41
+ };
42
+ /**
43
+ * Maps the agent's `assistant_delta` / `assistant_done` messages onto `onAgentText`, one call per
44
+ * visible change. Spoken turns go through {@link createSpokenChatCaption} (paced when `mode` is
45
+ * `playback`); typed turns are passed through at once. The `chat_reply` that follows a typed
46
+ * `assistant_done` carries the same text and is never reported.
47
+ */
48
+ export declare function createAgentTextReveal(opts: {
49
+ mode?: SpokenTextRevealMode;
50
+ onAgentText: (update: AgentTextUpdate) => void;
51
+ setTimeout?: typeof setTimeout;
52
+ clearTimeout?: typeof clearTimeout;
53
+ }): AgentTextReveal;
54
+ //# sourceMappingURL=spoken-text-reveal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spoken-text-reveal.d.ts","sourceRoot":"","sources":["../src/spoken-text-reveal.ts"],"names":[],"mappings":"AAgBA,+EAA+E;AAC/E,MAAM,MAAM,oBAAoB,GAAG;IACjC,2EAA2E;IAC3E,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,OAAO,EAAE,OAAO,CAAC;IACjB;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,EAAE,CACR,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,IAAI,CAAC,EAAE,oBAAoB,KACxB,IAAI,CAAC;IACV,UAAU,CAAC,EAAE,OAAO,UAAU,CAAC;IAC/B,YAAY,CAAC,EAAE,OAAO,YAAY,CAAC;CACpC,CAAC;AAqCF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,oBAAoB,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IACjE,UAAU,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,CAAC;AAgEF,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,wBAAwB,GAC7B,iBAAiB,CA2mBnB;AAED;;;GAGG;AACH,MAAM,MAAM,oBAAoB,GAAG,UAAU,GAAG,WAAW,CAAC;AAI5D,MAAM,MAAM,eAAe,GAAG;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,2DAA2D;IAC3D,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,mDAAmD;IACnD,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,oBAAoB,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IACjE,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE;IAC1C,IAAI,CAAC,EAAE,oBAAoB,CAAC;IAC5B,WAAW,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,IAAI,CAAC;IAC/C,UAAU,CAAC,EAAE,OAAO,UAAU,CAAC;IAC/B,YAAY,CAAC,EAAE,OAAO,YAAY,CAAC;CACpC,GAAG,eAAe,CA+ElB"}