@voicethere/agent 0.6.0 → 0.7.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/dist/agent.js +64 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/protocol.d.ts +120 -2
- package/dist/protocol.d.ts.map +1 -1
- package/dist/protocol.js +4 -0
- package/dist/protocol.js.map +1 -1
- package/dist/runtime.d.ts +63 -1
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +259 -0
- package/dist/runtime.js.map +1 -1
- package/dist/templates/echo/agent.js +62 -2
- package/dist/templates/echo-dc/agent.js +62 -2
- package/dist/templates/game-sync/agent.js +62 -2
- package/dist/templates/positional-tts/agent.js +811 -0
- package/dist/templates/recording-consent/agent.js +62 -2
- package/dist/templates/registry.d.ts.map +1 -1
- package/dist/templates/registry.js +16 -0
- package/dist/templates/registry.js.map +1 -1
- package/dist/templates/voice-showcase/agent.js +62 -2
- package/dist/templates/voice-starter/agent.js +62 -2
- package/dist/templates/webhooks/agent.js +62 -2
- package/dist/templates/webhooks-redis/agent.js +62 -2
- package/package.json +4 -4
- package/templates/README.md +10 -4
- package/templates/mix-smoke.ts +352 -0
- package/templates/positional-tts/agent.ts +115 -0
- package/templates/positional-tts/orbit.ts +11 -0
package/dist/agent.js
CHANGED
|
@@ -135,6 +135,16 @@ function isRecordingControlAckMessage(value) {
|
|
|
135
135
|
const msg = value;
|
|
136
136
|
return msg.type === "recording_control_ack" && typeof msg.requestId === "string";
|
|
137
137
|
}
|
|
138
|
+
function isMixControlAckMessage(value) {
|
|
139
|
+
if (!value || typeof value !== "object") return false;
|
|
140
|
+
const msg = value;
|
|
141
|
+
return msg.type === "mix_control_ack" && typeof msg.requestId === "string";
|
|
142
|
+
}
|
|
143
|
+
function isSttControlAckMessage(value) {
|
|
144
|
+
if (!value || typeof value !== "object") return false;
|
|
145
|
+
const msg = value;
|
|
146
|
+
return msg.type === "stt_control_ack" && typeof msg.requestId === "string";
|
|
147
|
+
}
|
|
138
148
|
function isWebhookMessage(value) {
|
|
139
149
|
if (!value || typeof value !== "object") return false;
|
|
140
150
|
const msg = value;
|
|
@@ -171,7 +181,7 @@ function normalizeWebhookHeaders(value) {
|
|
|
171
181
|
function isParentMessage(value) {
|
|
172
182
|
if (!value || typeof value !== "object") return false;
|
|
173
183
|
const msg = value;
|
|
174
|
-
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 === "webhook";
|
|
184
|
+
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 === "mix_control_ack" || msg.type === "stt_control_ack" || msg.type === "webhook";
|
|
175
185
|
}
|
|
176
186
|
function isSessionScopedParentMessage(value) {
|
|
177
187
|
return isParentMessage(value) && !isWebhookMessage(value);
|
|
@@ -185,8 +195,12 @@ function parseDataChannelPayload(raw) {
|
|
|
185
195
|
}
|
|
186
196
|
var peerEnvBySessionId = /* @__PURE__ */ new Map();
|
|
187
197
|
var recordingAvailableBySessionId = /* @__PURE__ */ new Map();
|
|
198
|
+
var mixAvailableBySessionId = /* @__PURE__ */ new Map();
|
|
199
|
+
var ttsPoseAvailableBySessionId = /* @__PURE__ */ new Map();
|
|
188
200
|
var endedSessionIds = /* @__PURE__ */ new Set();
|
|
189
201
|
var pendingRecordingAcks = /* @__PURE__ */ new Map();
|
|
202
|
+
var pendingMixAcks = /* @__PURE__ */ new Map();
|
|
203
|
+
var pendingSttAcks = /* @__PURE__ */ new Map();
|
|
190
204
|
function handleRecordingControlAck(message) {
|
|
191
205
|
const pending = pendingRecordingAcks.get(message.requestId);
|
|
192
206
|
if (!pending) return;
|
|
@@ -198,6 +212,29 @@ function handleRecordingControlAck(message) {
|
|
|
198
212
|
requestId: message.requestId
|
|
199
213
|
});
|
|
200
214
|
}
|
|
215
|
+
function handleMixControlAck(message) {
|
|
216
|
+
const pending = pendingMixAcks.get(message.requestId);
|
|
217
|
+
if (!pending) return;
|
|
218
|
+
clearTimeout(pending.timer);
|
|
219
|
+
pendingMixAcks.delete(message.requestId);
|
|
220
|
+
pending.resolve({
|
|
221
|
+
ok: message.ok,
|
|
222
|
+
reason: message.reason,
|
|
223
|
+
requestId: message.requestId,
|
|
224
|
+
...message.statuses ? { statuses: message.statuses } : {}
|
|
225
|
+
});
|
|
226
|
+
}
|
|
227
|
+
function handleSttControlAck(message) {
|
|
228
|
+
const pending = pendingSttAcks.get(message.requestId);
|
|
229
|
+
if (!pending) return;
|
|
230
|
+
clearTimeout(pending.timer);
|
|
231
|
+
pendingSttAcks.delete(message.requestId);
|
|
232
|
+
pending.resolve({
|
|
233
|
+
ok: message.ok,
|
|
234
|
+
reason: message.reason,
|
|
235
|
+
requestId: message.requestId
|
|
236
|
+
});
|
|
237
|
+
}
|
|
201
238
|
function clearPendingRecordingAcksForSession(sessionId, reason) {
|
|
202
239
|
for (const [requestId, pending] of pendingRecordingAcks) {
|
|
203
240
|
if (pending.sessionId !== sessionId) continue;
|
|
@@ -253,6 +290,11 @@ function allowOutboundForSession(sessionId) {
|
|
|
253
290
|
return queue.isLive(sessionId);
|
|
254
291
|
}
|
|
255
292
|
function sendParentMessage(message) {
|
|
293
|
+
const msgType = message && typeof message === "object" && "type" in message ? message.type : void 0;
|
|
294
|
+
if (msgType === "mix_control" || msgType === "stt_control") {
|
|
295
|
+
process.send?.(message);
|
|
296
|
+
return;
|
|
297
|
+
}
|
|
256
298
|
const sessionId = message && typeof message === "object" && "sessionId" in message && typeof message.sessionId === "string" ? message.sessionId : void 0;
|
|
257
299
|
if (!allowOutboundForSession(sessionId)) return;
|
|
258
300
|
process.send?.(message);
|
|
@@ -336,6 +378,14 @@ async function handleParentMessage(message, handlers) {
|
|
|
336
378
|
message.sessionId,
|
|
337
379
|
message.recordingAvailable ?? false
|
|
338
380
|
);
|
|
381
|
+
mixAvailableBySessionId.set(
|
|
382
|
+
message.sessionId,
|
|
383
|
+
message.mixAvailable ?? false
|
|
384
|
+
);
|
|
385
|
+
ttsPoseAvailableBySessionId.set(
|
|
386
|
+
message.sessionId,
|
|
387
|
+
message.ttsPoseAvailable ?? false
|
|
388
|
+
);
|
|
339
389
|
const sessionStartInitDelayMs = resolveSessionStartInitDelayMs();
|
|
340
390
|
if (sessionStartInitDelayMs > 0) {
|
|
341
391
|
await new Promise(
|
|
@@ -345,7 +395,9 @@ async function handleParentMessage(message, handlers) {
|
|
|
345
395
|
await (handlers.onClientJoin ?? handlers.onSessionStart)?.({
|
|
346
396
|
sessionId: message.sessionId,
|
|
347
397
|
env: message.env,
|
|
348
|
-
recordingAvailable: message.recordingAvailable ?? false
|
|
398
|
+
recordingAvailable: message.recordingAvailable ?? false,
|
|
399
|
+
mixAvailable: message.mixAvailable ?? false,
|
|
400
|
+
ttsPoseAvailable: message.ttsPoseAvailable ?? false
|
|
349
401
|
});
|
|
350
402
|
sendParentMessage({
|
|
351
403
|
type: "session_start_ack",
|
|
@@ -386,6 +438,8 @@ async function handleParentMessage(message, handlers) {
|
|
|
386
438
|
clearPendingRecordingAcksForSession(message.sessionId, "session_ended");
|
|
387
439
|
peerEnvBySessionId.delete(message.sessionId);
|
|
388
440
|
recordingAvailableBySessionId.delete(message.sessionId);
|
|
441
|
+
mixAvailableBySessionId.delete(message.sessionId);
|
|
442
|
+
ttsPoseAvailableBySessionId.delete(message.sessionId);
|
|
389
443
|
await (handlers.onClientLeave ?? handlers.onSessionEnd)?.({
|
|
390
444
|
sessionId: message.sessionId
|
|
391
445
|
});
|
|
@@ -405,6 +459,14 @@ function defineAgent(handlers) {
|
|
|
405
459
|
handleRecordingControlAck(message);
|
|
406
460
|
return;
|
|
407
461
|
}
|
|
462
|
+
if (isMixControlAckMessage(message)) {
|
|
463
|
+
handleMixControlAck(message);
|
|
464
|
+
return;
|
|
465
|
+
}
|
|
466
|
+
if (isSttControlAckMessage(message)) {
|
|
467
|
+
handleSttControlAck(message);
|
|
468
|
+
return;
|
|
469
|
+
}
|
|
408
470
|
if (isWebhookMessage(message)) {
|
|
409
471
|
void agentStartReady.then(() => handleWebhookMessage(message, handlers));
|
|
410
472
|
return;
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export type { SpeechEvent, SpeechEventListener, SpeechEventName, SpeechEventType, } from "@node-webrtc-rust/sdk/voice";
|
|
2
|
-
export { ALLOWED_CHILD_ENV_KEYS, type AgentErrorMessage, type AgentLogLevel, type AgentLogMessage, type AllowedChildEnvKey, type ChildToParentMessage, type ParentToChildMessage, type SessionEndMessage, type SessionStartMessage, type SendToClientMessage, type DataChannelMessageMessage, type DataChannelBinaryMessage, type DataChannelKind, type DisconnectClientMessage, type IdleTimeoutDoneMessage, type IdleTimeoutMessage, type RecordingControlMessage, type RecordingControlAckMessage, type RecordingControlAction, type RecordingControlResult, type SendBinaryToClientMessage, type SpeakMessage, type SpeechEventMessage, type WebhookMessage, } from "./protocol.js";
|
|
3
|
-
export { agentLog, defineAgent, disconnectClient, parseChatText, pauseRecording, resumeRecording, sendToClient, sendBinaryToClient, speak, startRecording, stopRecording, isRecordingAvailable, broadcastToClients, type AgentHandlers, type AgentErrorContext, type AgentStartContext, type DataChannelContext, type IdleTimeoutContext, type SessionContext, type SpeechContext, type SpeechEventContext, type WebhookContext, } from "./runtime.js";
|
|
2
|
+
export { ALLOWED_CHILD_ENV_KEYS, MIX_REQUIRES_VOICE_PLUS_DATA, TTS_POSE_REQUIRES_VOICE, type AgentErrorMessage, type AgentLogLevel, type AgentLogMessage, type AllowedChildEnvKey, type ChildToParentMessage, type ParentToChildMessage, type SessionEndMessage, type SessionStartMessage, type SendToClientMessage, type DataChannelMessageMessage, type DataChannelBinaryMessage, type DataChannelKind, type DisconnectClientMessage, type IdleTimeoutDoneMessage, type IdleTimeoutMessage, type RecordingControlMessage, type RecordingControlAckMessage, type RecordingControlAction, type RecordingControlResult, type MixControlMessage, type MixControlAckMessage, type MixControlAction, type MixControlResult, type ClientMixStatus, type ClientPose, type MixPlacement, type MixPose, type SttControlMessage, type SttControlAckMessage, type SttControlResult, type SendBinaryToClientMessage, type SpeakMessage, type SpeechEventMessage, type WebhookMessage, } from "./protocol.js";
|
|
3
|
+
export { agentLog, addClientToMix, createMixGroup, defineAgent, disconnectClient, getClientMixStatus, isMixAvailable, isTtsPoseAvailable, parseChatText, pauseRecording, removeClientFromMix, resumeRecording, sendToClient, sendBinaryToClient, setClientPose, setDefaultMixPlacement, setGlobalMute, setListenerMute, setPositionalMixing, setSttEnabled, setTtsMixPlacement, setTtsPose, clearTtsPose, speak, startRecording, stopRecording, isRecordingAvailable, broadcastToClients, type AgentHandlers, type AgentErrorContext, type AgentStartContext, type DataChannelContext, type IdleTimeoutContext, type SessionContext, type SpeechContext, type SpeechEventContext, type WebhookContext, } from "./runtime.js";
|
|
4
4
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,WAAW,EACX,mBAAmB,EACnB,eAAe,EACf,eAAe,GAChB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EACL,sBAAsB,EACtB,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACxB,KAAK,yBAAyB,EAC9B,KAAK,wBAAwB,EAC7B,KAAK,eAAe,EACpB,KAAK,uBAAuB,EAC5B,KAAK,sBAAsB,EAC3B,KAAK,kBAAkB,EACvB,KAAK,uBAAuB,EAC5B,KAAK,0BAA0B,EAC/B,KAAK,sBAAsB,EAC3B,KAAK,sBAAsB,EAC3B,KAAK,yBAAyB,EAC9B,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,KAAK,cAAc,GACpB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,QAAQ,EACR,WAAW,EACX,gBAAgB,EAChB,aAAa,EACb,cAAc,EACd,eAAe,EACf,YAAY,EACZ,kBAAkB,EAClB,KAAK,EACL,cAAc,EACd,aAAa,EACb,oBAAoB,EACpB,kBAAkB,EAClB,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,KAAK,cAAc,GACpB,MAAM,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,WAAW,EACX,mBAAmB,EACnB,eAAe,EACf,eAAe,GAChB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EACL,sBAAsB,EACtB,4BAA4B,EAC5B,uBAAuB,EACvB,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACxB,KAAK,yBAAyB,EAC9B,KAAK,wBAAwB,EAC7B,KAAK,eAAe,EACpB,KAAK,uBAAuB,EAC5B,KAAK,sBAAsB,EAC3B,KAAK,kBAAkB,EACvB,KAAK,uBAAuB,EAC5B,KAAK,0BAA0B,EAC/B,KAAK,sBAAsB,EAC3B,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,OAAO,EACZ,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EACrB,KAAK,yBAAyB,EAC9B,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,KAAK,cAAc,GACpB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,QAAQ,EACR,cAAc,EACd,cAAc,EACd,WAAW,EACX,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,EACd,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,mBAAmB,EACnB,eAAe,EACf,YAAY,EACZ,kBAAkB,EAClB,aAAa,EACb,sBAAsB,EACtB,aAAa,EACb,eAAe,EACf,mBAAmB,EACnB,aAAa,EACb,kBAAkB,EAClB,UAAU,EACV,YAAY,EACZ,KAAK,EACL,cAAc,EACd,aAAa,EACb,oBAAoB,EACpB,kBAAkB,EAClB,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,KAAK,cAAc,GACpB,MAAM,cAAc,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { ALLOWED_CHILD_ENV_KEYS, } from "./protocol.js";
|
|
2
|
-
export { agentLog, defineAgent, disconnectClient, parseChatText, pauseRecording, resumeRecording, sendToClient, sendBinaryToClient, speak, startRecording, stopRecording, isRecordingAvailable, broadcastToClients, } from "./runtime.js";
|
|
1
|
+
export { ALLOWED_CHILD_ENV_KEYS, MIX_REQUIRES_VOICE_PLUS_DATA, TTS_POSE_REQUIRES_VOICE, } from "./protocol.js";
|
|
2
|
+
export { agentLog, addClientToMix, createMixGroup, defineAgent, disconnectClient, getClientMixStatus, isMixAvailable, isTtsPoseAvailable, parseChatText, pauseRecording, removeClientFromMix, resumeRecording, sendToClient, sendBinaryToClient, setClientPose, setDefaultMixPlacement, setGlobalMute, setListenerMute, setPositionalMixing, setSttEnabled, setTtsMixPlacement, setTtsPose, clearTtsPose, speak, startRecording, stopRecording, isRecordingAvailable, broadcastToClients, } from "./runtime.js";
|
|
3
3
|
//# 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":"AAOA,OAAO,EACL,sBAAsB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,sBAAsB,EACtB,4BAA4B,EAC5B,uBAAuB,GAmCxB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,QAAQ,EACR,cAAc,EACd,cAAc,EACd,WAAW,EACX,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,EACd,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,mBAAmB,EACnB,eAAe,EACf,YAAY,EACZ,kBAAkB,EAClB,aAAa,EACb,sBAAsB,EACtB,aAAa,EACb,eAAe,EACf,mBAAmB,EACnB,aAAa,EACb,kBAAkB,EAClB,UAAU,EACV,YAAY,EACZ,KAAK,EACL,cAAc,EACd,aAAa,EACb,oBAAoB,EACpB,kBAAkB,GAUnB,MAAM,cAAc,CAAC"}
|
package/dist/protocol.d.ts
CHANGED
|
@@ -16,13 +16,13 @@ export type { SpeechEvent } from "@node-webrtc-rust/sdk/voice";
|
|
|
16
16
|
* Register handlers via {@link defineAgent} in `@voicethere/agent` — do not read
|
|
17
17
|
* `process.on('message')` directly in customer bundles.
|
|
18
18
|
*/
|
|
19
|
-
export type ParentToChildMessage = SessionStartMessage | SpeechEventMessage | SessionEndMessage | DataChannelMessageMessage | DataChannelBinaryMessage | IdleTimeoutMessage | RecordingControlAckMessage | WebhookMessage;
|
|
19
|
+
export type ParentToChildMessage = SessionStartMessage | SpeechEventMessage | SessionEndMessage | DataChannelMessageMessage | DataChannelBinaryMessage | IdleTimeoutMessage | RecordingControlAckMessage | MixControlAckMessage | SttControlAckMessage | WebhookMessage;
|
|
20
20
|
/**
|
|
21
21
|
* Messages the customer child may send back to the runner parent.
|
|
22
22
|
*
|
|
23
23
|
* Prefer {@link speak}, {@link startRecording}, {@link sendToClient}, {@link sendBinaryToClient}, and {@link agentLog} helpers over raw `process.send`.
|
|
24
24
|
*/
|
|
25
|
-
export type ChildToParentMessage = SessionStartAckMessage | SpeakMessage | RecordingControlMessage | AgentLogMessage | AgentErrorMessage | SendToClientMessage | SendBinaryToClientMessage | IdleTimeoutDoneMessage | DisconnectClientMessage | WebhookHandledMessage;
|
|
25
|
+
export type ChildToParentMessage = SessionStartAckMessage | SpeakMessage | RecordingControlMessage | MixControlMessage | SttControlMessage | AgentLogMessage | AgentErrorMessage | SendToClientMessage | SendBinaryToClientMessage | IdleTimeoutDoneMessage | DisconnectClientMessage | WebhookHandledMessage;
|
|
26
26
|
/** Which WebRTC data channel carried a binary IPC payload. */
|
|
27
27
|
export type DataChannelKind = "control" | "sync";
|
|
28
28
|
/**
|
|
@@ -45,6 +45,16 @@ export interface SessionStartMessage {
|
|
|
45
45
|
* Absent on older runners — treat as `false`.
|
|
46
46
|
*/
|
|
47
47
|
recordingAvailable?: boolean;
|
|
48
|
+
/**
|
|
49
|
+
* When `true`, the runner session is Voice+Data and positional mix APIs are available.
|
|
50
|
+
* Absent on older runners or voice/data-only sessions — treat as `false`.
|
|
51
|
+
*/
|
|
52
|
+
mixAvailable?: boolean;
|
|
53
|
+
/**
|
|
54
|
+
* When `true`, TTS pose / listener pose / positional panning APIs are available
|
|
55
|
+
* (voice or Voice+Data). Absent on data-only or older runners — treat as `false`.
|
|
56
|
+
*/
|
|
57
|
+
ttsPoseAvailable?: boolean;
|
|
48
58
|
}
|
|
49
59
|
/**
|
|
50
60
|
* Forwards one speech lifecycle event from the parent Sherpa/VAD/STT/TTS pipeline.
|
|
@@ -144,6 +154,114 @@ export type RecordingControlResult = {
|
|
|
144
154
|
reason?: string;
|
|
145
155
|
requestId: string;
|
|
146
156
|
};
|
|
157
|
+
/** Named stereo placement when positional mixing is off (and for TTS panning). */
|
|
158
|
+
export type MixPlacement = "center" | "left" | "right" | "front" | "behind" | "below" | "above";
|
|
159
|
+
/** 6DOF pose for positional mixing (world position + unit quaternion). */
|
|
160
|
+
export interface MixPose {
|
|
161
|
+
position: {
|
|
162
|
+
x: number;
|
|
163
|
+
y: number;
|
|
164
|
+
z: number;
|
|
165
|
+
};
|
|
166
|
+
orientation: {
|
|
167
|
+
x: number;
|
|
168
|
+
y: number;
|
|
169
|
+
z: number;
|
|
170
|
+
w: number;
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
export type MixControlAction = "create_group" | "add_client" | "remove_client" | "set_pose" | "set_positional" | "set_default_placement" | "set_tts_placement" | "set_tts_pose" | "clear_tts_pose" | "set_global_mute" | "set_listener_mute" | "get_status";
|
|
174
|
+
/** Client pose snapshot in mix status (same shape as {@link MixPose}). */
|
|
175
|
+
export type ClientPose = MixPose;
|
|
176
|
+
/** Per-client mix mute/pose/group snapshot from the runner SessionPod. */
|
|
177
|
+
export type ClientMixStatus = {
|
|
178
|
+
clientId: string;
|
|
179
|
+
globallyMuted: boolean;
|
|
180
|
+
sttEnabled: boolean;
|
|
181
|
+
pose: ClientPose | null;
|
|
182
|
+
ttsPose: ClientPose | null;
|
|
183
|
+
mutedBy: string[];
|
|
184
|
+
groupId: string | null;
|
|
185
|
+
};
|
|
186
|
+
/**
|
|
187
|
+
* Ask the runner parent to change mix groups, poses, or placement settings.
|
|
188
|
+
*
|
|
189
|
+
* Mix runs in the runner parent — use {@link createMixGroup}, {@link setClientPose},
|
|
190
|
+
* and related helpers instead of raw `process.send`. Requires Voice+Data
|
|
191
|
+
* ({@link SessionStartMessage.mixAvailable}).
|
|
192
|
+
*/
|
|
193
|
+
export interface MixControlMessage {
|
|
194
|
+
type: "mix_control";
|
|
195
|
+
action: MixControlAction;
|
|
196
|
+
/** Correlates with {@link MixControlAckMessage.requestId}. */
|
|
197
|
+
requestId: string;
|
|
198
|
+
groupId?: string;
|
|
199
|
+
/** Peer/session ids (orchestrator session id). */
|
|
200
|
+
clientIds?: string[];
|
|
201
|
+
/** Single peer/session id for add/remove/pose/mute/status actions. */
|
|
202
|
+
clientId?: string;
|
|
203
|
+
/** Listener peer id for {@link set_listener_mute}. */
|
|
204
|
+
listenerId?: string;
|
|
205
|
+
/** Global or listener mute target state. */
|
|
206
|
+
muted?: boolean;
|
|
207
|
+
/** When muting globally, keep STT on for this client. */
|
|
208
|
+
sttEnabled?: boolean;
|
|
209
|
+
pose?: MixPose;
|
|
210
|
+
enabled?: boolean;
|
|
211
|
+
placement?: MixPlacement;
|
|
212
|
+
}
|
|
213
|
+
/** Runner acknowledgement for a {@link MixControlMessage}. */
|
|
214
|
+
export interface MixControlAckMessage {
|
|
215
|
+
type: "mix_control_ack";
|
|
216
|
+
action: MixControlAction;
|
|
217
|
+
requestId: string;
|
|
218
|
+
ok: boolean;
|
|
219
|
+
reason?: "applied" | "unsupported" | "local_mock" | "timeout" | string;
|
|
220
|
+
/** Populated on successful {@link get_status} acks. */
|
|
221
|
+
statuses?: ClientMixStatus[];
|
|
222
|
+
}
|
|
223
|
+
/** Result returned by mix control helpers. */
|
|
224
|
+
export type MixControlResult = {
|
|
225
|
+
ok: boolean;
|
|
226
|
+
reason?: string;
|
|
227
|
+
requestId: string;
|
|
228
|
+
statuses?: ClientMixStatus[];
|
|
229
|
+
};
|
|
230
|
+
/**
|
|
231
|
+
* Ask the runner parent to enable or disable STT for one client or all clients.
|
|
232
|
+
*
|
|
233
|
+
* `clientId` omitted targets every connected client. `clientId` is the same id as
|
|
234
|
+
* {@link SessionContext.sessionId} (orchestrator/browser peer id).
|
|
235
|
+
*/
|
|
236
|
+
export interface SttControlMessage {
|
|
237
|
+
type: "stt_control";
|
|
238
|
+
requestId: string;
|
|
239
|
+
enabled: boolean;
|
|
240
|
+
/** When set, only this peer/session is affected. */
|
|
241
|
+
clientId?: string;
|
|
242
|
+
/**
|
|
243
|
+
* Optional scope hint for the runner (same id as `clientId` when targeting one peer).
|
|
244
|
+
* Omitted when toggling all clients.
|
|
245
|
+
*/
|
|
246
|
+
sessionId?: string;
|
|
247
|
+
}
|
|
248
|
+
/** Runner acknowledgement for a {@link SttControlMessage}. */
|
|
249
|
+
export interface SttControlAckMessage {
|
|
250
|
+
type: "stt_control_ack";
|
|
251
|
+
requestId: string;
|
|
252
|
+
ok: boolean;
|
|
253
|
+
reason?: "applied" | "unsupported" | "local_mock" | "timeout" | string;
|
|
254
|
+
}
|
|
255
|
+
/** Result returned by {@link setSttEnabled}. */
|
|
256
|
+
export type SttControlResult = {
|
|
257
|
+
ok: boolean;
|
|
258
|
+
reason?: string;
|
|
259
|
+
requestId: string;
|
|
260
|
+
};
|
|
261
|
+
/** Thrown by mix group helpers when {@link SessionStartMessage.mixAvailable} is not `true`. */
|
|
262
|
+
export declare const MIX_REQUIRES_VOICE_PLUS_DATA = "Mix APIs require sessionMode 'voice+data' (voice tracks and a sync data channel)";
|
|
263
|
+
/** Thrown by TTS pose helpers when {@link SessionStartMessage.ttsPoseAvailable} is not `true`. */
|
|
264
|
+
export declare const TTS_POSE_REQUIRES_VOICE = "TTS pose APIs require voice or voice+data (not data-only)";
|
|
147
265
|
/** Log severity forwarded to the runner parent process. */
|
|
148
266
|
export type AgentLogLevel = "debug" | "info" | "warn" | "error";
|
|
149
267
|
/**
|
package/dist/protocol.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC/D,YAAY,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAE/D;;;;;GAKG;AACH,MAAM,MAAM,oBAAoB,GAC5B,mBAAmB,GACnB,kBAAkB,GAClB,iBAAiB,GACjB,yBAAyB,GACzB,wBAAwB,GACxB,kBAAkB,GAClB,0BAA0B,GAC1B,cAAc,CAAC;AAEnB;;;;GAIG;AACH,MAAM,MAAM,oBAAoB,GAC5B,sBAAsB,GACtB,YAAY,GACZ,uBAAuB,GACvB,eAAe,GACf,iBAAiB,GACjB,mBAAmB,GACnB,yBAAyB,GACzB,sBAAsB,GACtB,uBAAuB,GACvB,qBAAqB,CAAC;AAE1B,8DAA8D;AAC9D,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,MAAM,CAAC;AAEjD;;;;;GAKG;AACH,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,eAAe,CAAC;IACtB,2DAA2D;IAC3D,SAAS,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B;;;OAGG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":"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"}
|
package/dist/protocol.js
CHANGED
|
@@ -8,6 +8,10 @@
|
|
|
8
8
|
*
|
|
9
9
|
* @packageDocumentation
|
|
10
10
|
*/
|
|
11
|
+
/** Thrown by mix group helpers when {@link SessionStartMessage.mixAvailable} is not `true`. */
|
|
12
|
+
export const MIX_REQUIRES_VOICE_PLUS_DATA = "Mix APIs require sessionMode 'voice+data' (voice tracks and a sync data channel)";
|
|
13
|
+
/** Thrown by TTS pose helpers when {@link SessionStartMessage.ttsPoseAvailable} is not `true`. */
|
|
14
|
+
export const TTS_POSE_REQUIRES_VOICE = "TTS pose APIs require voice or voice+data (not data-only)";
|
|
11
15
|
/**
|
|
12
16
|
* Environment variable names the runner may inject into {@link SessionStartMessage.env}.
|
|
13
17
|
*
|
package/dist/protocol.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protocol.js","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;
|
|
1
|
+
{"version":3,"file":"protocol.js","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAuTH,+FAA+F;AAC/F,MAAM,CAAC,MAAM,4BAA4B,GACvC,kFAAkF,CAAC;AAErF,kGAAkG;AAClG,MAAM,CAAC,MAAM,uBAAuB,GAClC,2DAA2D,CAAC;AAwH9D;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,YAAY;IACZ,YAAY;IACZ,UAAU;IACV,kBAAkB;IAClB,wEAAwE;IACxE,wBAAwB;CAChB,CAAC"}
|
package/dist/runtime.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { SpeechEvent } from "@node-webrtc-rust/sdk/voice";
|
|
2
|
-
import type { AgentLogLevel, DataChannelKind, RecordingControlResult } from "./protocol.js";
|
|
2
|
+
import type { AgentLogLevel, DataChannelKind, MixControlResult, MixPlacement, MixPose, RecordingControlResult, SttControlResult } from "./protocol.js";
|
|
3
3
|
export declare const SESSION_START_INIT_DELAY_ENABLED_ENV = "AGENT_SESSION_START_INIT_DELAY_ENABLED";
|
|
4
4
|
export declare const SESSION_START_INIT_DELAY_MS_ENV = "AGENT_SESSION_START_INIT_DELAY_MS";
|
|
5
5
|
export interface SessionContext {
|
|
@@ -7,6 +7,10 @@ export interface SessionContext {
|
|
|
7
7
|
env: Record<string, string>;
|
|
8
8
|
/** `true` when the runner advertises conversation recording for this project. */
|
|
9
9
|
recordingAvailable: boolean;
|
|
10
|
+
/** `true` when the runner session is Voice+Data and mix group APIs are available. */
|
|
11
|
+
mixAvailable: boolean;
|
|
12
|
+
/** `true` when TTS pose / listener pose APIs are available (voice or Voice+Data). */
|
|
13
|
+
ttsPoseAvailable: boolean;
|
|
10
14
|
}
|
|
11
15
|
export interface SpeechContext {
|
|
12
16
|
sessionId: string;
|
|
@@ -129,6 +133,64 @@ export declare function resetAgentIpcStateForTests(): void;
|
|
|
129
133
|
export declare function speak(sessionId: string, text: string): void;
|
|
130
134
|
/** True when {@link SessionStartMessage.recordingAvailable} was set for the session. */
|
|
131
135
|
export declare function isRecordingAvailable(ctx: SessionContext): boolean;
|
|
136
|
+
/** True when {@link SessionStartMessage.mixAvailable} was set for the session. */
|
|
137
|
+
export declare function isMixAvailable(ctx: SessionContext): boolean;
|
|
138
|
+
/** True when {@link SessionStartMessage.ttsPoseAvailable} was set for the session. */
|
|
139
|
+
export declare function isTtsPoseAvailable(ctx: SessionContext): boolean;
|
|
140
|
+
/** Create a mix group with initial members (Voice+Data only). */
|
|
141
|
+
export declare function createMixGroup(options: {
|
|
142
|
+
id: string;
|
|
143
|
+
clientIds: string[];
|
|
144
|
+
}): Promise<MixControlResult>;
|
|
145
|
+
/**
|
|
146
|
+
* Move a client into a mix group (exclusive — removed from any previous group).
|
|
147
|
+
* `clientId` is the orchestrator/browser peer id ({@link SessionContext.sessionId}).
|
|
148
|
+
*/
|
|
149
|
+
export declare function addClientToMix(groupId: string, clientId: string): Promise<MixControlResult>;
|
|
150
|
+
/** Remove a client from a mix group (ungrouped — hears nobody). */
|
|
151
|
+
export declare function removeClientFromMix(groupId: string, clientId: string): Promise<MixControlResult>;
|
|
152
|
+
/** Update a client's 6DOF pose for positional mixing. */
|
|
153
|
+
export declare function setClientPose(clientId: string, pose: MixPose): Promise<MixControlResult>;
|
|
154
|
+
/** Enable or disable live pose-based panning (voice or Voice+Data). */
|
|
155
|
+
export declare function setPositionalMixing(enabled: boolean): Promise<MixControlResult>;
|
|
156
|
+
/** Set named placement for client sources when positional mixing is off. */
|
|
157
|
+
export declare function setDefaultMixPlacement(placement: MixPlacement): Promise<MixControlResult>;
|
|
158
|
+
/** Set named placement for agent TTS in the mix output. */
|
|
159
|
+
export declare function setTtsMixPlacement(placement: MixPlacement): Promise<MixControlResult>;
|
|
160
|
+
/** Set a live world-space pose for the TTS speaker (positional mixing on). */
|
|
161
|
+
export declare function setTtsPose(sessionId: string, pose: MixPose): Promise<MixControlResult>;
|
|
162
|
+
/** Clear the live TTS pose for one client; named placement applies again. */
|
|
163
|
+
export declare function clearTtsPose(sessionId: string): Promise<MixControlResult>;
|
|
164
|
+
/** Mute or unmute a client globally in the mix (Voice+Data). */
|
|
165
|
+
export declare function setGlobalMute(options: {
|
|
166
|
+
clientId: string;
|
|
167
|
+
muted: boolean;
|
|
168
|
+
sttEnabled?: boolean;
|
|
169
|
+
}): Promise<MixControlResult>;
|
|
170
|
+
/** Mute or unmute one listener's hear of a target client. */
|
|
171
|
+
export declare function setListenerMute(options: {
|
|
172
|
+
listenerId: string;
|
|
173
|
+
targetId: string;
|
|
174
|
+
muted: boolean;
|
|
175
|
+
}): Promise<MixControlResult>;
|
|
176
|
+
/**
|
|
177
|
+
* Read mix mute/pose/group status for one client or all clients.
|
|
178
|
+
*
|
|
179
|
+
* Omit `clientId` to list every connected client.
|
|
180
|
+
*/
|
|
181
|
+
export declare function getClientMixStatus(clientId?: string): Promise<MixControlResult>;
|
|
182
|
+
/**
|
|
183
|
+
* Enable or disable STT for one client or all connected clients.
|
|
184
|
+
*
|
|
185
|
+
* When `clientId` is omitted, the runner applies the change to every client.
|
|
186
|
+
* `clientId` matches {@link SessionContext.sessionId}. Optional `sessionId` is
|
|
187
|
+
* forwarded to the runner when provided (same peer id for single-client scope).
|
|
188
|
+
*/
|
|
189
|
+
export declare function setSttEnabled(options: {
|
|
190
|
+
enabled: boolean;
|
|
191
|
+
clientId?: string;
|
|
192
|
+
sessionId?: string;
|
|
193
|
+
}): Promise<SttControlResult>;
|
|
132
194
|
/** Ask the runner parent to start conversation recording for the session. */
|
|
133
195
|
export declare function startRecording(sessionId: string): Promise<RecordingControlResult>;
|
|
134
196
|
/** Ask the runner parent to pause an in-progress recording for the session. */
|
package/dist/runtime.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAG/D,OAAO,KAAK,EACV,aAAa,EAEb,eAAe,EAIf,sBAAsB,
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
|