@voicethere/agent 0.7.2 → 0.7.4
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 +12 -11
- package/dist/agent.js +92 -1
- 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 +92 -4
- package/dist/protocol.d.ts.map +1 -1
- package/dist/protocol.js.map +1 -1
- package/dist/runtime.d.ts +45 -1
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +285 -0
- package/dist/runtime.js.map +1 -1
- package/dist/templates/echo/agent.js +98 -1
- package/dist/templates/echo-dc/agent.js +98 -1
- package/dist/templates/game-sync/agent.js +98 -1
- package/dist/templates/positional-tts/agent.js +98 -1
- package/dist/templates/recording-consent/agent.js +98 -1
- package/dist/templates/voice-showcase/agent.js +98 -1
- package/dist/templates/voice-starter/agent.js +107 -1
- package/dist/templates/webhooks/agent.js +98 -1
- package/dist/templates/webhooks-redis/agent.js +98 -1
- package/dist/verify/lib.d.ts +1 -1
- package/dist/verify/lib.d.ts.map +1 -1
- package/dist/verify/lib.js +1 -0
- package/dist/verify/lib.js.map +1 -1
- package/package.json +5 -5
- package/templates/agent.ts +13 -0
- package/templates/mix-smoke.ts +72 -1
package/README.md
CHANGED
|
@@ -32,7 +32,7 @@ Before deploying to VoiceThere, build your bundle and run static checks:
|
|
|
32
32
|
npx @voicethere/agent verify
|
|
33
33
|
```
|
|
34
34
|
|
|
35
|
-
This runs a short checklist: Node version, bundle build, bundle presence, `defineAgent(...)` registration, and at least one supported callback (`onSpeechEvent`, `onUserSpeechFinal`, `onDataChannelMessage`, or `onDataChannelBinary`).
|
|
35
|
+
This runs a short checklist: Node version, bundle build, bundle presence, `defineAgent(...)` registration, and at least one supported callback (`onSpeechEvent`, `onUserSpeechFinal`, `onUserLanguage`, `onDataChannelMessage`, or `onDataChannelBinary`).
|
|
36
36
|
|
|
37
37
|
For sandbox startup validation (without full voice/WebRTC E2E), use:
|
|
38
38
|
|
|
@@ -180,15 +180,15 @@ On plans that include project Redis, the runner injects **`AGENT_REDIS_URL`** in
|
|
|
180
180
|
|
|
181
181
|
For inbound HTTP webhooks, configure **`AGENT_WEBHOOK_SIGNING_SECRET`** in project settings. The runner forwards the exact request bytes on process-wide **`onWebhook`** IPC (not session-queued). Verify HMAC on `ctx.body` before `JSON.parse` — VoiceThere does not verify signatures in the SDK. See [`templates/webhooks.ts`](./templates/webhooks.ts).
|
|
182
182
|
|
|
183
|
-
| Export | Purpose
|
|
184
|
-
| ------------------------------------------------------------------------- |
|
|
185
|
-
| `defineAgent` | Register `onAgentStart`, `onWebhook`, `onSessionStart`, `onSpeechEvent`, `onUserSpeechFinal`, `onSessionEnd` |
|
|
186
|
-
| `SpeechEvent`, `SpeechEventType` | Re-exported **types** from `@node-webrtc-rust/sdk/voice`
|
|
187
|
-
| `SPEECH_EVENT_TYPE` | Import from `@node-webrtc-rust/sdk/voice` (runtime constants; not bundled into child)
|
|
188
|
-
| `speak` | Request parent TTS
|
|
189
|
-
| `startRecording` / `pauseRecording` / `resumeRecording` / `stopRecording` | Request parent conversation recording control
|
|
190
|
-
| `agentLog` | Forward structured logs to parent
|
|
191
|
-
| `ParentToChildMessage` / `ChildToParentMessage` | IPC contract shared with the VoiceThere agent runner
|
|
183
|
+
| Export | Purpose |
|
|
184
|
+
| ------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------ |
|
|
185
|
+
| `defineAgent` | Register `onAgentStart`, `onWebhook`, `onSessionStart`, `onSpeechEvent`, `onUserSpeechFinal`, `onUserLanguage`, `onSessionEnd` |
|
|
186
|
+
| `SpeechEvent`, `SpeechEventType` | Re-exported **types** from `@node-webrtc-rust/sdk/voice` |
|
|
187
|
+
| `SPEECH_EVENT_TYPE` | Import from `@node-webrtc-rust/sdk/voice` (runtime constants; not bundled into child) |
|
|
188
|
+
| `speak` | Request parent TTS |
|
|
189
|
+
| `startRecording` / `pauseRecording` / `resumeRecording` / `stopRecording` | Request parent conversation recording control |
|
|
190
|
+
| `agentLog` | Forward structured logs to parent |
|
|
191
|
+
| `ParentToChildMessage` / `ChildToParentMessage` | IPC contract shared with the VoiceThere agent runner |
|
|
192
192
|
|
|
193
193
|
### Runner runtime subpath (minimal shared sandbox API)
|
|
194
194
|
|
|
@@ -215,12 +215,13 @@ Forwarded from the runner voice pipeline as SDK `SpeechEvent` payloads on `speec
|
|
|
215
215
|
| `user_speaking_start` / `user_speaking_end` | UI state, turn-taking |
|
|
216
216
|
| `user_speech_partial` | Live captions, early barge-in logic |
|
|
217
217
|
| `user_speech_final` | Primary turn boundary (`onUserSpeechFinal` convenience) |
|
|
218
|
+
| `user_language` | Detected ISO 639-1 code (`onUserLanguage` convenience) |
|
|
218
219
|
| `agent_speaking_start` / `agent_speaking_end` | Know when TTS playback starts/stops |
|
|
219
220
|
| `barge_in` | User interrupted agent playback |
|
|
220
221
|
| `vad_triggered`, `stt_stream_*`, `user_stt_*` | Low-level pipeline hooks |
|
|
221
222
|
| `error` | Vendor or pipeline failure |
|
|
222
223
|
|
|
223
|
-
Copy [`templates/agent.ts`](./templates/agent.ts) as a starting point — exhaustive `switch` over
|
|
224
|
+
Copy [`templates/agent.ts`](./templates/agent.ts) as a starting point — exhaustive `switch` over speech event types with per-peer state stubs and `agentLog` tracing.
|
|
224
225
|
|
|
225
226
|
## Multiplayer / shared state
|
|
226
227
|
|
package/dist/agent.js
CHANGED
|
@@ -130,6 +130,21 @@ var SessionSerialQueue = class {
|
|
|
130
130
|
var SESSION_START_INIT_DELAY_ENABLED_ENV = "AGENT_SESSION_START_INIT_DELAY_ENABLED";
|
|
131
131
|
var SESSION_START_INIT_DELAY_MS_ENV = "AGENT_SESSION_START_INIT_DELAY_MS";
|
|
132
132
|
var DEFAULT_SESSION_START_INIT_DELAY_MS = 500;
|
|
133
|
+
function isPlayAckMessage(value) {
|
|
134
|
+
if (!value || typeof value !== "object") return false;
|
|
135
|
+
const msg = value;
|
|
136
|
+
return msg.type === "play_ack" && typeof msg.requestId === "string";
|
|
137
|
+
}
|
|
138
|
+
function isPlayStatusAckMessage(value) {
|
|
139
|
+
if (!value || typeof value !== "object") return false;
|
|
140
|
+
const msg = value;
|
|
141
|
+
return msg.type === "play_status_ack" && typeof msg.requestId === "string";
|
|
142
|
+
}
|
|
143
|
+
function isPlayStopAckMessage(value) {
|
|
144
|
+
if (!value || typeof value !== "object") return false;
|
|
145
|
+
const msg = value;
|
|
146
|
+
return msg.type === "play_stop_ack" && typeof msg.requestId === "string";
|
|
147
|
+
}
|
|
133
148
|
function isRecordingControlAckMessage(value) {
|
|
134
149
|
if (!value || typeof value !== "object") return false;
|
|
135
150
|
const msg = value;
|
|
@@ -181,7 +196,7 @@ function normalizeWebhookHeaders(value) {
|
|
|
181
196
|
function isParentMessage(value) {
|
|
182
197
|
if (!value || typeof value !== "object") return false;
|
|
183
198
|
const msg = value;
|
|
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";
|
|
199
|
+
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 === "play_ack" || msg.type === "play_status_ack" || msg.type === "play_stop_ack" || msg.type === "mix_control_ack" || msg.type === "stt_control_ack" || msg.type === "webhook";
|
|
185
200
|
}
|
|
186
201
|
function isSessionScopedParentMessage(value) {
|
|
187
202
|
return isParentMessage(value) && !isWebhookMessage(value);
|
|
@@ -198,7 +213,11 @@ var recordingAvailableBySessionId = /* @__PURE__ */ new Map();
|
|
|
198
213
|
var mixAvailableBySessionId = /* @__PURE__ */ new Map();
|
|
199
214
|
var ttsPoseAvailableBySessionId = /* @__PURE__ */ new Map();
|
|
200
215
|
var endedSessionIds = /* @__PURE__ */ new Set();
|
|
216
|
+
var PLAY_BYTES_MAX_DECODED_LENGTH = 64 * 1024;
|
|
201
217
|
var pendingRecordingAcks = /* @__PURE__ */ new Map();
|
|
218
|
+
var pendingPlayAcks = /* @__PURE__ */ new Map();
|
|
219
|
+
var pendingPlayStatusAcks = /* @__PURE__ */ new Map();
|
|
220
|
+
var pendingPlayStopAcks = /* @__PURE__ */ new Map();
|
|
202
221
|
var pendingMixAcks = /* @__PURE__ */ new Map();
|
|
203
222
|
var pendingSttAcks = /* @__PURE__ */ new Map();
|
|
204
223
|
function handleRecordingControlAck(message) {
|
|
@@ -212,6 +231,43 @@ function handleRecordingControlAck(message) {
|
|
|
212
231
|
requestId: message.requestId
|
|
213
232
|
});
|
|
214
233
|
}
|
|
234
|
+
function handlePlayAck(message) {
|
|
235
|
+
const pending = pendingPlayAcks.get(message.requestId);
|
|
236
|
+
if (!pending) return;
|
|
237
|
+
clearTimeout(pending.timer);
|
|
238
|
+
pendingPlayAcks.delete(message.requestId);
|
|
239
|
+
pending.resolve({
|
|
240
|
+
ok: message.ok,
|
|
241
|
+
...message.playId ? { playId: message.playId } : {},
|
|
242
|
+
reason: message.reason,
|
|
243
|
+
requestId: message.requestId
|
|
244
|
+
});
|
|
245
|
+
}
|
|
246
|
+
function handlePlayStatusAck(message) {
|
|
247
|
+
const pending = pendingPlayStatusAcks.get(message.requestId);
|
|
248
|
+
if (!pending) return;
|
|
249
|
+
clearTimeout(pending.timer);
|
|
250
|
+
pendingPlayStatusAcks.delete(message.requestId);
|
|
251
|
+
pending.resolve({
|
|
252
|
+
ok: message.ok,
|
|
253
|
+
playId: message.playId,
|
|
254
|
+
...message.status ? { status: message.status } : {},
|
|
255
|
+
reason: message.reason,
|
|
256
|
+
requestId: message.requestId
|
|
257
|
+
});
|
|
258
|
+
}
|
|
259
|
+
function handlePlayStopAck(message) {
|
|
260
|
+
const pending = pendingPlayStopAcks.get(message.requestId);
|
|
261
|
+
if (!pending) return;
|
|
262
|
+
clearTimeout(pending.timer);
|
|
263
|
+
pendingPlayStopAcks.delete(message.requestId);
|
|
264
|
+
pending.resolve({
|
|
265
|
+
ok: message.ok,
|
|
266
|
+
playId: message.playId,
|
|
267
|
+
reason: message.reason,
|
|
268
|
+
requestId: message.requestId
|
|
269
|
+
});
|
|
270
|
+
}
|
|
215
271
|
function handleMixControlAck(message) {
|
|
216
272
|
const pending = pendingMixAcks.get(message.requestId);
|
|
217
273
|
if (!pending) return;
|
|
@@ -295,6 +351,10 @@ function sendParentMessage(message) {
|
|
|
295
351
|
process.send?.(message);
|
|
296
352
|
return;
|
|
297
353
|
}
|
|
354
|
+
if (msgType === "play" || msgType === "play_status" || msgType === "play_stop") {
|
|
355
|
+
process.send?.(message);
|
|
356
|
+
return;
|
|
357
|
+
}
|
|
298
358
|
const sessionId = message && typeof message === "object" && "sessionId" in message && typeof message.sessionId === "string" ? message.sessionId : void 0;
|
|
299
359
|
if (!allowOutboundForSession(sessionId)) return;
|
|
300
360
|
process.send?.(message);
|
|
@@ -369,6 +429,16 @@ async function handleWebhookMessage(message, handlers) {
|
|
|
369
429
|
});
|
|
370
430
|
}
|
|
371
431
|
}
|
|
432
|
+
function resolveUserLanguageCode(event) {
|
|
433
|
+
const withLanguage = event;
|
|
434
|
+
const candidates = [withLanguage.language, event.text];
|
|
435
|
+
for (const value of candidates) {
|
|
436
|
+
if (typeof value === "string" && value.trim()) {
|
|
437
|
+
return value.trim();
|
|
438
|
+
}
|
|
439
|
+
}
|
|
440
|
+
return void 0;
|
|
441
|
+
}
|
|
372
442
|
async function handleParentMessage(message, handlers) {
|
|
373
443
|
switch (message.type) {
|
|
374
444
|
case "session_start":
|
|
@@ -415,6 +485,15 @@ async function handleParentMessage(message, handlers) {
|
|
|
415
485
|
text: message.event.text.trim()
|
|
416
486
|
});
|
|
417
487
|
}
|
|
488
|
+
if (message.event.type === "user_language") {
|
|
489
|
+
const language = resolveUserLanguageCode(message.event);
|
|
490
|
+
if (language) {
|
|
491
|
+
await handlers.onUserLanguage?.({
|
|
492
|
+
sessionId: message.sessionId,
|
|
493
|
+
language
|
|
494
|
+
});
|
|
495
|
+
}
|
|
496
|
+
}
|
|
418
497
|
break;
|
|
419
498
|
case "data_channel_message":
|
|
420
499
|
await handlers.onDataChannelMessage?.({
|
|
@@ -459,6 +538,18 @@ function defineAgent(handlers) {
|
|
|
459
538
|
handleRecordingControlAck(message);
|
|
460
539
|
return;
|
|
461
540
|
}
|
|
541
|
+
if (isPlayAckMessage(message)) {
|
|
542
|
+
handlePlayAck(message);
|
|
543
|
+
return;
|
|
544
|
+
}
|
|
545
|
+
if (isPlayStatusAckMessage(message)) {
|
|
546
|
+
handlePlayStatusAck(message);
|
|
547
|
+
return;
|
|
548
|
+
}
|
|
549
|
+
if (isPlayStopAckMessage(message)) {
|
|
550
|
+
handlePlayStopAck(message);
|
|
551
|
+
return;
|
|
552
|
+
}
|
|
462
553
|
if (isMixControlAckMessage(message)) {
|
|
463
554
|
handleMixControlAck(message);
|
|
464
555
|
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, 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";
|
|
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 PlayMessage, type PlayStatusMessage, type PlayStopMessage, type PlayAckMessage, type PlayStatusAckMessage, type PlayStopAckMessage, type PlayStatusState, type PlayResult, type GetPlayResult, type StopPlayResult, 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, getPlay, isMixAvailable, isTtsPoseAvailable, parseChatText, pauseRecording, play, removeClientFromMix, resumeRecording, sendToClient, sendBinaryToClient, setClientPose, setDefaultMixPlacement, setGlobalMute, setListenerMute, setPositionalMixing, setSttEnabled, setTtsMixPlacement, setTtsPosition, setTtsPose, clearTtsPose, speak, startRecording, stopRecording, stopPlay, isRecordingAvailable, broadcastToClients, type AgentHandlers, type AgentErrorContext, type AgentStartContext, type DataChannelContext, type IdleTimeoutContext, type SessionContext, type SpeechContext, type SpeechEventContext, type UserLanguageContext, type WebhookContext, type PlayOptions, type AudioPosition, PLAY_BYTES_MAX_DECODED_LENGTH, } 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,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,
|
|
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,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,KAAK,UAAU,EACf,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,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,OAAO,EACP,cAAc,EACd,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,IAAI,EACJ,mBAAmB,EACnB,eAAe,EACf,YAAY,EACZ,kBAAkB,EAClB,aAAa,EACb,sBAAsB,EACtB,aAAa,EACb,eAAe,EACf,mBAAmB,EACnB,aAAa,EACb,kBAAkB,EAClB,cAAc,EACd,UAAU,EACV,YAAY,EACZ,KAAK,EACL,cAAc,EACd,aAAa,EACb,QAAQ,EACR,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,mBAAmB,EACxB,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,6BAA6B,GAC9B,MAAM,cAAc,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
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";
|
|
2
|
+
export { agentLog, addClientToMix, createMixGroup, defineAgent, disconnectClient, getClientMixStatus, getPlay, isMixAvailable, isTtsPoseAvailable, parseChatText, pauseRecording, play, removeClientFromMix, resumeRecording, sendToClient, sendBinaryToClient, setClientPose, setDefaultMixPlacement, setGlobalMute, setListenerMute, setPositionalMixing, setSttEnabled, setTtsMixPlacement, setTtsPosition, setTtsPose, clearTtsPose, speak, startRecording, stopRecording, stopPlay, isRecordingAvailable, broadcastToClients, PLAY_BYTES_MAX_DECODED_LENGTH, } 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,EACtB,4BAA4B,EAC5B,uBAAuB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,sBAAsB,EACtB,4BAA4B,EAC5B,uBAAuB,GA6CxB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,QAAQ,EACR,cAAc,EACd,cAAc,EACd,WAAW,EACX,gBAAgB,EAChB,kBAAkB,EAClB,OAAO,EACP,cAAc,EACd,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,IAAI,EACJ,mBAAmB,EACnB,eAAe,EACf,YAAY,EACZ,kBAAkB,EAClB,aAAa,EACb,sBAAsB,EACtB,aAAa,EACb,eAAe,EACf,mBAAmB,EACnB,aAAa,EACb,kBAAkB,EAClB,cAAc,EACd,UAAU,EACV,YAAY,EACZ,KAAK,EACL,cAAc,EACd,aAAa,EACb,QAAQ,EACR,oBAAoB,EACpB,kBAAkB,EAalB,6BAA6B,GAC9B,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 | MixControlAckMessage | SttControlAckMessage | WebhookMessage;
|
|
19
|
+
export type ParentToChildMessage = SessionStartMessage | SpeechEventMessage | SessionEndMessage | DataChannelMessageMessage | DataChannelBinaryMessage | IdleTimeoutMessage | RecordingControlAckMessage | PlayAckMessage | PlayStatusAckMessage | PlayStopAckMessage | 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 | MixControlMessage | SttControlMessage | AgentLogMessage | AgentErrorMessage | SendToClientMessage | SendBinaryToClientMessage | IdleTimeoutDoneMessage | DisconnectClientMessage | WebhookHandledMessage;
|
|
25
|
+
export type ChildToParentMessage = SessionStartAckMessage | SpeakMessage | RecordingControlMessage | PlayMessage | PlayStatusMessage | PlayStopMessage | 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
|
/**
|
|
@@ -60,10 +60,11 @@ export interface SessionStartMessage {
|
|
|
60
60
|
* Forwards one speech lifecycle event from the parent Sherpa/VAD/STT/TTS pipeline.
|
|
61
61
|
*
|
|
62
62
|
* The {@link SpeechEvent} shape matches `@node-webrtc-rust/sdk/voice` — see SDK docs
|
|
63
|
-
* for `SpeechEventType` semantics (`user_speech_final`, `barge_in`, etc.).
|
|
63
|
+
* for `SpeechEventType` semantics (`user_speech_final`, `user_language`, `barge_in`, etc.).
|
|
64
64
|
*
|
|
65
65
|
* Delivered to customer code as `onSpeechEvent(ctx, message.event)`; `user_speech_final`
|
|
66
|
-
* also triggers the `onUserSpeechFinal` handler when `event.text` is non-empty
|
|
66
|
+
* also triggers the `onUserSpeechFinal` handler when `event.text` is non-empty, and
|
|
67
|
+
* `user_language` triggers `onUserLanguage` when `event.language` or `event.text` is set.
|
|
67
68
|
*/
|
|
68
69
|
export interface SpeechEventMessage {
|
|
69
70
|
type: "speech_event";
|
|
@@ -154,6 +155,93 @@ export type RecordingControlResult = {
|
|
|
154
155
|
reason?: string;
|
|
155
156
|
requestId: string;
|
|
156
157
|
};
|
|
158
|
+
/**
|
|
159
|
+
* Ask the runner parent to fetch and play an audio clip to one or more voice clients.
|
|
160
|
+
*
|
|
161
|
+
* Media fetch and decode run in the runner parent — the sandboxed child sends IPC only.
|
|
162
|
+
* Use {@link play} instead of raw `process.send`.
|
|
163
|
+
*/
|
|
164
|
+
export interface PlayMessage {
|
|
165
|
+
type: "play";
|
|
166
|
+
/** Correlates with {@link PlayAckMessage.requestId}. */
|
|
167
|
+
requestId: string;
|
|
168
|
+
/** HTTPS URL the parent fetches (required unless {@link bytes} is set). */
|
|
169
|
+
url: string;
|
|
170
|
+
/**
|
|
171
|
+
* Target orchestrator session ids. Omitted or empty means all connected voice clients
|
|
172
|
+
* (parent interprets).
|
|
173
|
+
*/
|
|
174
|
+
sessionIds?: string[];
|
|
175
|
+
/** Optional output gain hint (parent clamps/validates). */
|
|
176
|
+
volume?: number;
|
|
177
|
+
/** Optional small inline clip as base64 (capped in {@link play}). */
|
|
178
|
+
bytes?: string;
|
|
179
|
+
/** Named stereo placement for the clip (mutually exclusive with {@link pose}). */
|
|
180
|
+
placement?: MixPlacement;
|
|
181
|
+
/** World pose for clip panning when positional mixing is on (mutually exclusive with {@link placement}). */
|
|
182
|
+
pose?: MixPose;
|
|
183
|
+
}
|
|
184
|
+
/** Ask the runner parent for the current status of a play job. */
|
|
185
|
+
export interface PlayStatusMessage {
|
|
186
|
+
type: "play_status";
|
|
187
|
+
requestId: string;
|
|
188
|
+
playId: string;
|
|
189
|
+
}
|
|
190
|
+
/** Ask the runner parent to stop an in-flight or queued play job. */
|
|
191
|
+
export interface PlayStopMessage {
|
|
192
|
+
type: "play_stop";
|
|
193
|
+
requestId: string;
|
|
194
|
+
playId: string;
|
|
195
|
+
}
|
|
196
|
+
/** Runner acknowledgement for a {@link PlayMessage}. */
|
|
197
|
+
export interface PlayAckMessage {
|
|
198
|
+
type: "play_ack";
|
|
199
|
+
requestId: string;
|
|
200
|
+
ok: boolean;
|
|
201
|
+
playId?: string;
|
|
202
|
+
reason?: "applied" | "unsupported" | "data_only" | "unknown_session" | "fetch_failed" | "decode_failed" | "invalid_payload" | "local_mock" | "timeout" | string;
|
|
203
|
+
}
|
|
204
|
+
/** Lifecycle state for a clip play job (native ClipPlayer snapshot). */
|
|
205
|
+
export type PlayStatusState = "buffering" | "playing" | "stopped" | "ended" | "error";
|
|
206
|
+
/** Runner acknowledgement for a {@link PlayStatusMessage}. */
|
|
207
|
+
export interface PlayStatusAckMessage {
|
|
208
|
+
type: "play_status_ack";
|
|
209
|
+
requestId: string;
|
|
210
|
+
ok: boolean;
|
|
211
|
+
playId: string;
|
|
212
|
+
status?: PlayStatusState;
|
|
213
|
+
reason?: "applied" | "unsupported" | "unknown_play" | "local_mock" | "timeout" | string;
|
|
214
|
+
}
|
|
215
|
+
/** Runner acknowledgement for a {@link PlayStopMessage}. */
|
|
216
|
+
export interface PlayStopAckMessage {
|
|
217
|
+
type: "play_stop_ack";
|
|
218
|
+
requestId: string;
|
|
219
|
+
ok: boolean;
|
|
220
|
+
playId: string;
|
|
221
|
+
reason?: "applied" | "unsupported" | "unknown_play" | "local_mock" | "timeout" | string;
|
|
222
|
+
}
|
|
223
|
+
/** Result returned by {@link play}. */
|
|
224
|
+
export type PlayResult = {
|
|
225
|
+
ok: boolean;
|
|
226
|
+
playId?: string;
|
|
227
|
+
reason?: string;
|
|
228
|
+
requestId: string;
|
|
229
|
+
};
|
|
230
|
+
/** Result returned by {@link getPlay}. */
|
|
231
|
+
export type GetPlayResult = {
|
|
232
|
+
ok: boolean;
|
|
233
|
+
playId: string;
|
|
234
|
+
status?: PlayStatusState;
|
|
235
|
+
reason?: string;
|
|
236
|
+
requestId: string;
|
|
237
|
+
};
|
|
238
|
+
/** Result returned by {@link stopPlay}. */
|
|
239
|
+
export type StopPlayResult = {
|
|
240
|
+
ok: boolean;
|
|
241
|
+
playId: string;
|
|
242
|
+
reason?: string;
|
|
243
|
+
requestId: string;
|
|
244
|
+
};
|
|
157
245
|
/** Named stereo placement when positional mixing is off (and for TTS panning). */
|
|
158
246
|
export type MixPlacement = "center" | "left" | "right" | "front" | "behind" | "below" | "above";
|
|
159
247
|
/** 6DOF pose for positional mixing (world position + unit quaternion). */
|
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,oBAAoB,GACpB,oBAAoB,GACpB,cAAc,CAAC;AAEnB;;;;GAIG;AACH,MAAM,MAAM,oBAAoB,GAC5B,sBAAsB,GACtB,YAAY,GACZ,uBAAuB,GACvB,iBAAiB,GACjB,iBAAiB,GACjB,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;IAC7B;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED
|
|
1
|
+
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":"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"}
|
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;AAsbH,+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, MixControlResult, MixPlacement, MixPose, RecordingControlResult, SttControlResult } from "./protocol.js";
|
|
2
|
+
import type { AgentLogLevel, DataChannelKind, MixControlResult, MixPlacement, MixPose, PlayResult, GetPlayResult, StopPlayResult, 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 {
|
|
@@ -16,6 +16,12 @@ export interface SpeechContext {
|
|
|
16
16
|
sessionId: string;
|
|
17
17
|
text: string;
|
|
18
18
|
}
|
|
19
|
+
/** Spoken-language identification result (`speech.type` is `user_language`). */
|
|
20
|
+
export interface UserLanguageContext {
|
|
21
|
+
sessionId: string;
|
|
22
|
+
/** ISO 639-1 code from the parent voice pipeline (`en`, `de`, …). */
|
|
23
|
+
language: string;
|
|
24
|
+
}
|
|
19
25
|
export interface SpeechEventContext {
|
|
20
26
|
sessionId: string;
|
|
21
27
|
}
|
|
@@ -66,6 +72,8 @@ export interface AgentHandlers {
|
|
|
66
72
|
onSpeechEvent?: (ctx: SpeechEventContext, event: SpeechEvent) => void | Promise<void>;
|
|
67
73
|
/** Convenience handler — also invoked when `speech.type` is `user_speech_final`. */
|
|
68
74
|
onUserSpeechFinal?: (ctx: SpeechContext) => void | Promise<void>;
|
|
75
|
+
/** Convenience handler — also invoked when `speech.type` is `user_language`. */
|
|
76
|
+
onUserLanguage?: (ctx: UserLanguageContext) => void | Promise<void>;
|
|
69
77
|
/** Alias for {@link AgentHandlers.onSessionEnd}. */
|
|
70
78
|
onClientLeave?: (ctx: {
|
|
71
79
|
sessionId: string;
|
|
@@ -103,6 +111,8 @@ export interface AgentErrorContext {
|
|
|
103
111
|
error: Error;
|
|
104
112
|
customerContext?: Record<string, unknown>;
|
|
105
113
|
}
|
|
114
|
+
/** Max decoded bytes for optional inline `bytes` on {@link play} (base64 in IPC). */
|
|
115
|
+
export declare const PLAY_BYTES_MAX_DECODED_LENGTH: number;
|
|
106
116
|
export type SessionExecutionStore = {
|
|
107
117
|
sessionId: string;
|
|
108
118
|
generation: number;
|
|
@@ -159,6 +169,17 @@ export declare function setDefaultMixPlacement(placement: MixPlacement): Promise
|
|
|
159
169
|
export declare function setTtsMixPlacement(placement: MixPlacement): Promise<MixControlResult>;
|
|
160
170
|
/** Set a live world-space pose for the TTS speaker (positional mixing on). */
|
|
161
171
|
export declare function setTtsPose(sessionId: string, pose: MixPose): Promise<MixControlResult>;
|
|
172
|
+
export type AudioPosition = {
|
|
173
|
+
placement: MixPlacement;
|
|
174
|
+
pose?: never;
|
|
175
|
+
} | {
|
|
176
|
+
pose: MixPose;
|
|
177
|
+
placement?: never;
|
|
178
|
+
};
|
|
179
|
+
/** Unified TTS panning: named placement or per-client world pose. */
|
|
180
|
+
export declare function setTtsPosition(position: AudioPosition, options?: {
|
|
181
|
+
clientId?: string;
|
|
182
|
+
}): Promise<MixControlResult>;
|
|
162
183
|
/** Clear the live TTS pose for one client; named placement applies again. */
|
|
163
184
|
export declare function clearTtsPose(sessionId: string): Promise<MixControlResult>;
|
|
164
185
|
/** Mute or unmute a client globally in the mix (Voice+Data). */
|
|
@@ -199,6 +220,29 @@ export declare function pauseRecording(sessionId: string): Promise<RecordingCont
|
|
|
199
220
|
export declare function resumeRecording(sessionId: string): Promise<RecordingControlResult>;
|
|
200
221
|
/** Ask the runner parent to stop conversation recording for the session. */
|
|
201
222
|
export declare function stopRecording(sessionId: string): Promise<RecordingControlResult>;
|
|
223
|
+
export interface PlayOptions {
|
|
224
|
+
/** HTTPS URL the runner parent fetches (sandbox child does not fetch). */
|
|
225
|
+
url: string;
|
|
226
|
+
/** Target session ids; omit for all voice clients (parent interprets). */
|
|
227
|
+
sessionIds?: readonly string[];
|
|
228
|
+
volume?: number;
|
|
229
|
+
/** Optional small inline clip as base64 (see {@link PLAY_BYTES_MAX_DECODED_LENGTH}). */
|
|
230
|
+
bytes?: string;
|
|
231
|
+
/** Named placement for clip output (mutually exclusive with {@link pose}). */
|
|
232
|
+
placement?: MixPlacement;
|
|
233
|
+
/** World pose for clip panning (mutually exclusive with {@link placement}). */
|
|
234
|
+
pose?: MixPose;
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
* Ask the runner parent to fetch and play an audio clip.
|
|
238
|
+
*
|
|
239
|
+
* The sandboxed child sends IPC only — no network fetch in customer code.
|
|
240
|
+
*/
|
|
241
|
+
export declare function play(options: PlayOptions): Promise<PlayResult>;
|
|
242
|
+
/** Read the current status of a play job started by {@link play}. */
|
|
243
|
+
export declare function getPlay(playId: string): Promise<GetPlayResult>;
|
|
244
|
+
/** Stop a play job started by {@link play}. */
|
|
245
|
+
export declare function stopPlay(playId: string): Promise<StopPlayResult>;
|
|
202
246
|
/** Send a JSON payload to the browser peer via the runner parent. */
|
|
203
247
|
export declare function sendToClient(sessionId: string, payload: unknown): void;
|
|
204
248
|
/** Send raw bytes to the browser peer via the runner parent. */
|
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,gBAAgB,EAChB,YAAY,EACZ,OAAO,
|
|
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,gBAAgB,EAChB,YAAY,EACZ,OAAO,EAGP,UAAU,EAGV,aAAa,EACb,cAAc,EAGd,sBAAsB,EAEtB,gBAAgB,EAEjB,MAAM,eAAe,CAAC;AAOvB,eAAO,MAAM,oCAAoC,2CACP,CAAC;AAC3C,eAAO,MAAM,+BAA+B,sCACP,CAAC;AAGtC,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,iFAAiF;IACjF,kBAAkB,EAAE,OAAO,CAAC;IAC5B,qFAAqF;IACrF,YAAY,EAAE,OAAO,CAAC;IACtB,qFAAqF;IACrF,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,gFAAgF;AAChF,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,qEAAqE;IACrE,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,4EAA4E;IAC5E,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,qEAAqE;IACrE,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,OAAO,EAAE,eAAe,CAAC;CAC1B;AAED,MAAM,WAAW,iBAAiB;IAChC,sFAAsF;IACtF,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC7B;AAED,wEAAwE;AACxE,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,oEAAoE;IACpE,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,yFAAyF;IACzF,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B;;;;OAIG;IACH,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,iBAAiB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChE;;;;OAIG;IACH,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,sDAAsD;IACtD,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7D,cAAc,CAAC,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/D,6EAA6E;IAC7E,aAAa,CAAC,EAAE,CACd,GAAG,EAAE,kBAAkB,EACvB,KAAK,EAAE,WAAW,KACf,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,oFAAoF;IACpF,iBAAiB,CAAC,EAAE,CAAC,GAAG,EAAE,aAAa,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjE,gFAAgF;IAChF,cAAc,CAAC,EAAE,CAAC,GAAG,EAAE,mBAAmB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpE,oDAAoD;IACpD,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrE,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpE,6DAA6D;IAC7D,oBAAoB,CAAC,EAAE,CAAC,GAAG,EAAE,kBAAkB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzE,gEAAgE;IAChE,mBAAmB,CAAC,EAAE,CAAC,GAAG,EAAE,kBAAkB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxE;;;OAGG;IACH,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,kBAAkB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClE;;;OAGG;IACH,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,iBAAiB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9D;AAED,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,KAAK,EAAE,KAAK,CAAC;IACb,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC3C;AAoJD,qFAAqF;AACrF,eAAO,MAAM,6BAA6B,QAAY,CAAC;AAuNvD,MAAM,MAAM,qBAAqB,GAAG;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAyDF;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAgBnE;AAqOD;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI,CAwGzD;AAsHD,qFAAqF;AACrF,wBAAgB,0BAA0B,IAAI,IAAI,CAcjD;AAED,kEAAkE;AAClE,wBAAgB,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAE3D;AAED,wFAAwF;AACxF,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAEjE;AAED,kFAAkF;AAClF,wBAAgB,cAAc,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAE3D;AAED,sFAAsF;AACtF,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAE/D;AAyFD,iEAAiE;AACjE,wBAAgB,cAAc,CAAC,OAAO,EAAE;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAK5B;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,gBAAgB,CAAC,CAE3B;AAED,mEAAmE;AACnE,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,gBAAgB,CAAC,CAE3B;AAED,yDAAyD;AACzD,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,OAAO,GACZ,OAAO,CAAC,gBAAgB,CAAC,CAE3B;AAED,uEAAuE;AACvE,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,gBAAgB,CAAC,CAE3B;AAED,4EAA4E;AAC5E,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,YAAY,GACtB,OAAO,CAAC,gBAAgB,CAAC,CAE3B;AAED,2DAA2D;AAC3D,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,YAAY,GACtB,OAAO,CAAC,gBAAgB,CAAC,CAE3B;AAED,8EAA8E;AAC9E,wBAAgB,UAAU,CACxB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,OAAO,GACZ,OAAO,CAAC,gBAAgB,CAAC,CAE3B;AAED,MAAM,MAAM,aAAa,GACrB;IAAE,SAAS,EAAE,YAAY,CAAC;IAAC,IAAI,CAAC,EAAE,KAAK,CAAA;CAAE,GACzC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,SAAS,CAAC,EAAE,KAAK,CAAA;CAAE,CAAC;AAEzC,qEAAqE;AACrE,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,aAAa,EACvB,OAAO,CAAC,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAC9B,OAAO,CAAC,gBAAgB,CAAC,CAoB3B;AAED,6EAA6E;AAC7E,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAEzE;AAED,gEAAgE;AAChE,wBAAgB,aAAa,CAAC,OAAO,EAAE;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,OAAO,CAAC;IACf,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAQ5B;AAED,6DAA6D;AAC7D,wBAAgB,eAAe,CAAC,OAAO,EAAE;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,OAAO,CAAC;CAChB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAM5B;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,gBAAgB,CAAC,CAI3B;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE;IACrC,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAE5B;AA8CD,6EAA6E;AAC7E,wBAAgB,cAAc,CAC5B,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,sBAAsB,CAAC,CAEjC;AAED,+EAA+E;AAC/E,wBAAgB,cAAc,CAC5B,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,sBAAsB,CAAC,CAEjC;AAED,0EAA0E;AAC1E,wBAAgB,eAAe,CAC7B,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,sBAAsB,CAAC,CAEjC;AAED,4EAA4E;AAC5E,wBAAgB,aAAa,CAC3B,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,sBAAsB,CAAC,CAEjC;AAED,MAAM,WAAW,WAAW;IAC1B,0EAA0E;IAC1E,GAAG,EAAE,MAAM,CAAC;IACZ,0EAA0E;IAC1E,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,wFAAwF;IACxF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,8EAA8E;IAC9E,SAAS,CAAC,EAAE,YAAY,CAAC;IACzB,+EAA+E;IAC/E,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAsID;;;;GAIG;AACH,wBAAgB,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CAE9D;AAED,qEAAqE;AACrE,wBAAgB,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAE9D;AAED,+CAA+C;AAC/C,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAEhE;AAED,qEAAqE;AACrE,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAEtE;AAED,gEAAgE;AAChE,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,GAAG,UAAU,EACzB,OAAO,GAAE,eAAwB,GAChC,IAAI,CAQN;AAED;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,MAAM,GAAG,UAAU,EACzB,UAAU,EAAE,SAAS,MAAM,EAAE,EAC7B,OAAO,GAAE,eAAwB,GAChC,IAAI,CAUN;AAED,+DAA+D;AAC/D,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,SAAS,MAAM,EAAE,GAC5B,IAAI,CAIN;AA4DD,0FAA0F;AAC1F,wBAAgB,QAAQ,CACtB,KAAK,EAAE,aAAa,EACpB,OAAO,EAAE,MAAM,EACf,SAAS,CAAC,EAAE,MAAM,GACjB,IAAI,CAAC;AACR,wBAAgB,QAAQ,CACtB,KAAK,EAAE,aAAa,EACpB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,SAAS,CAAC,EAAE,MAAM,GACjB,IAAI,CAAC;AAwBR,wEAAwE;AACxE,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAC5B,IAAI,CAMN;AAED,4DAA4D;AAC5D,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAM7D"}
|