@voicethere/agent 0.9.0 → 0.9.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.
- package/README.md +36 -21
- package/dist/agent.js +26 -0
- package/dist/index.d.ts +1 -1
- 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 +10 -1
- package/dist/protocol.d.ts.map +1 -1
- package/dist/protocol.js.map +1 -1
- package/dist/runtime.d.ts +26 -0
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +45 -2
- package/dist/runtime.js.map +1 -1
- package/dist/templates/echo/agent.js +20 -0
- package/dist/templates/echo-dc/agent.js +20 -0
- package/dist/templates/game-sync/agent.js +20 -0
- package/dist/templates/language-switch/agent.js +73 -11
- package/dist/templates/positional-tts/agent.js +20 -0
- package/dist/templates/recording-consent/agent.js +20 -0
- package/dist/templates/spatial-showcase/agent.js +20 -0
- package/dist/templates/voice-showcase/agent.js +20 -0
- package/dist/templates/voice-starter/agent.js +20 -0
- package/dist/templates/webhooks/agent.js +20 -0
- package/dist/templates/webhooks-redis/agent.js +20 -0
- package/dist/templates/world-sync/agent.js +20 -0
- package/dist/templates/world-sync-binary/agent.js +20 -0
- package/package.json +1 -1
- package/templates/README.md +30 -30
- package/templates/language-switch/README.md +11 -1
- package/templates/language-switch/agent.ts +68 -15
|
@@ -245,6 +245,8 @@ var peerEnvBySessionId = /* @__PURE__ */ new Map();
|
|
|
245
245
|
var recordingAvailableBySessionId = /* @__PURE__ */ new Map();
|
|
246
246
|
var conversationHistoryAvailableBySessionId = /* @__PURE__ */ new Map();
|
|
247
247
|
var mixAvailableBySessionId = /* @__PURE__ */ new Map();
|
|
248
|
+
var voiceLanguageSwitchAvailableBySessionId = /* @__PURE__ */ new Map();
|
|
249
|
+
var lastVoiceLanguageBySessionId = /* @__PURE__ */ new Map();
|
|
248
250
|
var ttsPoseAvailableBySessionId = /* @__PURE__ */ new Map();
|
|
249
251
|
var endedSessionIds = /* @__PURE__ */ new Set();
|
|
250
252
|
var PLAY_BYTES_MAX_DECODED_LENGTH = 64 * 1024;
|
|
@@ -366,6 +368,9 @@ function handleVoiceLanguageControlAck(message) {
|
|
|
366
368
|
return;
|
|
367
369
|
clearTimeout(pending.timer);
|
|
368
370
|
pendingVoiceLanguageAcks.delete(message.requestId);
|
|
371
|
+
if (message.ok && message.language?.trim()) {
|
|
372
|
+
lastVoiceLanguageBySessionId.set(message.sessionId, message.language.trim());
|
|
373
|
+
}
|
|
369
374
|
pending.resolve({
|
|
370
375
|
ok: message.ok,
|
|
371
376
|
reason: message.reason,
|
|
@@ -559,6 +564,7 @@ async function handleParentMessage(message, handlers) {
|
|
|
559
564
|
recordingAvailableBySessionId.set(message.sessionId, message.recordingAvailable ?? false);
|
|
560
565
|
conversationHistoryAvailableBySessionId.set(message.sessionId, message.conversationHistoryAvailable ?? false);
|
|
561
566
|
mixAvailableBySessionId.set(message.sessionId, message.mixAvailable ?? false);
|
|
567
|
+
voiceLanguageSwitchAvailableBySessionId.set(message.sessionId, message.voiceLanguageSwitchAvailable ?? false);
|
|
562
568
|
ttsPoseAvailableBySessionId.set(message.sessionId, message.ttsPoseAvailable ?? false);
|
|
563
569
|
const sessionStartInitDelayMs = resolveSessionStartInitDelayMs();
|
|
564
570
|
if (sessionStartInitDelayMs > 0) {
|
|
@@ -570,6 +576,7 @@ async function handleParentMessage(message, handlers) {
|
|
|
570
576
|
recordingAvailable: message.recordingAvailable ?? false,
|
|
571
577
|
conversationHistoryAvailable: message.conversationHistoryAvailable ?? false,
|
|
572
578
|
mixAvailable: message.mixAvailable ?? false,
|
|
579
|
+
voiceLanguageSwitchAvailable: message.voiceLanguageSwitchAvailable ?? false,
|
|
573
580
|
ttsPoseAvailable: message.ttsPoseAvailable ?? false
|
|
574
581
|
});
|
|
575
582
|
sendParentMessage({
|
|
@@ -588,12 +595,23 @@ async function handleParentMessage(message, handlers) {
|
|
|
588
595
|
if (message.event.type === "user_language") {
|
|
589
596
|
const language = resolveUserLanguageCode(message.event);
|
|
590
597
|
if (language) {
|
|
598
|
+
lastVoiceLanguageBySessionId.set(message.sessionId, language);
|
|
591
599
|
await handlers.onUserLanguage?.({
|
|
592
600
|
sessionId: message.sessionId,
|
|
593
601
|
language
|
|
594
602
|
});
|
|
595
603
|
}
|
|
596
604
|
}
|
|
605
|
+
if (message.event.type === "voice_language_changed") {
|
|
606
|
+
const language = resolveUserLanguageCode(message.event);
|
|
607
|
+
if (language) {
|
|
608
|
+
lastVoiceLanguageBySessionId.set(message.sessionId, language);
|
|
609
|
+
await handlers.onVoiceLanguageChanged?.({
|
|
610
|
+
sessionId: message.sessionId,
|
|
611
|
+
language
|
|
612
|
+
});
|
|
613
|
+
}
|
|
614
|
+
}
|
|
597
615
|
break;
|
|
598
616
|
case "data_channel_message":
|
|
599
617
|
await handlers.onDataChannelMessage?.({
|
|
@@ -620,6 +638,8 @@ async function handleParentMessage(message, handlers) {
|
|
|
620
638
|
recordingAvailableBySessionId.delete(message.sessionId);
|
|
621
639
|
conversationHistoryAvailableBySessionId.delete(message.sessionId);
|
|
622
640
|
mixAvailableBySessionId.delete(message.sessionId);
|
|
641
|
+
voiceLanguageSwitchAvailableBySessionId.delete(message.sessionId);
|
|
642
|
+
lastVoiceLanguageBySessionId.delete(message.sessionId);
|
|
623
643
|
ttsPoseAvailableBySessionId.delete(message.sessionId);
|
|
624
644
|
await (handlers.onClientLeave ?? handlers.onSessionEnd)?.({
|
|
625
645
|
sessionId: message.sessionId
|
|
@@ -242,6 +242,8 @@ var peerEnvBySessionId = /* @__PURE__ */ new Map();
|
|
|
242
242
|
var recordingAvailableBySessionId = /* @__PURE__ */ new Map();
|
|
243
243
|
var conversationHistoryAvailableBySessionId = /* @__PURE__ */ new Map();
|
|
244
244
|
var mixAvailableBySessionId = /* @__PURE__ */ new Map();
|
|
245
|
+
var voiceLanguageSwitchAvailableBySessionId = /* @__PURE__ */ new Map();
|
|
246
|
+
var lastVoiceLanguageBySessionId = /* @__PURE__ */ new Map();
|
|
245
247
|
var ttsPoseAvailableBySessionId = /* @__PURE__ */ new Map();
|
|
246
248
|
var endedSessionIds = /* @__PURE__ */ new Set();
|
|
247
249
|
var RECORDING_CONTROL_ACK_TIMEOUT_MS = 5e3;
|
|
@@ -363,6 +365,9 @@ function handleVoiceLanguageControlAck(message) {
|
|
|
363
365
|
return;
|
|
364
366
|
clearTimeout(pending.timer);
|
|
365
367
|
pendingVoiceLanguageAcks.delete(message.requestId);
|
|
368
|
+
if (message.ok && message.language?.trim()) {
|
|
369
|
+
lastVoiceLanguageBySessionId.set(message.sessionId, message.language.trim());
|
|
370
|
+
}
|
|
366
371
|
pending.resolve({
|
|
367
372
|
ok: message.ok,
|
|
368
373
|
reason: message.reason,
|
|
@@ -544,6 +549,7 @@ async function handleParentMessage(message, handlers) {
|
|
|
544
549
|
recordingAvailableBySessionId.set(message.sessionId, message.recordingAvailable ?? false);
|
|
545
550
|
conversationHistoryAvailableBySessionId.set(message.sessionId, message.conversationHistoryAvailable ?? false);
|
|
546
551
|
mixAvailableBySessionId.set(message.sessionId, message.mixAvailable ?? false);
|
|
552
|
+
voiceLanguageSwitchAvailableBySessionId.set(message.sessionId, message.voiceLanguageSwitchAvailable ?? false);
|
|
547
553
|
ttsPoseAvailableBySessionId.set(message.sessionId, message.ttsPoseAvailable ?? false);
|
|
548
554
|
const sessionStartInitDelayMs = resolveSessionStartInitDelayMs();
|
|
549
555
|
if (sessionStartInitDelayMs > 0) {
|
|
@@ -555,6 +561,7 @@ async function handleParentMessage(message, handlers) {
|
|
|
555
561
|
recordingAvailable: message.recordingAvailable ?? false,
|
|
556
562
|
conversationHistoryAvailable: message.conversationHistoryAvailable ?? false,
|
|
557
563
|
mixAvailable: message.mixAvailable ?? false,
|
|
564
|
+
voiceLanguageSwitchAvailable: message.voiceLanguageSwitchAvailable ?? false,
|
|
558
565
|
ttsPoseAvailable: message.ttsPoseAvailable ?? false
|
|
559
566
|
});
|
|
560
567
|
sendParentMessage({
|
|
@@ -573,12 +580,23 @@ async function handleParentMessage(message, handlers) {
|
|
|
573
580
|
if (message.event.type === "user_language") {
|
|
574
581
|
const language = resolveUserLanguageCode(message.event);
|
|
575
582
|
if (language) {
|
|
583
|
+
lastVoiceLanguageBySessionId.set(message.sessionId, language);
|
|
576
584
|
await handlers.onUserLanguage?.({
|
|
577
585
|
sessionId: message.sessionId,
|
|
578
586
|
language
|
|
579
587
|
});
|
|
580
588
|
}
|
|
581
589
|
}
|
|
590
|
+
if (message.event.type === "voice_language_changed") {
|
|
591
|
+
const language = resolveUserLanguageCode(message.event);
|
|
592
|
+
if (language) {
|
|
593
|
+
lastVoiceLanguageBySessionId.set(message.sessionId, language);
|
|
594
|
+
await handlers.onVoiceLanguageChanged?.({
|
|
595
|
+
sessionId: message.sessionId,
|
|
596
|
+
language
|
|
597
|
+
});
|
|
598
|
+
}
|
|
599
|
+
}
|
|
582
600
|
break;
|
|
583
601
|
case "data_channel_message":
|
|
584
602
|
await handlers.onDataChannelMessage?.({
|
|
@@ -605,6 +623,8 @@ async function handleParentMessage(message, handlers) {
|
|
|
605
623
|
recordingAvailableBySessionId.delete(message.sessionId);
|
|
606
624
|
conversationHistoryAvailableBySessionId.delete(message.sessionId);
|
|
607
625
|
mixAvailableBySessionId.delete(message.sessionId);
|
|
626
|
+
voiceLanguageSwitchAvailableBySessionId.delete(message.sessionId);
|
|
627
|
+
lastVoiceLanguageBySessionId.delete(message.sessionId);
|
|
608
628
|
ttsPoseAvailableBySessionId.delete(message.sessionId);
|
|
609
629
|
await (handlers.onClientLeave ?? handlers.onSessionEnd)?.({
|
|
610
630
|
sessionId: message.sessionId
|
|
@@ -246,6 +246,8 @@ var peerEnvBySessionId = /* @__PURE__ */ new Map();
|
|
|
246
246
|
var recordingAvailableBySessionId = /* @__PURE__ */ new Map();
|
|
247
247
|
var conversationHistoryAvailableBySessionId = /* @__PURE__ */ new Map();
|
|
248
248
|
var mixAvailableBySessionId = /* @__PURE__ */ new Map();
|
|
249
|
+
var voiceLanguageSwitchAvailableBySessionId = /* @__PURE__ */ new Map();
|
|
250
|
+
var lastVoiceLanguageBySessionId = /* @__PURE__ */ new Map();
|
|
249
251
|
var ttsPoseAvailableBySessionId = /* @__PURE__ */ new Map();
|
|
250
252
|
var endedSessionIds = /* @__PURE__ */ new Set();
|
|
251
253
|
var PLAY_CONTROL_ACK_TIMEOUT_MS = 5e3;
|
|
@@ -369,6 +371,9 @@ function handleVoiceLanguageControlAck(message) {
|
|
|
369
371
|
return;
|
|
370
372
|
clearTimeout(pending.timer);
|
|
371
373
|
pendingVoiceLanguageAcks.delete(message.requestId);
|
|
374
|
+
if (message.ok && message.language?.trim()) {
|
|
375
|
+
lastVoiceLanguageBySessionId.set(message.sessionId, message.language.trim());
|
|
376
|
+
}
|
|
372
377
|
pending.resolve({
|
|
373
378
|
ok: message.ok,
|
|
374
379
|
reason: message.reason,
|
|
@@ -574,6 +579,7 @@ async function handleParentMessage(message, handlers) {
|
|
|
574
579
|
recordingAvailableBySessionId.set(message.sessionId, message.recordingAvailable ?? false);
|
|
575
580
|
conversationHistoryAvailableBySessionId.set(message.sessionId, message.conversationHistoryAvailable ?? false);
|
|
576
581
|
mixAvailableBySessionId.set(message.sessionId, message.mixAvailable ?? false);
|
|
582
|
+
voiceLanguageSwitchAvailableBySessionId.set(message.sessionId, message.voiceLanguageSwitchAvailable ?? false);
|
|
577
583
|
ttsPoseAvailableBySessionId.set(message.sessionId, message.ttsPoseAvailable ?? false);
|
|
578
584
|
const sessionStartInitDelayMs = resolveSessionStartInitDelayMs();
|
|
579
585
|
if (sessionStartInitDelayMs > 0) {
|
|
@@ -585,6 +591,7 @@ async function handleParentMessage(message, handlers) {
|
|
|
585
591
|
recordingAvailable: message.recordingAvailable ?? false,
|
|
586
592
|
conversationHistoryAvailable: message.conversationHistoryAvailable ?? false,
|
|
587
593
|
mixAvailable: message.mixAvailable ?? false,
|
|
594
|
+
voiceLanguageSwitchAvailable: message.voiceLanguageSwitchAvailable ?? false,
|
|
588
595
|
ttsPoseAvailable: message.ttsPoseAvailable ?? false
|
|
589
596
|
});
|
|
590
597
|
sendParentMessage({
|
|
@@ -603,12 +610,23 @@ async function handleParentMessage(message, handlers) {
|
|
|
603
610
|
if (message.event.type === "user_language") {
|
|
604
611
|
const language = resolveUserLanguageCode(message.event);
|
|
605
612
|
if (language) {
|
|
613
|
+
lastVoiceLanguageBySessionId.set(message.sessionId, language);
|
|
606
614
|
await handlers.onUserLanguage?.({
|
|
607
615
|
sessionId: message.sessionId,
|
|
608
616
|
language
|
|
609
617
|
});
|
|
610
618
|
}
|
|
611
619
|
}
|
|
620
|
+
if (message.event.type === "voice_language_changed") {
|
|
621
|
+
const language = resolveUserLanguageCode(message.event);
|
|
622
|
+
if (language) {
|
|
623
|
+
lastVoiceLanguageBySessionId.set(message.sessionId, language);
|
|
624
|
+
await handlers.onVoiceLanguageChanged?.({
|
|
625
|
+
sessionId: message.sessionId,
|
|
626
|
+
language
|
|
627
|
+
});
|
|
628
|
+
}
|
|
629
|
+
}
|
|
612
630
|
break;
|
|
613
631
|
case "data_channel_message":
|
|
614
632
|
await handlers.onDataChannelMessage?.({
|
|
@@ -635,6 +653,8 @@ async function handleParentMessage(message, handlers) {
|
|
|
635
653
|
recordingAvailableBySessionId.delete(message.sessionId);
|
|
636
654
|
conversationHistoryAvailableBySessionId.delete(message.sessionId);
|
|
637
655
|
mixAvailableBySessionId.delete(message.sessionId);
|
|
656
|
+
voiceLanguageSwitchAvailableBySessionId.delete(message.sessionId);
|
|
657
|
+
lastVoiceLanguageBySessionId.delete(message.sessionId);
|
|
638
658
|
ttsPoseAvailableBySessionId.delete(message.sessionId);
|
|
639
659
|
await (handlers.onClientLeave ?? handlers.onSessionEnd)?.({
|
|
640
660
|
sessionId: message.sessionId
|
|
@@ -242,6 +242,8 @@ var peerEnvBySessionId = /* @__PURE__ */ new Map();
|
|
|
242
242
|
var recordingAvailableBySessionId = /* @__PURE__ */ new Map();
|
|
243
243
|
var conversationHistoryAvailableBySessionId = /* @__PURE__ */ new Map();
|
|
244
244
|
var mixAvailableBySessionId = /* @__PURE__ */ new Map();
|
|
245
|
+
var voiceLanguageSwitchAvailableBySessionId = /* @__PURE__ */ new Map();
|
|
246
|
+
var lastVoiceLanguageBySessionId = /* @__PURE__ */ new Map();
|
|
245
247
|
var ttsPoseAvailableBySessionId = /* @__PURE__ */ new Map();
|
|
246
248
|
var endedSessionIds = /* @__PURE__ */ new Set();
|
|
247
249
|
var PLAY_BYTES_MAX_DECODED_LENGTH = 64 * 1024;
|
|
@@ -362,6 +364,9 @@ function handleVoiceLanguageControlAck(message) {
|
|
|
362
364
|
return;
|
|
363
365
|
clearTimeout(pending.timer);
|
|
364
366
|
pendingVoiceLanguageAcks.delete(message.requestId);
|
|
367
|
+
if (message.ok && message.language?.trim()) {
|
|
368
|
+
lastVoiceLanguageBySessionId.set(message.sessionId, message.language.trim());
|
|
369
|
+
}
|
|
365
370
|
pending.resolve({
|
|
366
371
|
ok: message.ok,
|
|
367
372
|
reason: message.reason,
|
|
@@ -540,6 +545,7 @@ async function handleParentMessage(message, handlers) {
|
|
|
540
545
|
recordingAvailableBySessionId.set(message.sessionId, message.recordingAvailable ?? false);
|
|
541
546
|
conversationHistoryAvailableBySessionId.set(message.sessionId, message.conversationHistoryAvailable ?? false);
|
|
542
547
|
mixAvailableBySessionId.set(message.sessionId, message.mixAvailable ?? false);
|
|
548
|
+
voiceLanguageSwitchAvailableBySessionId.set(message.sessionId, message.voiceLanguageSwitchAvailable ?? false);
|
|
543
549
|
ttsPoseAvailableBySessionId.set(message.sessionId, message.ttsPoseAvailable ?? false);
|
|
544
550
|
const sessionStartInitDelayMs = resolveSessionStartInitDelayMs();
|
|
545
551
|
if (sessionStartInitDelayMs > 0) {
|
|
@@ -551,6 +557,7 @@ async function handleParentMessage(message, handlers) {
|
|
|
551
557
|
recordingAvailable: message.recordingAvailable ?? false,
|
|
552
558
|
conversationHistoryAvailable: message.conversationHistoryAvailable ?? false,
|
|
553
559
|
mixAvailable: message.mixAvailable ?? false,
|
|
560
|
+
voiceLanguageSwitchAvailable: message.voiceLanguageSwitchAvailable ?? false,
|
|
554
561
|
ttsPoseAvailable: message.ttsPoseAvailable ?? false
|
|
555
562
|
});
|
|
556
563
|
sendParentMessage({
|
|
@@ -569,12 +576,23 @@ async function handleParentMessage(message, handlers) {
|
|
|
569
576
|
if (message.event.type === "user_language") {
|
|
570
577
|
const language = resolveUserLanguageCode(message.event);
|
|
571
578
|
if (language) {
|
|
579
|
+
lastVoiceLanguageBySessionId.set(message.sessionId, language);
|
|
572
580
|
await handlers.onUserLanguage?.({
|
|
573
581
|
sessionId: message.sessionId,
|
|
574
582
|
language
|
|
575
583
|
});
|
|
576
584
|
}
|
|
577
585
|
}
|
|
586
|
+
if (message.event.type === "voice_language_changed") {
|
|
587
|
+
const language = resolveUserLanguageCode(message.event);
|
|
588
|
+
if (language) {
|
|
589
|
+
lastVoiceLanguageBySessionId.set(message.sessionId, language);
|
|
590
|
+
await handlers.onVoiceLanguageChanged?.({
|
|
591
|
+
sessionId: message.sessionId,
|
|
592
|
+
language
|
|
593
|
+
});
|
|
594
|
+
}
|
|
595
|
+
}
|
|
578
596
|
break;
|
|
579
597
|
case "data_channel_message":
|
|
580
598
|
await handlers.onDataChannelMessage?.({
|
|
@@ -601,6 +619,8 @@ async function handleParentMessage(message, handlers) {
|
|
|
601
619
|
recordingAvailableBySessionId.delete(message.sessionId);
|
|
602
620
|
conversationHistoryAvailableBySessionId.delete(message.sessionId);
|
|
603
621
|
mixAvailableBySessionId.delete(message.sessionId);
|
|
622
|
+
voiceLanguageSwitchAvailableBySessionId.delete(message.sessionId);
|
|
623
|
+
lastVoiceLanguageBySessionId.delete(message.sessionId);
|
|
604
624
|
ttsPoseAvailableBySessionId.delete(message.sessionId);
|
|
605
625
|
await (handlers.onClientLeave ?? handlers.onSessionEnd)?.({
|
|
606
626
|
sessionId: message.sessionId
|
|
@@ -242,6 +242,8 @@ var peerEnvBySessionId = /* @__PURE__ */ new Map();
|
|
|
242
242
|
var recordingAvailableBySessionId = /* @__PURE__ */ new Map();
|
|
243
243
|
var conversationHistoryAvailableBySessionId = /* @__PURE__ */ new Map();
|
|
244
244
|
var mixAvailableBySessionId = /* @__PURE__ */ new Map();
|
|
245
|
+
var voiceLanguageSwitchAvailableBySessionId = /* @__PURE__ */ new Map();
|
|
246
|
+
var lastVoiceLanguageBySessionId = /* @__PURE__ */ new Map();
|
|
245
247
|
var ttsPoseAvailableBySessionId = /* @__PURE__ */ new Map();
|
|
246
248
|
var endedSessionIds = /* @__PURE__ */ new Set();
|
|
247
249
|
var PLAY_BYTES_MAX_DECODED_LENGTH = 64 * 1024;
|
|
@@ -362,6 +364,9 @@ function handleVoiceLanguageControlAck(message) {
|
|
|
362
364
|
return;
|
|
363
365
|
clearTimeout(pending.timer);
|
|
364
366
|
pendingVoiceLanguageAcks.delete(message.requestId);
|
|
367
|
+
if (message.ok && message.language?.trim()) {
|
|
368
|
+
lastVoiceLanguageBySessionId.set(message.sessionId, message.language.trim());
|
|
369
|
+
}
|
|
365
370
|
pending.resolve({
|
|
366
371
|
ok: message.ok,
|
|
367
372
|
reason: message.reason,
|
|
@@ -540,6 +545,7 @@ async function handleParentMessage(message, handlers) {
|
|
|
540
545
|
recordingAvailableBySessionId.set(message.sessionId, message.recordingAvailable ?? false);
|
|
541
546
|
conversationHistoryAvailableBySessionId.set(message.sessionId, message.conversationHistoryAvailable ?? false);
|
|
542
547
|
mixAvailableBySessionId.set(message.sessionId, message.mixAvailable ?? false);
|
|
548
|
+
voiceLanguageSwitchAvailableBySessionId.set(message.sessionId, message.voiceLanguageSwitchAvailable ?? false);
|
|
543
549
|
ttsPoseAvailableBySessionId.set(message.sessionId, message.ttsPoseAvailable ?? false);
|
|
544
550
|
const sessionStartInitDelayMs = resolveSessionStartInitDelayMs();
|
|
545
551
|
if (sessionStartInitDelayMs > 0) {
|
|
@@ -551,6 +557,7 @@ async function handleParentMessage(message, handlers) {
|
|
|
551
557
|
recordingAvailable: message.recordingAvailable ?? false,
|
|
552
558
|
conversationHistoryAvailable: message.conversationHistoryAvailable ?? false,
|
|
553
559
|
mixAvailable: message.mixAvailable ?? false,
|
|
560
|
+
voiceLanguageSwitchAvailable: message.voiceLanguageSwitchAvailable ?? false,
|
|
554
561
|
ttsPoseAvailable: message.ttsPoseAvailable ?? false
|
|
555
562
|
});
|
|
556
563
|
sendParentMessage({
|
|
@@ -569,12 +576,23 @@ async function handleParentMessage(message, handlers) {
|
|
|
569
576
|
if (message.event.type === "user_language") {
|
|
570
577
|
const language = resolveUserLanguageCode(message.event);
|
|
571
578
|
if (language) {
|
|
579
|
+
lastVoiceLanguageBySessionId.set(message.sessionId, language);
|
|
572
580
|
await handlers.onUserLanguage?.({
|
|
573
581
|
sessionId: message.sessionId,
|
|
574
582
|
language
|
|
575
583
|
});
|
|
576
584
|
}
|
|
577
585
|
}
|
|
586
|
+
if (message.event.type === "voice_language_changed") {
|
|
587
|
+
const language = resolveUserLanguageCode(message.event);
|
|
588
|
+
if (language) {
|
|
589
|
+
lastVoiceLanguageBySessionId.set(message.sessionId, language);
|
|
590
|
+
await handlers.onVoiceLanguageChanged?.({
|
|
591
|
+
sessionId: message.sessionId,
|
|
592
|
+
language
|
|
593
|
+
});
|
|
594
|
+
}
|
|
595
|
+
}
|
|
578
596
|
break;
|
|
579
597
|
case "data_channel_message":
|
|
580
598
|
await handlers.onDataChannelMessage?.({
|
|
@@ -601,6 +619,8 @@ async function handleParentMessage(message, handlers) {
|
|
|
601
619
|
recordingAvailableBySessionId.delete(message.sessionId);
|
|
602
620
|
conversationHistoryAvailableBySessionId.delete(message.sessionId);
|
|
603
621
|
mixAvailableBySessionId.delete(message.sessionId);
|
|
622
|
+
voiceLanguageSwitchAvailableBySessionId.delete(message.sessionId);
|
|
623
|
+
lastVoiceLanguageBySessionId.delete(message.sessionId);
|
|
604
624
|
ttsPoseAvailableBySessionId.delete(message.sessionId);
|
|
605
625
|
await (handlers.onClientLeave ?? handlers.onSessionEnd)?.({
|
|
606
626
|
sessionId: message.sessionId
|
|
@@ -245,6 +245,8 @@ var peerEnvBySessionId = /* @__PURE__ */ new Map();
|
|
|
245
245
|
var recordingAvailableBySessionId = /* @__PURE__ */ new Map();
|
|
246
246
|
var conversationHistoryAvailableBySessionId = /* @__PURE__ */ new Map();
|
|
247
247
|
var mixAvailableBySessionId = /* @__PURE__ */ new Map();
|
|
248
|
+
var voiceLanguageSwitchAvailableBySessionId = /* @__PURE__ */ new Map();
|
|
249
|
+
var lastVoiceLanguageBySessionId = /* @__PURE__ */ new Map();
|
|
248
250
|
var ttsPoseAvailableBySessionId = /* @__PURE__ */ new Map();
|
|
249
251
|
var endedSessionIds = /* @__PURE__ */ new Set();
|
|
250
252
|
var PLAY_BYTES_MAX_DECODED_LENGTH = 64 * 1024;
|
|
@@ -365,6 +367,9 @@ function handleVoiceLanguageControlAck(message) {
|
|
|
365
367
|
return;
|
|
366
368
|
clearTimeout(pending.timer);
|
|
367
369
|
pendingVoiceLanguageAcks.delete(message.requestId);
|
|
370
|
+
if (message.ok && message.language?.trim()) {
|
|
371
|
+
lastVoiceLanguageBySessionId.set(message.sessionId, message.language.trim());
|
|
372
|
+
}
|
|
368
373
|
pending.resolve({
|
|
369
374
|
ok: message.ok,
|
|
370
375
|
reason: message.reason,
|
|
@@ -543,6 +548,7 @@ async function handleParentMessage(message, handlers) {
|
|
|
543
548
|
recordingAvailableBySessionId.set(message.sessionId, message.recordingAvailable ?? false);
|
|
544
549
|
conversationHistoryAvailableBySessionId.set(message.sessionId, message.conversationHistoryAvailable ?? false);
|
|
545
550
|
mixAvailableBySessionId.set(message.sessionId, message.mixAvailable ?? false);
|
|
551
|
+
voiceLanguageSwitchAvailableBySessionId.set(message.sessionId, message.voiceLanguageSwitchAvailable ?? false);
|
|
546
552
|
ttsPoseAvailableBySessionId.set(message.sessionId, message.ttsPoseAvailable ?? false);
|
|
547
553
|
const sessionStartInitDelayMs = resolveSessionStartInitDelayMs();
|
|
548
554
|
if (sessionStartInitDelayMs > 0) {
|
|
@@ -554,6 +560,7 @@ async function handleParentMessage(message, handlers) {
|
|
|
554
560
|
recordingAvailable: message.recordingAvailable ?? false,
|
|
555
561
|
conversationHistoryAvailable: message.conversationHistoryAvailable ?? false,
|
|
556
562
|
mixAvailable: message.mixAvailable ?? false,
|
|
563
|
+
voiceLanguageSwitchAvailable: message.voiceLanguageSwitchAvailable ?? false,
|
|
557
564
|
ttsPoseAvailable: message.ttsPoseAvailable ?? false
|
|
558
565
|
});
|
|
559
566
|
sendParentMessage({
|
|
@@ -572,12 +579,23 @@ async function handleParentMessage(message, handlers) {
|
|
|
572
579
|
if (message.event.type === "user_language") {
|
|
573
580
|
const language = resolveUserLanguageCode(message.event);
|
|
574
581
|
if (language) {
|
|
582
|
+
lastVoiceLanguageBySessionId.set(message.sessionId, language);
|
|
575
583
|
await handlers.onUserLanguage?.({
|
|
576
584
|
sessionId: message.sessionId,
|
|
577
585
|
language
|
|
578
586
|
});
|
|
579
587
|
}
|
|
580
588
|
}
|
|
589
|
+
if (message.event.type === "voice_language_changed") {
|
|
590
|
+
const language = resolveUserLanguageCode(message.event);
|
|
591
|
+
if (language) {
|
|
592
|
+
lastVoiceLanguageBySessionId.set(message.sessionId, language);
|
|
593
|
+
await handlers.onVoiceLanguageChanged?.({
|
|
594
|
+
sessionId: message.sessionId,
|
|
595
|
+
language
|
|
596
|
+
});
|
|
597
|
+
}
|
|
598
|
+
}
|
|
581
599
|
break;
|
|
582
600
|
case "data_channel_message":
|
|
583
601
|
await handlers.onDataChannelMessage?.({
|
|
@@ -604,6 +622,8 @@ async function handleParentMessage(message, handlers) {
|
|
|
604
622
|
recordingAvailableBySessionId.delete(message.sessionId);
|
|
605
623
|
conversationHistoryAvailableBySessionId.delete(message.sessionId);
|
|
606
624
|
mixAvailableBySessionId.delete(message.sessionId);
|
|
625
|
+
voiceLanguageSwitchAvailableBySessionId.delete(message.sessionId);
|
|
626
|
+
lastVoiceLanguageBySessionId.delete(message.sessionId);
|
|
607
627
|
ttsPoseAvailableBySessionId.delete(message.sessionId);
|
|
608
628
|
await (handlers.onClientLeave ?? handlers.onSessionEnd)?.({
|
|
609
629
|
sessionId: message.sessionId
|
|
@@ -10997,6 +10997,8 @@ var peerEnvBySessionId = /* @__PURE__ */ new Map();
|
|
|
10997
10997
|
var recordingAvailableBySessionId = /* @__PURE__ */ new Map();
|
|
10998
10998
|
var conversationHistoryAvailableBySessionId = /* @__PURE__ */ new Map();
|
|
10999
10999
|
var mixAvailableBySessionId = /* @__PURE__ */ new Map();
|
|
11000
|
+
var voiceLanguageSwitchAvailableBySessionId = /* @__PURE__ */ new Map();
|
|
11001
|
+
var lastVoiceLanguageBySessionId = /* @__PURE__ */ new Map();
|
|
11000
11002
|
var ttsPoseAvailableBySessionId = /* @__PURE__ */ new Map();
|
|
11001
11003
|
var endedSessionIds = /* @__PURE__ */ new Set();
|
|
11002
11004
|
var PLAY_BYTES_MAX_DECODED_LENGTH = 64 * 1024;
|
|
@@ -11117,6 +11119,9 @@ function handleVoiceLanguageControlAck(message) {
|
|
|
11117
11119
|
return;
|
|
11118
11120
|
clearTimeout(pending.timer);
|
|
11119
11121
|
pendingVoiceLanguageAcks.delete(message.requestId);
|
|
11122
|
+
if (message.ok && message.language?.trim()) {
|
|
11123
|
+
lastVoiceLanguageBySessionId.set(message.sessionId, message.language.trim());
|
|
11124
|
+
}
|
|
11120
11125
|
pending.resolve({
|
|
11121
11126
|
ok: message.ok,
|
|
11122
11127
|
reason: message.reason,
|
|
@@ -11295,6 +11300,7 @@ async function handleParentMessage(message, handlers) {
|
|
|
11295
11300
|
recordingAvailableBySessionId.set(message.sessionId, message.recordingAvailable ?? false);
|
|
11296
11301
|
conversationHistoryAvailableBySessionId.set(message.sessionId, message.conversationHistoryAvailable ?? false);
|
|
11297
11302
|
mixAvailableBySessionId.set(message.sessionId, message.mixAvailable ?? false);
|
|
11303
|
+
voiceLanguageSwitchAvailableBySessionId.set(message.sessionId, message.voiceLanguageSwitchAvailable ?? false);
|
|
11298
11304
|
ttsPoseAvailableBySessionId.set(message.sessionId, message.ttsPoseAvailable ?? false);
|
|
11299
11305
|
const sessionStartInitDelayMs = resolveSessionStartInitDelayMs();
|
|
11300
11306
|
if (sessionStartInitDelayMs > 0) {
|
|
@@ -11306,6 +11312,7 @@ async function handleParentMessage(message, handlers) {
|
|
|
11306
11312
|
recordingAvailable: message.recordingAvailable ?? false,
|
|
11307
11313
|
conversationHistoryAvailable: message.conversationHistoryAvailable ?? false,
|
|
11308
11314
|
mixAvailable: message.mixAvailable ?? false,
|
|
11315
|
+
voiceLanguageSwitchAvailable: message.voiceLanguageSwitchAvailable ?? false,
|
|
11309
11316
|
ttsPoseAvailable: message.ttsPoseAvailable ?? false
|
|
11310
11317
|
});
|
|
11311
11318
|
sendParentMessage({
|
|
@@ -11324,12 +11331,23 @@ async function handleParentMessage(message, handlers) {
|
|
|
11324
11331
|
if (message.event.type === "user_language") {
|
|
11325
11332
|
const language = resolveUserLanguageCode(message.event);
|
|
11326
11333
|
if (language) {
|
|
11334
|
+
lastVoiceLanguageBySessionId.set(message.sessionId, language);
|
|
11327
11335
|
await handlers.onUserLanguage?.({
|
|
11328
11336
|
sessionId: message.sessionId,
|
|
11329
11337
|
language
|
|
11330
11338
|
});
|
|
11331
11339
|
}
|
|
11332
11340
|
}
|
|
11341
|
+
if (message.event.type === "voice_language_changed") {
|
|
11342
|
+
const language = resolveUserLanguageCode(message.event);
|
|
11343
|
+
if (language) {
|
|
11344
|
+
lastVoiceLanguageBySessionId.set(message.sessionId, language);
|
|
11345
|
+
await handlers.onVoiceLanguageChanged?.({
|
|
11346
|
+
sessionId: message.sessionId,
|
|
11347
|
+
language
|
|
11348
|
+
});
|
|
11349
|
+
}
|
|
11350
|
+
}
|
|
11333
11351
|
break;
|
|
11334
11352
|
case "data_channel_message":
|
|
11335
11353
|
await handlers.onDataChannelMessage?.({
|
|
@@ -11356,6 +11374,8 @@ async function handleParentMessage(message, handlers) {
|
|
|
11356
11374
|
recordingAvailableBySessionId.delete(message.sessionId);
|
|
11357
11375
|
conversationHistoryAvailableBySessionId.delete(message.sessionId);
|
|
11358
11376
|
mixAvailableBySessionId.delete(message.sessionId);
|
|
11377
|
+
voiceLanguageSwitchAvailableBySessionId.delete(message.sessionId);
|
|
11378
|
+
lastVoiceLanguageBySessionId.delete(message.sessionId);
|
|
11359
11379
|
ttsPoseAvailableBySessionId.delete(message.sessionId);
|
|
11360
11380
|
await (handlers.onClientLeave ?? handlers.onSessionEnd)?.({
|
|
11361
11381
|
sessionId: message.sessionId
|
|
@@ -242,6 +242,8 @@ var peerEnvBySessionId = /* @__PURE__ */ new Map();
|
|
|
242
242
|
var recordingAvailableBySessionId = /* @__PURE__ */ new Map();
|
|
243
243
|
var conversationHistoryAvailableBySessionId = /* @__PURE__ */ new Map();
|
|
244
244
|
var mixAvailableBySessionId = /* @__PURE__ */ new Map();
|
|
245
|
+
var voiceLanguageSwitchAvailableBySessionId = /* @__PURE__ */ new Map();
|
|
246
|
+
var lastVoiceLanguageBySessionId = /* @__PURE__ */ new Map();
|
|
245
247
|
var ttsPoseAvailableBySessionId = /* @__PURE__ */ new Map();
|
|
246
248
|
var endedSessionIds = /* @__PURE__ */ new Set();
|
|
247
249
|
var PLAY_BYTES_MAX_DECODED_LENGTH = 64 * 1024;
|
|
@@ -362,6 +364,9 @@ function handleVoiceLanguageControlAck(message) {
|
|
|
362
364
|
return;
|
|
363
365
|
clearTimeout(pending.timer);
|
|
364
366
|
pendingVoiceLanguageAcks.delete(message.requestId);
|
|
367
|
+
if (message.ok && message.language?.trim()) {
|
|
368
|
+
lastVoiceLanguageBySessionId.set(message.sessionId, message.language.trim());
|
|
369
|
+
}
|
|
365
370
|
pending.resolve({
|
|
366
371
|
ok: message.ok,
|
|
367
372
|
reason: message.reason,
|
|
@@ -540,6 +545,7 @@ async function handleParentMessage(message, handlers) {
|
|
|
540
545
|
recordingAvailableBySessionId.set(message.sessionId, message.recordingAvailable ?? false);
|
|
541
546
|
conversationHistoryAvailableBySessionId.set(message.sessionId, message.conversationHistoryAvailable ?? false);
|
|
542
547
|
mixAvailableBySessionId.set(message.sessionId, message.mixAvailable ?? false);
|
|
548
|
+
voiceLanguageSwitchAvailableBySessionId.set(message.sessionId, message.voiceLanguageSwitchAvailable ?? false);
|
|
543
549
|
ttsPoseAvailableBySessionId.set(message.sessionId, message.ttsPoseAvailable ?? false);
|
|
544
550
|
const sessionStartInitDelayMs = resolveSessionStartInitDelayMs();
|
|
545
551
|
if (sessionStartInitDelayMs > 0) {
|
|
@@ -551,6 +557,7 @@ async function handleParentMessage(message, handlers) {
|
|
|
551
557
|
recordingAvailable: message.recordingAvailable ?? false,
|
|
552
558
|
conversationHistoryAvailable: message.conversationHistoryAvailable ?? false,
|
|
553
559
|
mixAvailable: message.mixAvailable ?? false,
|
|
560
|
+
voiceLanguageSwitchAvailable: message.voiceLanguageSwitchAvailable ?? false,
|
|
554
561
|
ttsPoseAvailable: message.ttsPoseAvailable ?? false
|
|
555
562
|
});
|
|
556
563
|
sendParentMessage({
|
|
@@ -569,12 +576,23 @@ async function handleParentMessage(message, handlers) {
|
|
|
569
576
|
if (message.event.type === "user_language") {
|
|
570
577
|
const language = resolveUserLanguageCode(message.event);
|
|
571
578
|
if (language) {
|
|
579
|
+
lastVoiceLanguageBySessionId.set(message.sessionId, language);
|
|
572
580
|
await handlers.onUserLanguage?.({
|
|
573
581
|
sessionId: message.sessionId,
|
|
574
582
|
language
|
|
575
583
|
});
|
|
576
584
|
}
|
|
577
585
|
}
|
|
586
|
+
if (message.event.type === "voice_language_changed") {
|
|
587
|
+
const language = resolveUserLanguageCode(message.event);
|
|
588
|
+
if (language) {
|
|
589
|
+
lastVoiceLanguageBySessionId.set(message.sessionId, language);
|
|
590
|
+
await handlers.onVoiceLanguageChanged?.({
|
|
591
|
+
sessionId: message.sessionId,
|
|
592
|
+
language
|
|
593
|
+
});
|
|
594
|
+
}
|
|
595
|
+
}
|
|
578
596
|
break;
|
|
579
597
|
case "data_channel_message":
|
|
580
598
|
await handlers.onDataChannelMessage?.({
|
|
@@ -601,6 +619,8 @@ async function handleParentMessage(message, handlers) {
|
|
|
601
619
|
recordingAvailableBySessionId.delete(message.sessionId);
|
|
602
620
|
conversationHistoryAvailableBySessionId.delete(message.sessionId);
|
|
603
621
|
mixAvailableBySessionId.delete(message.sessionId);
|
|
622
|
+
voiceLanguageSwitchAvailableBySessionId.delete(message.sessionId);
|
|
623
|
+
lastVoiceLanguageBySessionId.delete(message.sessionId);
|
|
604
624
|
ttsPoseAvailableBySessionId.delete(message.sessionId);
|
|
605
625
|
await (handlers.onClientLeave ?? handlers.onSessionEnd)?.({
|
|
606
626
|
sessionId: message.sessionId
|
|
@@ -242,6 +242,8 @@ var peerEnvBySessionId = /* @__PURE__ */ new Map();
|
|
|
242
242
|
var recordingAvailableBySessionId = /* @__PURE__ */ new Map();
|
|
243
243
|
var conversationHistoryAvailableBySessionId = /* @__PURE__ */ new Map();
|
|
244
244
|
var mixAvailableBySessionId = /* @__PURE__ */ new Map();
|
|
245
|
+
var voiceLanguageSwitchAvailableBySessionId = /* @__PURE__ */ new Map();
|
|
246
|
+
var lastVoiceLanguageBySessionId = /* @__PURE__ */ new Map();
|
|
245
247
|
var ttsPoseAvailableBySessionId = /* @__PURE__ */ new Map();
|
|
246
248
|
var endedSessionIds = /* @__PURE__ */ new Set();
|
|
247
249
|
var PLAY_BYTES_MAX_DECODED_LENGTH = 64 * 1024;
|
|
@@ -362,6 +364,9 @@ function handleVoiceLanguageControlAck(message) {
|
|
|
362
364
|
return;
|
|
363
365
|
clearTimeout(pending.timer);
|
|
364
366
|
pendingVoiceLanguageAcks.delete(message.requestId);
|
|
367
|
+
if (message.ok && message.language?.trim()) {
|
|
368
|
+
lastVoiceLanguageBySessionId.set(message.sessionId, message.language.trim());
|
|
369
|
+
}
|
|
365
370
|
pending.resolve({
|
|
366
371
|
ok: message.ok,
|
|
367
372
|
reason: message.reason,
|
|
@@ -540,6 +545,7 @@ async function handleParentMessage(message, handlers) {
|
|
|
540
545
|
recordingAvailableBySessionId.set(message.sessionId, message.recordingAvailable ?? false);
|
|
541
546
|
conversationHistoryAvailableBySessionId.set(message.sessionId, message.conversationHistoryAvailable ?? false);
|
|
542
547
|
mixAvailableBySessionId.set(message.sessionId, message.mixAvailable ?? false);
|
|
548
|
+
voiceLanguageSwitchAvailableBySessionId.set(message.sessionId, message.voiceLanguageSwitchAvailable ?? false);
|
|
543
549
|
ttsPoseAvailableBySessionId.set(message.sessionId, message.ttsPoseAvailable ?? false);
|
|
544
550
|
const sessionStartInitDelayMs = resolveSessionStartInitDelayMs();
|
|
545
551
|
if (sessionStartInitDelayMs > 0) {
|
|
@@ -551,6 +557,7 @@ async function handleParentMessage(message, handlers) {
|
|
|
551
557
|
recordingAvailable: message.recordingAvailable ?? false,
|
|
552
558
|
conversationHistoryAvailable: message.conversationHistoryAvailable ?? false,
|
|
553
559
|
mixAvailable: message.mixAvailable ?? false,
|
|
560
|
+
voiceLanguageSwitchAvailable: message.voiceLanguageSwitchAvailable ?? false,
|
|
554
561
|
ttsPoseAvailable: message.ttsPoseAvailable ?? false
|
|
555
562
|
});
|
|
556
563
|
sendParentMessage({
|
|
@@ -569,12 +576,23 @@ async function handleParentMessage(message, handlers) {
|
|
|
569
576
|
if (message.event.type === "user_language") {
|
|
570
577
|
const language = resolveUserLanguageCode(message.event);
|
|
571
578
|
if (language) {
|
|
579
|
+
lastVoiceLanguageBySessionId.set(message.sessionId, language);
|
|
572
580
|
await handlers.onUserLanguage?.({
|
|
573
581
|
sessionId: message.sessionId,
|
|
574
582
|
language
|
|
575
583
|
});
|
|
576
584
|
}
|
|
577
585
|
}
|
|
586
|
+
if (message.event.type === "voice_language_changed") {
|
|
587
|
+
const language = resolveUserLanguageCode(message.event);
|
|
588
|
+
if (language) {
|
|
589
|
+
lastVoiceLanguageBySessionId.set(message.sessionId, language);
|
|
590
|
+
await handlers.onVoiceLanguageChanged?.({
|
|
591
|
+
sessionId: message.sessionId,
|
|
592
|
+
language
|
|
593
|
+
});
|
|
594
|
+
}
|
|
595
|
+
}
|
|
578
596
|
break;
|
|
579
597
|
case "data_channel_message":
|
|
580
598
|
await handlers.onDataChannelMessage?.({
|
|
@@ -601,6 +619,8 @@ async function handleParentMessage(message, handlers) {
|
|
|
601
619
|
recordingAvailableBySessionId.delete(message.sessionId);
|
|
602
620
|
conversationHistoryAvailableBySessionId.delete(message.sessionId);
|
|
603
621
|
mixAvailableBySessionId.delete(message.sessionId);
|
|
622
|
+
voiceLanguageSwitchAvailableBySessionId.delete(message.sessionId);
|
|
623
|
+
lastVoiceLanguageBySessionId.delete(message.sessionId);
|
|
604
624
|
ttsPoseAvailableBySessionId.delete(message.sessionId);
|
|
605
625
|
await (handlers.onClientLeave ?? handlers.onSessionEnd)?.({
|
|
606
626
|
sessionId: message.sessionId
|