@voicethere/agent 0.8.3 → 0.9.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 +2 -1
- package/dist/agent.js +29 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/protocol.d.ts +71 -2
- package/dist/protocol.d.ts.map +1 -1
- package/dist/protocol.js.map +1 -1
- package/dist/runtime.d.ts +43 -1
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +109 -1
- package/dist/runtime.js.map +1 -1
- package/dist/templates/echo/agent.js +31 -2
- package/dist/templates/echo-dc/agent.js +31 -2
- package/dist/templates/game-sync/agent.js +31 -2
- package/dist/templates/language-switch/agent.js +1050 -0
- package/dist/templates/positional-tts/agent.js +31 -2
- package/dist/templates/recording-consent/agent.js +31 -2
- package/dist/templates/registry.d.ts.map +1 -1
- package/dist/templates/registry.js +8 -0
- package/dist/templates/registry.js.map +1 -1
- package/dist/templates/spatial-showcase/agent.js +31 -2
- package/dist/templates/voice-showcase/agent.js +31 -2
- package/dist/templates/voice-starter/agent.js +31 -2
- package/dist/templates/webhooks/agent.js +31 -2
- package/dist/templates/webhooks-redis/agent.js +31 -2
- package/dist/templates/world-sync/agent.js +31 -2
- package/dist/templates/world-sync-binary/agent.js +31 -2
- package/package.json +1 -1
- package/templates/README.md +2 -1
- package/templates/language-switch/README.md +21 -0
- package/templates/language-switch/agent.ts +180 -0
- package/templates/voice-starter/agent.ts +3 -1
|
@@ -181,6 +181,12 @@ function isSttControlAckMessage(value) {
|
|
|
181
181
|
const msg = value;
|
|
182
182
|
return msg.type === "stt_control_ack" && typeof msg.requestId === "string";
|
|
183
183
|
}
|
|
184
|
+
function isVoiceLanguageControlAckMessage(value) {
|
|
185
|
+
if (!value || typeof value !== "object")
|
|
186
|
+
return false;
|
|
187
|
+
const msg = value;
|
|
188
|
+
return msg.type === "voice_language_control_ack" && typeof msg.requestId === "string";
|
|
189
|
+
}
|
|
184
190
|
function isWebhookMessage(value) {
|
|
185
191
|
if (!value || typeof value !== "object")
|
|
186
192
|
return false;
|
|
@@ -223,7 +229,7 @@ function isParentMessage(value) {
|
|
|
223
229
|
if (!value || typeof value !== "object")
|
|
224
230
|
return false;
|
|
225
231
|
const msg = value;
|
|
226
|
-
return msg.type === "session_start" || msg.type === "speech_event" || msg.type === "session_end" || msg.type === "data_channel_message" || msg.type === "data_channel_binary" || msg.type === "idle_timeout" || msg.type === "recording_control_ack" || msg.type === "conversation_history_control_ack" || msg.type === "play_ack" || msg.type === "play_status_ack" || msg.type === "play_stop_ack" || msg.type === "play_pose_ack" || msg.type === "mix_control_ack" || msg.type === "stt_control_ack" || msg.type === "webhook";
|
|
232
|
+
return msg.type === "session_start" || msg.type === "speech_event" || msg.type === "session_end" || msg.type === "data_channel_message" || msg.type === "data_channel_binary" || msg.type === "idle_timeout" || msg.type === "recording_control_ack" || msg.type === "conversation_history_control_ack" || msg.type === "play_ack" || msg.type === "play_status_ack" || msg.type === "play_stop_ack" || msg.type === "play_pose_ack" || msg.type === "mix_control_ack" || msg.type === "stt_control_ack" || msg.type === "voice_language_control_ack" || msg.type === "webhook";
|
|
227
233
|
}
|
|
228
234
|
function isSessionScopedParentMessage(value) {
|
|
229
235
|
return isParentMessage(value) && !isWebhookMessage(value);
|
|
@@ -251,6 +257,7 @@ var pendingPlayPoseAcks = /* @__PURE__ */ new Map();
|
|
|
251
257
|
var MIX_CONTROL_ACK_TIMEOUT_MS = 5e3;
|
|
252
258
|
var pendingMixAcks = /* @__PURE__ */ new Map();
|
|
253
259
|
var pendingSttAcks = /* @__PURE__ */ new Map();
|
|
260
|
+
var pendingVoiceLanguageAcks = /* @__PURE__ */ new Map();
|
|
254
261
|
function handleRecordingControlAck(message) {
|
|
255
262
|
const pending = pendingRecordingAcks.get(message.requestId);
|
|
256
263
|
if (!pending)
|
|
@@ -353,6 +360,24 @@ function handleSttControlAck(message) {
|
|
|
353
360
|
requestId: message.requestId
|
|
354
361
|
});
|
|
355
362
|
}
|
|
363
|
+
function handleVoiceLanguageControlAck(message) {
|
|
364
|
+
const pending = pendingVoiceLanguageAcks.get(message.requestId);
|
|
365
|
+
if (!pending)
|
|
366
|
+
return;
|
|
367
|
+
clearTimeout(pending.timer);
|
|
368
|
+
pendingVoiceLanguageAcks.delete(message.requestId);
|
|
369
|
+
pending.resolve({
|
|
370
|
+
ok: message.ok,
|
|
371
|
+
reason: message.reason,
|
|
372
|
+
requestId: message.requestId,
|
|
373
|
+
...message.language ? { language: message.language } : {},
|
|
374
|
+
...message.voice ? { voice: message.voice } : {},
|
|
375
|
+
...message.stt ? { stt: message.stt } : {},
|
|
376
|
+
...message.scope ? { scope: message.scope } : {},
|
|
377
|
+
...message.sttProvider ? { sttProvider: message.sttProvider } : {},
|
|
378
|
+
...message.ttsProvider ? { ttsProvider: message.ttsProvider } : {}
|
|
379
|
+
});
|
|
380
|
+
}
|
|
356
381
|
function isTtsPoseAvailableInProcess() {
|
|
357
382
|
for (const available of ttsPoseAvailableBySessionId.values()) {
|
|
358
383
|
if (available)
|
|
@@ -433,7 +458,7 @@ function allowOutboundForSession(sessionId) {
|
|
|
433
458
|
}
|
|
434
459
|
function sendParentMessage(message) {
|
|
435
460
|
const msgType = message && typeof message === "object" && "type" in message ? message.type : void 0;
|
|
436
|
-
if (msgType === "mix_control" || msgType === "stt_control") {
|
|
461
|
+
if (msgType === "mix_control" || msgType === "stt_control" || msgType === "voice_language_control") {
|
|
437
462
|
process.send?.(message);
|
|
438
463
|
return;
|
|
439
464
|
}
|
|
@@ -643,6 +668,10 @@ function defineAgent(handlers) {
|
|
|
643
668
|
handleSttControlAck(message);
|
|
644
669
|
return;
|
|
645
670
|
}
|
|
671
|
+
if (isVoiceLanguageControlAckMessage(message)) {
|
|
672
|
+
handleVoiceLanguageControlAck(message);
|
|
673
|
+
return;
|
|
674
|
+
}
|
|
646
675
|
if (isWebhookMessage(message)) {
|
|
647
676
|
void agentStartReady.then(() => handleWebhookMessage(message, handlers));
|
|
648
677
|
return;
|
|
@@ -178,6 +178,12 @@ function isSttControlAckMessage(value) {
|
|
|
178
178
|
const msg = value;
|
|
179
179
|
return msg.type === "stt_control_ack" && typeof msg.requestId === "string";
|
|
180
180
|
}
|
|
181
|
+
function isVoiceLanguageControlAckMessage(value) {
|
|
182
|
+
if (!value || typeof value !== "object")
|
|
183
|
+
return false;
|
|
184
|
+
const msg = value;
|
|
185
|
+
return msg.type === "voice_language_control_ack" && typeof msg.requestId === "string";
|
|
186
|
+
}
|
|
181
187
|
function isWebhookMessage(value) {
|
|
182
188
|
if (!value || typeof value !== "object")
|
|
183
189
|
return false;
|
|
@@ -220,7 +226,7 @@ function isParentMessage(value) {
|
|
|
220
226
|
if (!value || typeof value !== "object")
|
|
221
227
|
return false;
|
|
222
228
|
const msg = value;
|
|
223
|
-
return msg.type === "session_start" || msg.type === "speech_event" || msg.type === "session_end" || msg.type === "data_channel_message" || msg.type === "data_channel_binary" || msg.type === "idle_timeout" || msg.type === "recording_control_ack" || msg.type === "conversation_history_control_ack" || msg.type === "play_ack" || msg.type === "play_status_ack" || msg.type === "play_stop_ack" || msg.type === "play_pose_ack" || msg.type === "mix_control_ack" || msg.type === "stt_control_ack" || msg.type === "webhook";
|
|
229
|
+
return msg.type === "session_start" || msg.type === "speech_event" || msg.type === "session_end" || msg.type === "data_channel_message" || msg.type === "data_channel_binary" || msg.type === "idle_timeout" || msg.type === "recording_control_ack" || msg.type === "conversation_history_control_ack" || msg.type === "play_ack" || msg.type === "play_status_ack" || msg.type === "play_stop_ack" || msg.type === "play_pose_ack" || msg.type === "mix_control_ack" || msg.type === "stt_control_ack" || msg.type === "voice_language_control_ack" || msg.type === "webhook";
|
|
224
230
|
}
|
|
225
231
|
function isSessionScopedParentMessage(value) {
|
|
226
232
|
return isParentMessage(value) && !isWebhookMessage(value);
|
|
@@ -248,6 +254,7 @@ var pendingPlayStopAcks = /* @__PURE__ */ new Map();
|
|
|
248
254
|
var pendingPlayPoseAcks = /* @__PURE__ */ new Map();
|
|
249
255
|
var pendingMixAcks = /* @__PURE__ */ new Map();
|
|
250
256
|
var pendingSttAcks = /* @__PURE__ */ new Map();
|
|
257
|
+
var pendingVoiceLanguageAcks = /* @__PURE__ */ new Map();
|
|
251
258
|
function handleRecordingControlAck(message) {
|
|
252
259
|
const pending = pendingRecordingAcks.get(message.requestId);
|
|
253
260
|
if (!pending)
|
|
@@ -350,6 +357,24 @@ function handleSttControlAck(message) {
|
|
|
350
357
|
requestId: message.requestId
|
|
351
358
|
});
|
|
352
359
|
}
|
|
360
|
+
function handleVoiceLanguageControlAck(message) {
|
|
361
|
+
const pending = pendingVoiceLanguageAcks.get(message.requestId);
|
|
362
|
+
if (!pending)
|
|
363
|
+
return;
|
|
364
|
+
clearTimeout(pending.timer);
|
|
365
|
+
pendingVoiceLanguageAcks.delete(message.requestId);
|
|
366
|
+
pending.resolve({
|
|
367
|
+
ok: message.ok,
|
|
368
|
+
reason: message.reason,
|
|
369
|
+
requestId: message.requestId,
|
|
370
|
+
...message.language ? { language: message.language } : {},
|
|
371
|
+
...message.voice ? { voice: message.voice } : {},
|
|
372
|
+
...message.stt ? { stt: message.stt } : {},
|
|
373
|
+
...message.scope ? { scope: message.scope } : {},
|
|
374
|
+
...message.sttProvider ? { sttProvider: message.sttProvider } : {},
|
|
375
|
+
...message.ttsProvider ? { ttsProvider: message.ttsProvider } : {}
|
|
376
|
+
});
|
|
377
|
+
}
|
|
353
378
|
function clearPendingRecordingAcksForSession(sessionId, reason) {
|
|
354
379
|
for (const [requestId, pending] of pendingRecordingAcks) {
|
|
355
380
|
if (pending.sessionId !== sessionId)
|
|
@@ -418,7 +443,7 @@ function allowOutboundForSession(sessionId) {
|
|
|
418
443
|
}
|
|
419
444
|
function sendParentMessage(message) {
|
|
420
445
|
const msgType = message && typeof message === "object" && "type" in message ? message.type : void 0;
|
|
421
|
-
if (msgType === "mix_control" || msgType === "stt_control") {
|
|
446
|
+
if (msgType === "mix_control" || msgType === "stt_control" || msgType === "voice_language_control") {
|
|
422
447
|
process.send?.(message);
|
|
423
448
|
return;
|
|
424
449
|
}
|
|
@@ -628,6 +653,10 @@ function defineAgent(handlers) {
|
|
|
628
653
|
handleSttControlAck(message);
|
|
629
654
|
return;
|
|
630
655
|
}
|
|
656
|
+
if (isVoiceLanguageControlAckMessage(message)) {
|
|
657
|
+
handleVoiceLanguageControlAck(message);
|
|
658
|
+
return;
|
|
659
|
+
}
|
|
631
660
|
if (isWebhookMessage(message)) {
|
|
632
661
|
void agentStartReady.then(() => handleWebhookMessage(message, handlers));
|
|
633
662
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/templates/registry.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,KAAK,CAAC;AAE7C,MAAM,WAAW,uBAAuB;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,mFAAmF;IACnF,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,YAAY,CAAC;IACnB,mFAAmF;IACnF,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,yEAAyE;IACzE,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,oFAAoF;IACpF,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC1C;AAED,eAAO,MAAM,eAAe,EAAE,SAAS,uBAAuB,
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/templates/registry.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,KAAK,CAAC;AAE7C,MAAM,WAAW,uBAAuB;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,mFAAmF;IACnF,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,YAAY,CAAC;IACnB,mFAAmF;IACnF,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,yEAAyE;IACzE,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,oFAAoF;IACpF,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC1C;AAED,eAAO,MAAM,eAAe,EAAE,SAAS,uBAAuB,EA8LpD,CAAC;AAEX,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC;AAMrE,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,EAAE,IAAI,eAAe,CAEnE;AAED,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,uBAAuB,CAMnE;AAED,wBAAgB,yBAAyB,IAAI,uBAAuB,EAAE,CAErE"}
|
|
@@ -15,6 +15,14 @@ export const AGENT_TEMPLATES = [
|
|
|
15
15
|
description: "Data-channel-only echo — relays speech events and chat without TTS.",
|
|
16
16
|
sourceFiles: ["echo-dc/agent.ts"],
|
|
17
17
|
},
|
|
18
|
+
{
|
|
19
|
+
id: "language-switch",
|
|
20
|
+
entry: "language-switch/agent.ts",
|
|
21
|
+
kind: "product",
|
|
22
|
+
seedOnCreate: true,
|
|
23
|
+
description: "Switches STT and TTS independently from onUserLanguage, and can change one vendor mid-conversation. Detection does not change either side until this agent calls setVoiceLanguage.",
|
|
24
|
+
sourceFiles: ["language-switch/agent.ts"],
|
|
25
|
+
},
|
|
18
26
|
{
|
|
19
27
|
id: "voice-starter",
|
|
20
28
|
entry: "voice-starter/agent.ts",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/templates/registry.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/templates/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -182,6 +182,12 @@ function isSttControlAckMessage(value) {
|
|
|
182
182
|
const msg = value;
|
|
183
183
|
return msg.type === "stt_control_ack" && typeof msg.requestId === "string";
|
|
184
184
|
}
|
|
185
|
+
function isVoiceLanguageControlAckMessage(value) {
|
|
186
|
+
if (!value || typeof value !== "object")
|
|
187
|
+
return false;
|
|
188
|
+
const msg = value;
|
|
189
|
+
return msg.type === "voice_language_control_ack" && typeof msg.requestId === "string";
|
|
190
|
+
}
|
|
185
191
|
function isWebhookMessage(value) {
|
|
186
192
|
if (!value || typeof value !== "object")
|
|
187
193
|
return false;
|
|
@@ -224,7 +230,7 @@ function isParentMessage(value) {
|
|
|
224
230
|
if (!value || typeof value !== "object")
|
|
225
231
|
return false;
|
|
226
232
|
const msg = value;
|
|
227
|
-
return msg.type === "session_start" || msg.type === "speech_event" || msg.type === "session_end" || msg.type === "data_channel_message" || msg.type === "data_channel_binary" || msg.type === "idle_timeout" || msg.type === "recording_control_ack" || msg.type === "conversation_history_control_ack" || msg.type === "play_ack" || msg.type === "play_status_ack" || msg.type === "play_stop_ack" || msg.type === "play_pose_ack" || msg.type === "mix_control_ack" || msg.type === "stt_control_ack" || msg.type === "webhook";
|
|
233
|
+
return msg.type === "session_start" || msg.type === "speech_event" || msg.type === "session_end" || msg.type === "data_channel_message" || msg.type === "data_channel_binary" || msg.type === "idle_timeout" || msg.type === "recording_control_ack" || msg.type === "conversation_history_control_ack" || msg.type === "play_ack" || msg.type === "play_status_ack" || msg.type === "play_stop_ack" || msg.type === "play_pose_ack" || msg.type === "mix_control_ack" || msg.type === "stt_control_ack" || msg.type === "voice_language_control_ack" || msg.type === "webhook";
|
|
228
234
|
}
|
|
229
235
|
function isSessionScopedParentMessage(value) {
|
|
230
236
|
return isParentMessage(value) && !isWebhookMessage(value);
|
|
@@ -254,6 +260,7 @@ var MIX_CONTROL_ACK_TIMEOUT_MS = 5e3;
|
|
|
254
260
|
var STT_CONTROL_ACK_TIMEOUT_MS = 5e3;
|
|
255
261
|
var pendingMixAcks = /* @__PURE__ */ new Map();
|
|
256
262
|
var pendingSttAcks = /* @__PURE__ */ new Map();
|
|
263
|
+
var pendingVoiceLanguageAcks = /* @__PURE__ */ new Map();
|
|
257
264
|
function handleRecordingControlAck(message) {
|
|
258
265
|
const pending = pendingRecordingAcks.get(message.requestId);
|
|
259
266
|
if (!pending)
|
|
@@ -356,6 +363,24 @@ function handleSttControlAck(message) {
|
|
|
356
363
|
requestId: message.requestId
|
|
357
364
|
});
|
|
358
365
|
}
|
|
366
|
+
function handleVoiceLanguageControlAck(message) {
|
|
367
|
+
const pending = pendingVoiceLanguageAcks.get(message.requestId);
|
|
368
|
+
if (!pending)
|
|
369
|
+
return;
|
|
370
|
+
clearTimeout(pending.timer);
|
|
371
|
+
pendingVoiceLanguageAcks.delete(message.requestId);
|
|
372
|
+
pending.resolve({
|
|
373
|
+
ok: message.ok,
|
|
374
|
+
reason: message.reason,
|
|
375
|
+
requestId: message.requestId,
|
|
376
|
+
...message.language ? { language: message.language } : {},
|
|
377
|
+
...message.voice ? { voice: message.voice } : {},
|
|
378
|
+
...message.stt ? { stt: message.stt } : {},
|
|
379
|
+
...message.scope ? { scope: message.scope } : {},
|
|
380
|
+
...message.sttProvider ? { sttProvider: message.sttProvider } : {},
|
|
381
|
+
...message.ttsProvider ? { ttsProvider: message.ttsProvider } : {}
|
|
382
|
+
});
|
|
383
|
+
}
|
|
359
384
|
function isMixAvailableInProcess() {
|
|
360
385
|
for (const available of mixAvailableBySessionId.values()) {
|
|
361
386
|
if (available)
|
|
@@ -448,7 +473,7 @@ function allowOutboundForSession(sessionId) {
|
|
|
448
473
|
}
|
|
449
474
|
function sendParentMessage(message) {
|
|
450
475
|
const msgType = message && typeof message === "object" && "type" in message ? message.type : void 0;
|
|
451
|
-
if (msgType === "mix_control" || msgType === "stt_control") {
|
|
476
|
+
if (msgType === "mix_control" || msgType === "stt_control" || msgType === "voice_language_control") {
|
|
452
477
|
process.send?.(message);
|
|
453
478
|
return;
|
|
454
479
|
}
|
|
@@ -658,6 +683,10 @@ function defineAgent(handlers) {
|
|
|
658
683
|
handleSttControlAck(message);
|
|
659
684
|
return;
|
|
660
685
|
}
|
|
686
|
+
if (isVoiceLanguageControlAckMessage(message)) {
|
|
687
|
+
handleVoiceLanguageControlAck(message);
|
|
688
|
+
return;
|
|
689
|
+
}
|
|
661
690
|
if (isWebhookMessage(message)) {
|
|
662
691
|
void agentStartReady.then(() => handleWebhookMessage(message, handlers));
|
|
663
692
|
return;
|
|
@@ -178,6 +178,12 @@ function isSttControlAckMessage(value) {
|
|
|
178
178
|
const msg = value;
|
|
179
179
|
return msg.type === "stt_control_ack" && typeof msg.requestId === "string";
|
|
180
180
|
}
|
|
181
|
+
function isVoiceLanguageControlAckMessage(value) {
|
|
182
|
+
if (!value || typeof value !== "object")
|
|
183
|
+
return false;
|
|
184
|
+
const msg = value;
|
|
185
|
+
return msg.type === "voice_language_control_ack" && typeof msg.requestId === "string";
|
|
186
|
+
}
|
|
181
187
|
function isWebhookMessage(value) {
|
|
182
188
|
if (!value || typeof value !== "object")
|
|
183
189
|
return false;
|
|
@@ -220,7 +226,7 @@ function isParentMessage(value) {
|
|
|
220
226
|
if (!value || typeof value !== "object")
|
|
221
227
|
return false;
|
|
222
228
|
const msg = value;
|
|
223
|
-
return msg.type === "session_start" || msg.type === "speech_event" || msg.type === "session_end" || msg.type === "data_channel_message" || msg.type === "data_channel_binary" || msg.type === "idle_timeout" || msg.type === "recording_control_ack" || msg.type === "conversation_history_control_ack" || msg.type === "play_ack" || msg.type === "play_status_ack" || msg.type === "play_stop_ack" || msg.type === "play_pose_ack" || msg.type === "mix_control_ack" || msg.type === "stt_control_ack" || msg.type === "webhook";
|
|
229
|
+
return msg.type === "session_start" || msg.type === "speech_event" || msg.type === "session_end" || msg.type === "data_channel_message" || msg.type === "data_channel_binary" || msg.type === "idle_timeout" || msg.type === "recording_control_ack" || msg.type === "conversation_history_control_ack" || msg.type === "play_ack" || msg.type === "play_status_ack" || msg.type === "play_stop_ack" || msg.type === "play_pose_ack" || msg.type === "mix_control_ack" || msg.type === "stt_control_ack" || msg.type === "voice_language_control_ack" || msg.type === "webhook";
|
|
224
230
|
}
|
|
225
231
|
function isSessionScopedParentMessage(value) {
|
|
226
232
|
return isParentMessage(value) && !isWebhookMessage(value);
|
|
@@ -247,6 +253,7 @@ var pendingPlayStopAcks = /* @__PURE__ */ new Map();
|
|
|
247
253
|
var pendingPlayPoseAcks = /* @__PURE__ */ new Map();
|
|
248
254
|
var pendingMixAcks = /* @__PURE__ */ new Map();
|
|
249
255
|
var pendingSttAcks = /* @__PURE__ */ new Map();
|
|
256
|
+
var pendingVoiceLanguageAcks = /* @__PURE__ */ new Map();
|
|
250
257
|
function handleRecordingControlAck(message) {
|
|
251
258
|
const pending = pendingRecordingAcks.get(message.requestId);
|
|
252
259
|
if (!pending)
|
|
@@ -349,6 +356,24 @@ function handleSttControlAck(message) {
|
|
|
349
356
|
requestId: message.requestId
|
|
350
357
|
});
|
|
351
358
|
}
|
|
359
|
+
function handleVoiceLanguageControlAck(message) {
|
|
360
|
+
const pending = pendingVoiceLanguageAcks.get(message.requestId);
|
|
361
|
+
if (!pending)
|
|
362
|
+
return;
|
|
363
|
+
clearTimeout(pending.timer);
|
|
364
|
+
pendingVoiceLanguageAcks.delete(message.requestId);
|
|
365
|
+
pending.resolve({
|
|
366
|
+
ok: message.ok,
|
|
367
|
+
reason: message.reason,
|
|
368
|
+
requestId: message.requestId,
|
|
369
|
+
...message.language ? { language: message.language } : {},
|
|
370
|
+
...message.voice ? { voice: message.voice } : {},
|
|
371
|
+
...message.stt ? { stt: message.stt } : {},
|
|
372
|
+
...message.scope ? { scope: message.scope } : {},
|
|
373
|
+
...message.sttProvider ? { sttProvider: message.sttProvider } : {},
|
|
374
|
+
...message.ttsProvider ? { ttsProvider: message.ttsProvider } : {}
|
|
375
|
+
});
|
|
376
|
+
}
|
|
352
377
|
function clearPendingRecordingAcksForSession(sessionId, reason) {
|
|
353
378
|
for (const [requestId, pending] of pendingRecordingAcks) {
|
|
354
379
|
if (pending.sessionId !== sessionId)
|
|
@@ -414,7 +439,7 @@ function allowOutboundForSession(sessionId) {
|
|
|
414
439
|
}
|
|
415
440
|
function sendParentMessage(message) {
|
|
416
441
|
const msgType = message && typeof message === "object" && "type" in message ? message.type : void 0;
|
|
417
|
-
if (msgType === "mix_control" || msgType === "stt_control") {
|
|
442
|
+
if (msgType === "mix_control" || msgType === "stt_control" || msgType === "voice_language_control") {
|
|
418
443
|
process.send?.(message);
|
|
419
444
|
return;
|
|
420
445
|
}
|
|
@@ -624,6 +649,10 @@ function defineAgent(handlers) {
|
|
|
624
649
|
handleSttControlAck(message);
|
|
625
650
|
return;
|
|
626
651
|
}
|
|
652
|
+
if (isVoiceLanguageControlAckMessage(message)) {
|
|
653
|
+
handleVoiceLanguageControlAck(message);
|
|
654
|
+
return;
|
|
655
|
+
}
|
|
627
656
|
if (isWebhookMessage(message)) {
|
|
628
657
|
void agentStartReady.then(() => handleWebhookMessage(message, handlers));
|
|
629
658
|
return;
|
|
@@ -178,6 +178,12 @@ function isSttControlAckMessage(value) {
|
|
|
178
178
|
const msg = value;
|
|
179
179
|
return msg.type === "stt_control_ack" && typeof msg.requestId === "string";
|
|
180
180
|
}
|
|
181
|
+
function isVoiceLanguageControlAckMessage(value) {
|
|
182
|
+
if (!value || typeof value !== "object")
|
|
183
|
+
return false;
|
|
184
|
+
const msg = value;
|
|
185
|
+
return msg.type === "voice_language_control_ack" && typeof msg.requestId === "string";
|
|
186
|
+
}
|
|
181
187
|
function isWebhookMessage(value) {
|
|
182
188
|
if (!value || typeof value !== "object")
|
|
183
189
|
return false;
|
|
@@ -220,7 +226,7 @@ function isParentMessage(value) {
|
|
|
220
226
|
if (!value || typeof value !== "object")
|
|
221
227
|
return false;
|
|
222
228
|
const msg = value;
|
|
223
|
-
return msg.type === "session_start" || msg.type === "speech_event" || msg.type === "session_end" || msg.type === "data_channel_message" || msg.type === "data_channel_binary" || msg.type === "idle_timeout" || msg.type === "recording_control_ack" || msg.type === "conversation_history_control_ack" || msg.type === "play_ack" || msg.type === "play_status_ack" || msg.type === "play_stop_ack" || msg.type === "play_pose_ack" || msg.type === "mix_control_ack" || msg.type === "stt_control_ack" || msg.type === "webhook";
|
|
229
|
+
return msg.type === "session_start" || msg.type === "speech_event" || msg.type === "session_end" || msg.type === "data_channel_message" || msg.type === "data_channel_binary" || msg.type === "idle_timeout" || msg.type === "recording_control_ack" || msg.type === "conversation_history_control_ack" || msg.type === "play_ack" || msg.type === "play_status_ack" || msg.type === "play_stop_ack" || msg.type === "play_pose_ack" || msg.type === "mix_control_ack" || msg.type === "stt_control_ack" || msg.type === "voice_language_control_ack" || msg.type === "webhook";
|
|
224
230
|
}
|
|
225
231
|
function isSessionScopedParentMessage(value) {
|
|
226
232
|
return isParentMessage(value) && !isWebhookMessage(value);
|
|
@@ -247,6 +253,7 @@ var pendingPlayStopAcks = /* @__PURE__ */ new Map();
|
|
|
247
253
|
var pendingPlayPoseAcks = /* @__PURE__ */ new Map();
|
|
248
254
|
var pendingMixAcks = /* @__PURE__ */ new Map();
|
|
249
255
|
var pendingSttAcks = /* @__PURE__ */ new Map();
|
|
256
|
+
var pendingVoiceLanguageAcks = /* @__PURE__ */ new Map();
|
|
250
257
|
function handleRecordingControlAck(message) {
|
|
251
258
|
const pending = pendingRecordingAcks.get(message.requestId);
|
|
252
259
|
if (!pending)
|
|
@@ -349,6 +356,24 @@ function handleSttControlAck(message) {
|
|
|
349
356
|
requestId: message.requestId
|
|
350
357
|
});
|
|
351
358
|
}
|
|
359
|
+
function handleVoiceLanguageControlAck(message) {
|
|
360
|
+
const pending = pendingVoiceLanguageAcks.get(message.requestId);
|
|
361
|
+
if (!pending)
|
|
362
|
+
return;
|
|
363
|
+
clearTimeout(pending.timer);
|
|
364
|
+
pendingVoiceLanguageAcks.delete(message.requestId);
|
|
365
|
+
pending.resolve({
|
|
366
|
+
ok: message.ok,
|
|
367
|
+
reason: message.reason,
|
|
368
|
+
requestId: message.requestId,
|
|
369
|
+
...message.language ? { language: message.language } : {},
|
|
370
|
+
...message.voice ? { voice: message.voice } : {},
|
|
371
|
+
...message.stt ? { stt: message.stt } : {},
|
|
372
|
+
...message.scope ? { scope: message.scope } : {},
|
|
373
|
+
...message.sttProvider ? { sttProvider: message.sttProvider } : {},
|
|
374
|
+
...message.ttsProvider ? { ttsProvider: message.ttsProvider } : {}
|
|
375
|
+
});
|
|
376
|
+
}
|
|
352
377
|
function clearPendingRecordingAcksForSession(sessionId, reason) {
|
|
353
378
|
for (const [requestId, pending] of pendingRecordingAcks) {
|
|
354
379
|
if (pending.sessionId !== sessionId)
|
|
@@ -414,7 +439,7 @@ function allowOutboundForSession(sessionId) {
|
|
|
414
439
|
}
|
|
415
440
|
function sendParentMessage(message) {
|
|
416
441
|
const msgType = message && typeof message === "object" && "type" in message ? message.type : void 0;
|
|
417
|
-
if (msgType === "mix_control" || msgType === "stt_control") {
|
|
442
|
+
if (msgType === "mix_control" || msgType === "stt_control" || msgType === "voice_language_control") {
|
|
418
443
|
process.send?.(message);
|
|
419
444
|
return;
|
|
420
445
|
}
|
|
@@ -624,6 +649,10 @@ function defineAgent(handlers) {
|
|
|
624
649
|
handleSttControlAck(message);
|
|
625
650
|
return;
|
|
626
651
|
}
|
|
652
|
+
if (isVoiceLanguageControlAckMessage(message)) {
|
|
653
|
+
handleVoiceLanguageControlAck(message);
|
|
654
|
+
return;
|
|
655
|
+
}
|
|
627
656
|
if (isWebhookMessage(message)) {
|
|
628
657
|
void agentStartReady.then(() => handleWebhookMessage(message, handlers));
|
|
629
658
|
return;
|
|
@@ -181,6 +181,12 @@ function isSttControlAckMessage(value) {
|
|
|
181
181
|
const msg = value;
|
|
182
182
|
return msg.type === "stt_control_ack" && typeof msg.requestId === "string";
|
|
183
183
|
}
|
|
184
|
+
function isVoiceLanguageControlAckMessage(value) {
|
|
185
|
+
if (!value || typeof value !== "object")
|
|
186
|
+
return false;
|
|
187
|
+
const msg = value;
|
|
188
|
+
return msg.type === "voice_language_control_ack" && typeof msg.requestId === "string";
|
|
189
|
+
}
|
|
184
190
|
function isWebhookMessage(value) {
|
|
185
191
|
if (!value || typeof value !== "object")
|
|
186
192
|
return false;
|
|
@@ -223,7 +229,7 @@ function isParentMessage(value) {
|
|
|
223
229
|
if (!value || typeof value !== "object")
|
|
224
230
|
return false;
|
|
225
231
|
const msg = value;
|
|
226
|
-
return msg.type === "session_start" || msg.type === "speech_event" || msg.type === "session_end" || msg.type === "data_channel_message" || msg.type === "data_channel_binary" || msg.type === "idle_timeout" || msg.type === "recording_control_ack" || msg.type === "conversation_history_control_ack" || msg.type === "play_ack" || msg.type === "play_status_ack" || msg.type === "play_stop_ack" || msg.type === "play_pose_ack" || msg.type === "mix_control_ack" || msg.type === "stt_control_ack" || msg.type === "webhook";
|
|
232
|
+
return msg.type === "session_start" || msg.type === "speech_event" || msg.type === "session_end" || msg.type === "data_channel_message" || msg.type === "data_channel_binary" || msg.type === "idle_timeout" || msg.type === "recording_control_ack" || msg.type === "conversation_history_control_ack" || msg.type === "play_ack" || msg.type === "play_status_ack" || msg.type === "play_stop_ack" || msg.type === "play_pose_ack" || msg.type === "mix_control_ack" || msg.type === "stt_control_ack" || msg.type === "voice_language_control_ack" || msg.type === "webhook";
|
|
227
233
|
}
|
|
228
234
|
function isSessionScopedParentMessage(value) {
|
|
229
235
|
return isParentMessage(value) && !isWebhookMessage(value);
|
|
@@ -250,6 +256,7 @@ var pendingPlayStopAcks = /* @__PURE__ */ new Map();
|
|
|
250
256
|
var pendingPlayPoseAcks = /* @__PURE__ */ new Map();
|
|
251
257
|
var pendingMixAcks = /* @__PURE__ */ new Map();
|
|
252
258
|
var pendingSttAcks = /* @__PURE__ */ new Map();
|
|
259
|
+
var pendingVoiceLanguageAcks = /* @__PURE__ */ new Map();
|
|
253
260
|
function handleRecordingControlAck(message) {
|
|
254
261
|
const pending = pendingRecordingAcks.get(message.requestId);
|
|
255
262
|
if (!pending)
|
|
@@ -352,6 +359,24 @@ function handleSttControlAck(message) {
|
|
|
352
359
|
requestId: message.requestId
|
|
353
360
|
});
|
|
354
361
|
}
|
|
362
|
+
function handleVoiceLanguageControlAck(message) {
|
|
363
|
+
const pending = pendingVoiceLanguageAcks.get(message.requestId);
|
|
364
|
+
if (!pending)
|
|
365
|
+
return;
|
|
366
|
+
clearTimeout(pending.timer);
|
|
367
|
+
pendingVoiceLanguageAcks.delete(message.requestId);
|
|
368
|
+
pending.resolve({
|
|
369
|
+
ok: message.ok,
|
|
370
|
+
reason: message.reason,
|
|
371
|
+
requestId: message.requestId,
|
|
372
|
+
...message.language ? { language: message.language } : {},
|
|
373
|
+
...message.voice ? { voice: message.voice } : {},
|
|
374
|
+
...message.stt ? { stt: message.stt } : {},
|
|
375
|
+
...message.scope ? { scope: message.scope } : {},
|
|
376
|
+
...message.sttProvider ? { sttProvider: message.sttProvider } : {},
|
|
377
|
+
...message.ttsProvider ? { ttsProvider: message.ttsProvider } : {}
|
|
378
|
+
});
|
|
379
|
+
}
|
|
355
380
|
function clearPendingRecordingAcksForSession(sessionId, reason) {
|
|
356
381
|
for (const [requestId, pending] of pendingRecordingAcks) {
|
|
357
382
|
if (pending.sessionId !== sessionId)
|
|
@@ -417,7 +442,7 @@ function allowOutboundForSession(sessionId) {
|
|
|
417
442
|
}
|
|
418
443
|
function sendParentMessage(message) {
|
|
419
444
|
const msgType = message && typeof message === "object" && "type" in message ? message.type : void 0;
|
|
420
|
-
if (msgType === "mix_control" || msgType === "stt_control") {
|
|
445
|
+
if (msgType === "mix_control" || msgType === "stt_control" || msgType === "voice_language_control") {
|
|
421
446
|
process.send?.(message);
|
|
422
447
|
return;
|
|
423
448
|
}
|
|
@@ -627,6 +652,10 @@ function defineAgent(handlers) {
|
|
|
627
652
|
handleSttControlAck(message);
|
|
628
653
|
return;
|
|
629
654
|
}
|
|
655
|
+
if (isVoiceLanguageControlAckMessage(message)) {
|
|
656
|
+
handleVoiceLanguageControlAck(message);
|
|
657
|
+
return;
|
|
658
|
+
}
|
|
630
659
|
if (isWebhookMessage(message)) {
|
|
631
660
|
void agentStartReady.then(() => handleWebhookMessage(message, handlers));
|
|
632
661
|
return;
|
|
@@ -10933,6 +10933,12 @@ function isSttControlAckMessage(value) {
|
|
|
10933
10933
|
const msg = value;
|
|
10934
10934
|
return msg.type === "stt_control_ack" && typeof msg.requestId === "string";
|
|
10935
10935
|
}
|
|
10936
|
+
function isVoiceLanguageControlAckMessage(value) {
|
|
10937
|
+
if (!value || typeof value !== "object")
|
|
10938
|
+
return false;
|
|
10939
|
+
const msg = value;
|
|
10940
|
+
return msg.type === "voice_language_control_ack" && typeof msg.requestId === "string";
|
|
10941
|
+
}
|
|
10936
10942
|
function isWebhookMessage(value) {
|
|
10937
10943
|
if (!value || typeof value !== "object")
|
|
10938
10944
|
return false;
|
|
@@ -10975,7 +10981,7 @@ function isParentMessage(value) {
|
|
|
10975
10981
|
if (!value || typeof value !== "object")
|
|
10976
10982
|
return false;
|
|
10977
10983
|
const msg = value;
|
|
10978
|
-
return msg.type === "session_start" || msg.type === "speech_event" || msg.type === "session_end" || msg.type === "data_channel_message" || msg.type === "data_channel_binary" || msg.type === "idle_timeout" || msg.type === "recording_control_ack" || msg.type === "conversation_history_control_ack" || msg.type === "play_ack" || msg.type === "play_status_ack" || msg.type === "play_stop_ack" || msg.type === "play_pose_ack" || msg.type === "mix_control_ack" || msg.type === "stt_control_ack" || msg.type === "webhook";
|
|
10984
|
+
return msg.type === "session_start" || msg.type === "speech_event" || msg.type === "session_end" || msg.type === "data_channel_message" || msg.type === "data_channel_binary" || msg.type === "idle_timeout" || msg.type === "recording_control_ack" || msg.type === "conversation_history_control_ack" || msg.type === "play_ack" || msg.type === "play_status_ack" || msg.type === "play_stop_ack" || msg.type === "play_pose_ack" || msg.type === "mix_control_ack" || msg.type === "stt_control_ack" || msg.type === "voice_language_control_ack" || msg.type === "webhook";
|
|
10979
10985
|
}
|
|
10980
10986
|
function isSessionScopedParentMessage(value) {
|
|
10981
10987
|
return isParentMessage(value) && !isWebhookMessage(value);
|
|
@@ -11002,6 +11008,7 @@ var pendingPlayStopAcks = /* @__PURE__ */ new Map();
|
|
|
11002
11008
|
var pendingPlayPoseAcks = /* @__PURE__ */ new Map();
|
|
11003
11009
|
var pendingMixAcks = /* @__PURE__ */ new Map();
|
|
11004
11010
|
var pendingSttAcks = /* @__PURE__ */ new Map();
|
|
11011
|
+
var pendingVoiceLanguageAcks = /* @__PURE__ */ new Map();
|
|
11005
11012
|
function handleRecordingControlAck(message) {
|
|
11006
11013
|
const pending = pendingRecordingAcks.get(message.requestId);
|
|
11007
11014
|
if (!pending)
|
|
@@ -11104,6 +11111,24 @@ function handleSttControlAck(message) {
|
|
|
11104
11111
|
requestId: message.requestId
|
|
11105
11112
|
});
|
|
11106
11113
|
}
|
|
11114
|
+
function handleVoiceLanguageControlAck(message) {
|
|
11115
|
+
const pending = pendingVoiceLanguageAcks.get(message.requestId);
|
|
11116
|
+
if (!pending)
|
|
11117
|
+
return;
|
|
11118
|
+
clearTimeout(pending.timer);
|
|
11119
|
+
pendingVoiceLanguageAcks.delete(message.requestId);
|
|
11120
|
+
pending.resolve({
|
|
11121
|
+
ok: message.ok,
|
|
11122
|
+
reason: message.reason,
|
|
11123
|
+
requestId: message.requestId,
|
|
11124
|
+
...message.language ? { language: message.language } : {},
|
|
11125
|
+
...message.voice ? { voice: message.voice } : {},
|
|
11126
|
+
...message.stt ? { stt: message.stt } : {},
|
|
11127
|
+
...message.scope ? { scope: message.scope } : {},
|
|
11128
|
+
...message.sttProvider ? { sttProvider: message.sttProvider } : {},
|
|
11129
|
+
...message.ttsProvider ? { ttsProvider: message.ttsProvider } : {}
|
|
11130
|
+
});
|
|
11131
|
+
}
|
|
11107
11132
|
function clearPendingRecordingAcksForSession(sessionId, reason) {
|
|
11108
11133
|
for (const [requestId, pending] of pendingRecordingAcks) {
|
|
11109
11134
|
if (pending.sessionId !== sessionId)
|
|
@@ -11169,7 +11194,7 @@ function allowOutboundForSession(sessionId) {
|
|
|
11169
11194
|
}
|
|
11170
11195
|
function sendParentMessage(message) {
|
|
11171
11196
|
const msgType = message && typeof message === "object" && "type" in message ? message.type : void 0;
|
|
11172
|
-
if (msgType === "mix_control" || msgType === "stt_control") {
|
|
11197
|
+
if (msgType === "mix_control" || msgType === "stt_control" || msgType === "voice_language_control") {
|
|
11173
11198
|
process.send?.(message);
|
|
11174
11199
|
return;
|
|
11175
11200
|
}
|
|
@@ -11379,6 +11404,10 @@ function defineAgent(handlers) {
|
|
|
11379
11404
|
handleSttControlAck(message);
|
|
11380
11405
|
return;
|
|
11381
11406
|
}
|
|
11407
|
+
if (isVoiceLanguageControlAckMessage(message)) {
|
|
11408
|
+
handleVoiceLanguageControlAck(message);
|
|
11409
|
+
return;
|
|
11410
|
+
}
|
|
11382
11411
|
if (isWebhookMessage(message)) {
|
|
11383
11412
|
void agentStartReady.then(() => handleWebhookMessage(message, handlers));
|
|
11384
11413
|
return;
|
|
@@ -178,6 +178,12 @@ function isSttControlAckMessage(value) {
|
|
|
178
178
|
const msg = value;
|
|
179
179
|
return msg.type === "stt_control_ack" && typeof msg.requestId === "string";
|
|
180
180
|
}
|
|
181
|
+
function isVoiceLanguageControlAckMessage(value) {
|
|
182
|
+
if (!value || typeof value !== "object")
|
|
183
|
+
return false;
|
|
184
|
+
const msg = value;
|
|
185
|
+
return msg.type === "voice_language_control_ack" && typeof msg.requestId === "string";
|
|
186
|
+
}
|
|
181
187
|
function isWebhookMessage(value) {
|
|
182
188
|
if (!value || typeof value !== "object")
|
|
183
189
|
return false;
|
|
@@ -220,7 +226,7 @@ function isParentMessage(value) {
|
|
|
220
226
|
if (!value || typeof value !== "object")
|
|
221
227
|
return false;
|
|
222
228
|
const msg = value;
|
|
223
|
-
return msg.type === "session_start" || msg.type === "speech_event" || msg.type === "session_end" || msg.type === "data_channel_message" || msg.type === "data_channel_binary" || msg.type === "idle_timeout" || msg.type === "recording_control_ack" || msg.type === "conversation_history_control_ack" || msg.type === "play_ack" || msg.type === "play_status_ack" || msg.type === "play_stop_ack" || msg.type === "play_pose_ack" || msg.type === "mix_control_ack" || msg.type === "stt_control_ack" || msg.type === "webhook";
|
|
229
|
+
return msg.type === "session_start" || msg.type === "speech_event" || msg.type === "session_end" || msg.type === "data_channel_message" || msg.type === "data_channel_binary" || msg.type === "idle_timeout" || msg.type === "recording_control_ack" || msg.type === "conversation_history_control_ack" || msg.type === "play_ack" || msg.type === "play_status_ack" || msg.type === "play_stop_ack" || msg.type === "play_pose_ack" || msg.type === "mix_control_ack" || msg.type === "stt_control_ack" || msg.type === "voice_language_control_ack" || msg.type === "webhook";
|
|
224
230
|
}
|
|
225
231
|
function isSessionScopedParentMessage(value) {
|
|
226
232
|
return isParentMessage(value) && !isWebhookMessage(value);
|
|
@@ -247,6 +253,7 @@ var pendingPlayStopAcks = /* @__PURE__ */ new Map();
|
|
|
247
253
|
var pendingPlayPoseAcks = /* @__PURE__ */ new Map();
|
|
248
254
|
var pendingMixAcks = /* @__PURE__ */ new Map();
|
|
249
255
|
var pendingSttAcks = /* @__PURE__ */ new Map();
|
|
256
|
+
var pendingVoiceLanguageAcks = /* @__PURE__ */ new Map();
|
|
250
257
|
function handleRecordingControlAck(message) {
|
|
251
258
|
const pending = pendingRecordingAcks.get(message.requestId);
|
|
252
259
|
if (!pending)
|
|
@@ -349,6 +356,24 @@ function handleSttControlAck(message) {
|
|
|
349
356
|
requestId: message.requestId
|
|
350
357
|
});
|
|
351
358
|
}
|
|
359
|
+
function handleVoiceLanguageControlAck(message) {
|
|
360
|
+
const pending = pendingVoiceLanguageAcks.get(message.requestId);
|
|
361
|
+
if (!pending)
|
|
362
|
+
return;
|
|
363
|
+
clearTimeout(pending.timer);
|
|
364
|
+
pendingVoiceLanguageAcks.delete(message.requestId);
|
|
365
|
+
pending.resolve({
|
|
366
|
+
ok: message.ok,
|
|
367
|
+
reason: message.reason,
|
|
368
|
+
requestId: message.requestId,
|
|
369
|
+
...message.language ? { language: message.language } : {},
|
|
370
|
+
...message.voice ? { voice: message.voice } : {},
|
|
371
|
+
...message.stt ? { stt: message.stt } : {},
|
|
372
|
+
...message.scope ? { scope: message.scope } : {},
|
|
373
|
+
...message.sttProvider ? { sttProvider: message.sttProvider } : {},
|
|
374
|
+
...message.ttsProvider ? { ttsProvider: message.ttsProvider } : {}
|
|
375
|
+
});
|
|
376
|
+
}
|
|
352
377
|
function clearPendingRecordingAcksForSession(sessionId, reason) {
|
|
353
378
|
for (const [requestId, pending] of pendingRecordingAcks) {
|
|
354
379
|
if (pending.sessionId !== sessionId)
|
|
@@ -414,7 +439,7 @@ function allowOutboundForSession(sessionId) {
|
|
|
414
439
|
}
|
|
415
440
|
function sendParentMessage(message) {
|
|
416
441
|
const msgType = message && typeof message === "object" && "type" in message ? message.type : void 0;
|
|
417
|
-
if (msgType === "mix_control" || msgType === "stt_control") {
|
|
442
|
+
if (msgType === "mix_control" || msgType === "stt_control" || msgType === "voice_language_control") {
|
|
418
443
|
process.send?.(message);
|
|
419
444
|
return;
|
|
420
445
|
}
|
|
@@ -624,6 +649,10 @@ function defineAgent(handlers) {
|
|
|
624
649
|
handleSttControlAck(message);
|
|
625
650
|
return;
|
|
626
651
|
}
|
|
652
|
+
if (isVoiceLanguageControlAckMessage(message)) {
|
|
653
|
+
handleVoiceLanguageControlAck(message);
|
|
654
|
+
return;
|
|
655
|
+
}
|
|
627
656
|
if (isWebhookMessage(message)) {
|
|
628
657
|
void agentStartReady.then(() => handleWebhookMessage(message, handlers));
|
|
629
658
|
return;
|