@framers/agentos 0.1.83 → 0.1.84
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/orchestration/events/GraphEvent.d.ts +39 -0
- package/dist/orchestration/events/GraphEvent.d.ts.map +1 -1
- package/dist/orchestration/events/GraphEvent.js.map +1 -1
- package/dist/orchestration/ir/types.d.ts +34 -1
- package/dist/orchestration/ir/types.d.ts.map +1 -1
- package/dist/orchestration/runtime/NodeExecutor.d.ts +6 -0
- package/dist/orchestration/runtime/NodeExecutor.d.ts.map +1 -1
- package/dist/orchestration/runtime/NodeExecutor.js +5 -0
- package/dist/orchestration/runtime/NodeExecutor.js.map +1 -1
- package/dist/orchestration/runtime/VoiceNodeExecutor.d.ts +105 -0
- package/dist/orchestration/runtime/VoiceNodeExecutor.d.ts.map +1 -0
- package/dist/orchestration/runtime/VoiceNodeExecutor.js +232 -0
- package/dist/orchestration/runtime/VoiceNodeExecutor.js.map +1 -0
- package/dist/orchestration/runtime/VoiceTurnCollector.d.ts +95 -0
- package/dist/orchestration/runtime/VoiceTurnCollector.d.ts.map +1 -0
- package/dist/orchestration/runtime/VoiceTurnCollector.js +148 -0
- package/dist/orchestration/runtime/VoiceTurnCollector.js.map +1 -0
- package/dist/voice-pipeline/VoiceInterruptError.d.ts +52 -0
- package/dist/voice-pipeline/VoiceInterruptError.d.ts.map +1 -0
- package/dist/voice-pipeline/VoiceInterruptError.js +43 -0
- package/dist/voice-pipeline/VoiceInterruptError.js.map +1 -0
- package/dist/voice-pipeline/VoicePipelineOrchestrator.d.ts +44 -1
- package/dist/voice-pipeline/VoicePipelineOrchestrator.d.ts.map +1 -1
- package/dist/voice-pipeline/VoicePipelineOrchestrator.js +63 -0
- package/dist/voice-pipeline/VoicePipelineOrchestrator.js.map +1 -1
- package/dist/voice-pipeline/index.d.ts +1 -0
- package/dist/voice-pipeline/index.d.ts.map +1 -1
- package/dist/voice-pipeline/index.js +1 -0
- package/dist/voice-pipeline/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -139,6 +139,45 @@ export type GraphEvent =
|
|
|
139
139
|
message: string;
|
|
140
140
|
code: string;
|
|
141
141
|
};
|
|
142
|
+
}
|
|
143
|
+
/** Live STT transcription — interim and final results. */
|
|
144
|
+
| {
|
|
145
|
+
type: 'voice_transcript';
|
|
146
|
+
nodeId: string;
|
|
147
|
+
text: string;
|
|
148
|
+
isFinal: boolean;
|
|
149
|
+
speaker?: string;
|
|
150
|
+
confidence: number;
|
|
151
|
+
}
|
|
152
|
+
/** Audio chunk metadata (actual audio flows via IStreamTransport, not events). */
|
|
153
|
+
| {
|
|
154
|
+
type: 'voice_audio';
|
|
155
|
+
nodeId: string;
|
|
156
|
+
direction: 'inbound' | 'outbound';
|
|
157
|
+
format: string;
|
|
158
|
+
durationMs: number;
|
|
159
|
+
}
|
|
160
|
+
/** User barge-in — interrupted the agent mid-speech. */
|
|
161
|
+
| {
|
|
162
|
+
type: 'voice_barge_in';
|
|
163
|
+
nodeId: string;
|
|
164
|
+
interruptedText: string;
|
|
165
|
+
userSpeech: string;
|
|
166
|
+
}
|
|
167
|
+
/** User turn complete — endpoint detection fired. */
|
|
168
|
+
| {
|
|
169
|
+
type: 'voice_turn_complete';
|
|
170
|
+
nodeId: string;
|
|
171
|
+
transcript: string;
|
|
172
|
+
turnIndex: number;
|
|
173
|
+
endpointReason: string;
|
|
174
|
+
}
|
|
175
|
+
/** Voice session lifecycle — started or ended. */
|
|
176
|
+
| {
|
|
177
|
+
type: 'voice_session';
|
|
178
|
+
nodeId: string;
|
|
179
|
+
action: 'started' | 'ended';
|
|
180
|
+
exitReason?: string;
|
|
142
181
|
};
|
|
143
182
|
/**
|
|
144
183
|
* Lightweight event emitter for `GraphEvent` values.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GraphEvent.d.ts","sourceRoot":"","sources":["../../../src/orchestration/events/GraphEvent.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAMjD;;;;;GAKG;AACH,MAAM,MAAM,UAAU;AACpB,gEAAgE;AAC9D;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE;AAEvD,8DAA8D;GAC5D;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC,CAAA;CAAE;AAEpE;;;GAGG;GACD;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE;AAE3E,yFAAyF;GACvF;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE;AAEnF;;;GAGG;GACD;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE;AAEzD,oEAAoE;GAClE;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE;AAExE,8EAA8E;GAC5E;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE;AAE5E;;;GAGG;GACD;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE;AAEpG,6EAA6E;GAC3E;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE;AAEpE;;;;;GAKG;GACD;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,GAAG,qBAAqB,CAAA;CAAE;AAEnG,kFAAkF;GAChF;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE;AAE7D,sEAAsE;GACpE;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE;AAE7D,gFAAgF;GAC9E;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,EAAE,CAAA;CAAE;AAEpE;;;GAGG;GACD;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,OAAO,CAAC;IAAC,eAAe,EAAE,MAAM,CAAA;CAAE;AAEnF,mFAAmF;GACjF;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE;AAE7D;;;GAGG;GACD;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"GraphEvent.d.ts","sourceRoot":"","sources":["../../../src/orchestration/events/GraphEvent.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GraphEvent.js","sourceRoot":"","sources":["../../../src/orchestration/events/GraphEvent.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"GraphEvent.js","sourceRoot":"","sources":["../../../src/orchestration/events/GraphEvent.ts"],"names":[],"mappings":"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"}
|
|
@@ -85,6 +85,34 @@ export type GraphCondition = {
|
|
|
85
85
|
type: 'expression';
|
|
86
86
|
expr: GraphConditionExpr;
|
|
87
87
|
};
|
|
88
|
+
/**
|
|
89
|
+
* Configuration for a voice pipeline node.
|
|
90
|
+
* All fields except `mode` are optional and default from agent.config.json voice section.
|
|
91
|
+
*/
|
|
92
|
+
export interface VoiceNodeConfig {
|
|
93
|
+
/** Voice session mode */
|
|
94
|
+
mode: 'conversation' | 'listen-only' | 'speak-only';
|
|
95
|
+
/** STT provider override */
|
|
96
|
+
stt?: string;
|
|
97
|
+
/** TTS provider override */
|
|
98
|
+
tts?: string;
|
|
99
|
+
/** TTS voice override */
|
|
100
|
+
voice?: string;
|
|
101
|
+
/** Endpointing mode */
|
|
102
|
+
endpointing?: 'acoustic' | 'heuristic' | 'semantic';
|
|
103
|
+
/** Barge-in mode */
|
|
104
|
+
bargeIn?: 'hard-cut' | 'soft-fade' | 'disabled';
|
|
105
|
+
/** Enable diarization */
|
|
106
|
+
diarization?: boolean;
|
|
107
|
+
/** Language (BCP-47) */
|
|
108
|
+
language?: string;
|
|
109
|
+
/** Max turns before node completes (0 = unlimited) */
|
|
110
|
+
maxTurns?: number;
|
|
111
|
+
/** Exit condition */
|
|
112
|
+
exitOn?: 'hangup' | 'silence-timeout' | 'keyword' | 'turns-exhausted' | 'manual';
|
|
113
|
+
/** Keywords that trigger completion (when exitOn: 'keyword') */
|
|
114
|
+
exitKeywords?: string[];
|
|
115
|
+
}
|
|
88
116
|
/**
|
|
89
117
|
* Describes how the runtime should execute a `GraphNode`. Each variant maps to a
|
|
90
118
|
* distinct execution strategy.
|
|
@@ -96,6 +124,7 @@ export type GraphCondition = {
|
|
|
96
124
|
* - `guardrail` — Run one or more guardrail checks; route or block on violation.
|
|
97
125
|
* - `router` — Pure routing node; evaluates a `GraphCondition` and emits no output.
|
|
98
126
|
* - `subgraph` — Delegate to another `CompiledExecutionGraph` with optional field mapping.
|
|
127
|
+
* - `voice` — Run a voice pipeline session with configurable STT/TTS and turn management.
|
|
99
128
|
*/
|
|
100
129
|
export type NodeExecutorConfig = {
|
|
101
130
|
type: 'gmi';
|
|
@@ -145,6 +174,10 @@ export type NodeExecutorConfig = {
|
|
|
145
174
|
inputMapping?: Record<string, string>;
|
|
146
175
|
/** Maps child `artifacts` field paths → parent `scratch` field paths. */
|
|
147
176
|
outputMapping?: Record<string, string>;
|
|
177
|
+
} | {
|
|
178
|
+
type: 'voice';
|
|
179
|
+
/** Voice pipeline session configuration. */
|
|
180
|
+
voiceConfig: VoiceNodeConfig;
|
|
148
181
|
};
|
|
149
182
|
/**
|
|
150
183
|
* Governs automatic retry behaviour for transient node failures.
|
|
@@ -306,7 +339,7 @@ export interface GraphNode {
|
|
|
306
339
|
/** Unique identifier within the parent `CompiledExecutionGraph`. Must not equal `START` or `END`. */
|
|
307
340
|
id: string;
|
|
308
341
|
/** Coarse type label kept in sync with `executorConfig.type` for fast switching. */
|
|
309
|
-
type: 'gmi' | 'tool' | 'extension' | 'human' | 'guardrail' | 'router' | 'subgraph';
|
|
342
|
+
type: 'gmi' | 'tool' | 'extension' | 'human' | 'guardrail' | 'router' | 'subgraph' | 'voice';
|
|
310
343
|
/** Full executor configuration; discriminated union determines runtime strategy. */
|
|
311
344
|
executorConfig: NodeExecutorConfig;
|
|
312
345
|
/** Controls the LLM turn budget for this node. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/orchestration/ir/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAMH,6EAA6E;AAC7E,eAAO,MAAM,KAAK,EAAG,WAAoB,CAAC;AAE1C,4EAA4E;AAC5E,eAAO,MAAM,GAAG,EAAG,SAAkB,CAAC;AAMtC;;;;;;GAMG;AACH,MAAM,MAAM,iBAAiB,GAAG,aAAa,GAAG,eAAe,GAAG,oBAAoB,CAAC;AAEvF;;;;;;;;;GASG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,UAAU,GAAG,OAAO,CAAC;AAM3E;;;;;;;;GAQG;AACH,MAAM,MAAM,eAAe,GAAG,UAAU,GAAG,UAAU,GAAG,YAAY,GAAG,aAAa,CAAC;AAErF;;;;;;;GAOG;AACH,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,cAAc,CAAC;AAEjF;;;;;;GAMG;AACH,MAAM,MAAM,qBAAqB,GAAG,MAAM,GAAG,UAAU,GAAG,WAAW,CAAC;AAMtE;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,KAAK,EAAE,UAAU,KAAK,MAAM,CAAC;AAE7D;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,GAAG,MAAM,CAAC;AAExC;;;;;GAKG;AACH,MAAM,MAAM,cAAc,GACtB;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,EAAE,EAAE,gBAAgB,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GAChE;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,IAAI,EAAE,kBAAkB,CAAA;CAAE,CAAC;AAMrD
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/orchestration/ir/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
import type { GraphNode, GraphState, CompiledExecutionGraph } from '../ir/types.js';
|
|
16
16
|
import type { GraphEvent } from '../events/GraphEvent.js';
|
|
17
17
|
import type { LoopController, LoopChunk, LoopOutput } from './LoopController.js';
|
|
18
|
+
import type { VoiceNodeExecutor } from './VoiceNodeExecutor.js';
|
|
18
19
|
/**
|
|
19
20
|
* The normalised result returned by every `NodeExecutor.execute()` call regardless
|
|
20
21
|
* of which executor variant was dispatched.
|
|
@@ -137,6 +138,11 @@ export interface NodeExecutorDeps {
|
|
|
137
138
|
output?: unknown;
|
|
138
139
|
error?: string;
|
|
139
140
|
}>;
|
|
141
|
+
/**
|
|
142
|
+
* Executor for `voice` nodes. Manages voice pipeline sessions, turn collection,
|
|
143
|
+
* and exit-condition racing. When absent, voice nodes return `success: false`.
|
|
144
|
+
*/
|
|
145
|
+
voiceExecutor?: VoiceNodeExecutor;
|
|
140
146
|
}
|
|
141
147
|
/**
|
|
142
148
|
* Stateless executor that dispatches a `GraphNode` to the appropriate handler.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NodeExecutor.d.ts","sourceRoot":"","sources":["../../../src/orchestration/runtime/NodeExecutor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAkB,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACpG,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"NodeExecutor.d.ts","sourceRoot":"","sources":["../../../src/orchestration/runtime/NodeExecutor.ts"],"names":[],"mappings":"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"}
|
|
@@ -85,6 +85,11 @@ export class NodeExecutor {
|
|
|
85
85
|
return this.executeExtension(config, state);
|
|
86
86
|
case 'subgraph':
|
|
87
87
|
return this.executeSubgraph(config, state);
|
|
88
|
+
case 'voice':
|
|
89
|
+
if (!this.deps.voiceExecutor) {
|
|
90
|
+
return { success: false, error: 'VoiceNodeExecutor not configured' };
|
|
91
|
+
}
|
|
92
|
+
return this.deps.voiceExecutor.execute(node, state);
|
|
88
93
|
}
|
|
89
94
|
}
|
|
90
95
|
// ---------------------------------------------------------------------------
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NodeExecutor.js","sourceRoot":"","sources":["../../../src/orchestration/runtime/NodeExecutor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;
|
|
1
|
+
{"version":3,"file":"NodeExecutor.js","sourceRoot":"","sources":["../../../src/orchestration/runtime/NodeExecutor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file VoiceNodeExecutor.ts
|
|
3
|
+
* @description Executes voice nodes in the orchestration graph by managing a voice
|
|
4
|
+
* pipeline session, collecting turns via {@link VoiceTurnCollector}, and racing
|
|
5
|
+
* multiple exit conditions (hangup, turns exhausted, keyword, silence timeout,
|
|
6
|
+
* barge-in abort) to determine when the voice node completes.
|
|
7
|
+
*
|
|
8
|
+
* The executor follows the standard 2-arg `execute(node, state)` contract used by
|
|
9
|
+
* {@link NodeExecutor}. It creates an internal `AbortController` for barge-in
|
|
10
|
+
* support and optionally merges a parent abort signal from `state.scratch.abortSignal`.
|
|
11
|
+
*
|
|
12
|
+
* Voice transport and session references are expected in `state.scratch`:
|
|
13
|
+
* - `voiceTransport` — the bidirectional transport EventEmitter (emits `close` / `disconnected`).
|
|
14
|
+
* - `voiceTransport._voiceSession` — the voice pipeline session EventEmitter that fires
|
|
15
|
+
* `final_transcript`, `turn_complete`, `speech_start`, and `barge_in` events.
|
|
16
|
+
*
|
|
17
|
+
* Checkpoint data is stored in `state.scratch[nodeId]` as a {@link VoiceNodeCheckpoint},
|
|
18
|
+
* enabling the graph runtime to resume a voice session from the exact turn index where
|
|
19
|
+
* it was previously suspended.
|
|
20
|
+
*/
|
|
21
|
+
import type { GraphNode, GraphState, VoiceNodeConfig } from '../ir/types.js';
|
|
22
|
+
import type { GraphEvent } from '../events/GraphEvent.js';
|
|
23
|
+
import type { NodeExecutionResult } from './NodeExecutor.js';
|
|
24
|
+
/**
|
|
25
|
+
* Checkpoint data stored in `state.scratch[nodeId]` after a voice node completes.
|
|
26
|
+
*
|
|
27
|
+
* The graph runtime persists this structure so that a subsequent invocation of the
|
|
28
|
+
* same voice node (e.g. after a graph loop or checkpoint restore) can continue the
|
|
29
|
+
* conversation from `turnIndex` rather than resetting to zero.
|
|
30
|
+
*/
|
|
31
|
+
export interface VoiceNodeCheckpoint {
|
|
32
|
+
/** Number of turns completed when the checkpoint was captured. */
|
|
33
|
+
turnIndex: number;
|
|
34
|
+
/** Full transcript buffer at the time of checkpoint. */
|
|
35
|
+
transcript: Array<{
|
|
36
|
+
speaker: string;
|
|
37
|
+
text: string;
|
|
38
|
+
timestamp: number;
|
|
39
|
+
}>;
|
|
40
|
+
/** Exit reason that caused the voice node to complete (`null` if still in progress). */
|
|
41
|
+
lastExitReason: string | null;
|
|
42
|
+
/** Maps diarization speaker labels to human-readable names (reserved for future use). */
|
|
43
|
+
speakerMap: Record<string, string>;
|
|
44
|
+
/** The voice config that was active when this checkpoint was created. */
|
|
45
|
+
sessionConfig: VoiceNodeConfig;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Executes voice-type graph nodes by running a voice pipeline session and racing
|
|
49
|
+
* multiple exit conditions to determine when the node is done.
|
|
50
|
+
*
|
|
51
|
+
* Exit conditions are evaluated concurrently via a single `Promise` race:
|
|
52
|
+
* - **Hangup** — transport emits `close` or `disconnected`.
|
|
53
|
+
* - **Turns exhausted** — session emits `turn_complete` and the collector's count
|
|
54
|
+
* reaches `config.maxTurns`.
|
|
55
|
+
* - **Keyword** — a `final_transcript` event contains one of `config.exitKeywords`.
|
|
56
|
+
* - **Silence timeout** — no speech activity for 30 seconds (when `exitOn: 'silence-timeout'`).
|
|
57
|
+
* - **Abort/barge-in** — the internal `AbortController` is signalled, either by a
|
|
58
|
+
* parent abort signal or a `VoiceInterruptError`.
|
|
59
|
+
*
|
|
60
|
+
* @example
|
|
61
|
+
* ```ts
|
|
62
|
+
* const executor = new VoiceNodeExecutor((event) => emitter.emit(event));
|
|
63
|
+
* const result = await executor.execute(voiceNode, graphState);
|
|
64
|
+
* console.log(result.output.exitReason); // 'turns-exhausted' | 'hangup' | 'keyword:goodbye' | ...
|
|
65
|
+
* ```
|
|
66
|
+
*/
|
|
67
|
+
export declare class VoiceNodeExecutor {
|
|
68
|
+
private readonly eventSink;
|
|
69
|
+
/**
|
|
70
|
+
* @param eventSink - Callback invoked synchronously for every emitted {@link GraphEvent}.
|
|
71
|
+
* Typically bound to the graph runtime's event emitter.
|
|
72
|
+
*/
|
|
73
|
+
constructor(eventSink: (event: GraphEvent) => void);
|
|
74
|
+
/**
|
|
75
|
+
* Execute a voice node. Matches the standard 2-arg `execute(node, state)` signature
|
|
76
|
+
* used throughout the orchestration runtime.
|
|
77
|
+
*
|
|
78
|
+
* Creates an internal `AbortController` for barge-in, wires up a
|
|
79
|
+
* {@link VoiceTurnCollector} on the session, and races exit conditions to
|
|
80
|
+
* determine when the node completes.
|
|
81
|
+
*
|
|
82
|
+
* @param node - Immutable voice node descriptor from the compiled graph IR.
|
|
83
|
+
* @param state - Current (partial) graph state threaded from the runtime.
|
|
84
|
+
* @returns A {@link NodeExecutionResult} with transcript, exit reason, and optional route target.
|
|
85
|
+
*/
|
|
86
|
+
execute(node: GraphNode, state: Partial<GraphState>): Promise<NodeExecutionResult>;
|
|
87
|
+
/**
|
|
88
|
+
* Races all configured exit conditions against each other and resolves with
|
|
89
|
+
* the first one that fires.
|
|
90
|
+
*
|
|
91
|
+
* Listeners are attached to the session and transport EventEmitters. The
|
|
92
|
+
* `AbortController` signal is also monitored — if it fires with a
|
|
93
|
+
* {@link VoiceInterruptError} the Promise rejects (handled by the caller),
|
|
94
|
+
* otherwise it resolves with `{ reason: 'interrupted' }`.
|
|
95
|
+
*
|
|
96
|
+
* @param session - Voice pipeline session EventEmitter.
|
|
97
|
+
* @param collector - Active turn collector tracking turn count.
|
|
98
|
+
* @param config - Voice node configuration with exit settings.
|
|
99
|
+
* @param controller - Internal AbortController for barge-in signalling.
|
|
100
|
+
* @param transport - Bidirectional transport EventEmitter.
|
|
101
|
+
* @returns The winning exit condition's reason string and optional interrupted text.
|
|
102
|
+
*/
|
|
103
|
+
private raceExitConditions;
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=VoiceNodeExecutor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VoiceNodeExecutor.d.ts","sourceRoot":"","sources":["../../../src/orchestration/runtime/VoiceNodeExecutor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAC7E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAQ7D;;;;;;GAMG;AACH,MAAM,WAAW,mBAAmB;IAClC,kEAAkE;IAClE,SAAS,EAAE,MAAM,CAAC;IAClB,wDAAwD;IACxD,UAAU,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACxE,wFAAwF;IACxF,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,yFAAyF;IACzF,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,yEAAyE;IACzE,aAAa,EAAE,eAAe,CAAC;CAChC;AAMD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBAAa,iBAAiB;IAM1B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAL5B;;;OAGG;gBAEgB,SAAS,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI;IAGzD;;;;;;;;;;;OAWG;IACG,OAAO,CACX,IAAI,EAAE,SAAS,EACf,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC,GACzB,OAAO,CAAC,mBAAmB,CAAC;IA0G/B;;;;;;;;;;;;;;;OAeG;YACW,kBAAkB;CA2EjC"}
|
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file VoiceNodeExecutor.ts
|
|
3
|
+
* @description Executes voice nodes in the orchestration graph by managing a voice
|
|
4
|
+
* pipeline session, collecting turns via {@link VoiceTurnCollector}, and racing
|
|
5
|
+
* multiple exit conditions (hangup, turns exhausted, keyword, silence timeout,
|
|
6
|
+
* barge-in abort) to determine when the voice node completes.
|
|
7
|
+
*
|
|
8
|
+
* The executor follows the standard 2-arg `execute(node, state)` contract used by
|
|
9
|
+
* {@link NodeExecutor}. It creates an internal `AbortController` for barge-in
|
|
10
|
+
* support and optionally merges a parent abort signal from `state.scratch.abortSignal`.
|
|
11
|
+
*
|
|
12
|
+
* Voice transport and session references are expected in `state.scratch`:
|
|
13
|
+
* - `voiceTransport` — the bidirectional transport EventEmitter (emits `close` / `disconnected`).
|
|
14
|
+
* - `voiceTransport._voiceSession` — the voice pipeline session EventEmitter that fires
|
|
15
|
+
* `final_transcript`, `turn_complete`, `speech_start`, and `barge_in` events.
|
|
16
|
+
*
|
|
17
|
+
* Checkpoint data is stored in `state.scratch[nodeId]` as a {@link VoiceNodeCheckpoint},
|
|
18
|
+
* enabling the graph runtime to resume a voice session from the exact turn index where
|
|
19
|
+
* it was previously suspended.
|
|
20
|
+
*/
|
|
21
|
+
import { EventEmitter } from 'events';
|
|
22
|
+
import { VoiceTurnCollector } from './VoiceTurnCollector.js';
|
|
23
|
+
import { VoiceInterruptError } from '../../voice-pipeline/VoiceInterruptError.js';
|
|
24
|
+
// ---------------------------------------------------------------------------
|
|
25
|
+
// VoiceNodeExecutor
|
|
26
|
+
// ---------------------------------------------------------------------------
|
|
27
|
+
/**
|
|
28
|
+
* Executes voice-type graph nodes by running a voice pipeline session and racing
|
|
29
|
+
* multiple exit conditions to determine when the node is done.
|
|
30
|
+
*
|
|
31
|
+
* Exit conditions are evaluated concurrently via a single `Promise` race:
|
|
32
|
+
* - **Hangup** — transport emits `close` or `disconnected`.
|
|
33
|
+
* - **Turns exhausted** — session emits `turn_complete` and the collector's count
|
|
34
|
+
* reaches `config.maxTurns`.
|
|
35
|
+
* - **Keyword** — a `final_transcript` event contains one of `config.exitKeywords`.
|
|
36
|
+
* - **Silence timeout** — no speech activity for 30 seconds (when `exitOn: 'silence-timeout'`).
|
|
37
|
+
* - **Abort/barge-in** — the internal `AbortController` is signalled, either by a
|
|
38
|
+
* parent abort signal or a `VoiceInterruptError`.
|
|
39
|
+
*
|
|
40
|
+
* @example
|
|
41
|
+
* ```ts
|
|
42
|
+
* const executor = new VoiceNodeExecutor((event) => emitter.emit(event));
|
|
43
|
+
* const result = await executor.execute(voiceNode, graphState);
|
|
44
|
+
* console.log(result.output.exitReason); // 'turns-exhausted' | 'hangup' | 'keyword:goodbye' | ...
|
|
45
|
+
* ```
|
|
46
|
+
*/
|
|
47
|
+
export class VoiceNodeExecutor {
|
|
48
|
+
/**
|
|
49
|
+
* @param eventSink - Callback invoked synchronously for every emitted {@link GraphEvent}.
|
|
50
|
+
* Typically bound to the graph runtime's event emitter.
|
|
51
|
+
*/
|
|
52
|
+
constructor(eventSink) {
|
|
53
|
+
this.eventSink = eventSink;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Execute a voice node. Matches the standard 2-arg `execute(node, state)` signature
|
|
57
|
+
* used throughout the orchestration runtime.
|
|
58
|
+
*
|
|
59
|
+
* Creates an internal `AbortController` for barge-in, wires up a
|
|
60
|
+
* {@link VoiceTurnCollector} on the session, and races exit conditions to
|
|
61
|
+
* determine when the node completes.
|
|
62
|
+
*
|
|
63
|
+
* @param node - Immutable voice node descriptor from the compiled graph IR.
|
|
64
|
+
* @param state - Current (partial) graph state threaded from the runtime.
|
|
65
|
+
* @returns A {@link NodeExecutionResult} with transcript, exit reason, and optional route target.
|
|
66
|
+
*/
|
|
67
|
+
async execute(node, state) {
|
|
68
|
+
const config = node.executorConfig;
|
|
69
|
+
if (config.type !== 'voice') {
|
|
70
|
+
return { success: false, error: 'VoiceNodeExecutor received non-voice node' };
|
|
71
|
+
}
|
|
72
|
+
const voiceConfig = config.voiceConfig;
|
|
73
|
+
// Internal AbortController for barge-in or parent cancellation.
|
|
74
|
+
const controller = new AbortController();
|
|
75
|
+
// If a parent abort signal exists in scratch, forward its abort to ours.
|
|
76
|
+
const parentSignal = state?.scratch?.abortSignal;
|
|
77
|
+
if (parentSignal) {
|
|
78
|
+
parentSignal.addEventListener('abort', () => controller.abort(parentSignal.reason), { once: true });
|
|
79
|
+
}
|
|
80
|
+
// Voice transport must be pre-placed in state.scratch by the graph runtime.
|
|
81
|
+
const transport = state?.scratch?.voiceTransport;
|
|
82
|
+
if (!transport) {
|
|
83
|
+
return { success: false, error: 'Voice node requires voiceTransport in state.scratch' };
|
|
84
|
+
}
|
|
85
|
+
// Check for checkpoint restore — continue from a prior turn index.
|
|
86
|
+
const checkpoint = state?.scratch?.[node.id];
|
|
87
|
+
const initialTurnCount = checkpoint?.turnIndex ?? 0;
|
|
88
|
+
// Emit session lifecycle event: started.
|
|
89
|
+
this.eventSink({ type: 'voice_session', nodeId: node.id, action: 'started' });
|
|
90
|
+
try {
|
|
91
|
+
// The voice session EventEmitter is expected on transport._voiceSession.
|
|
92
|
+
// In production this is the VoicePipelineSession; in tests it can be a plain EventEmitter.
|
|
93
|
+
const session = transport._voiceSession ?? new EventEmitter();
|
|
94
|
+
// Create the turn collector — it subscribes to session events and buffers transcript.
|
|
95
|
+
const collector = new VoiceTurnCollector(session, this.eventSink, node.id, initialTurnCount);
|
|
96
|
+
// Race all exit conditions against each other.
|
|
97
|
+
const result = await this.raceExitConditions(session, collector, voiceConfig, controller, transport);
|
|
98
|
+
// Resolve exitReason → routeTarget from node edges.
|
|
99
|
+
const edges = node.edges ?? {};
|
|
100
|
+
const routeTarget = typeof edges === 'object' ? edges[result.reason] : undefined;
|
|
101
|
+
// Build checkpoint for scratch so the runtime can persist/restore later.
|
|
102
|
+
const voiceCheckpoint = {
|
|
103
|
+
turnIndex: collector.getTurnCount(),
|
|
104
|
+
transcript: collector.getTranscript(),
|
|
105
|
+
lastExitReason: result.reason,
|
|
106
|
+
speakerMap: {},
|
|
107
|
+
sessionConfig: voiceConfig,
|
|
108
|
+
};
|
|
109
|
+
// Emit session lifecycle event: ended.
|
|
110
|
+
this.eventSink({ type: 'voice_session', nodeId: node.id, action: 'ended', exitReason: result.reason });
|
|
111
|
+
return {
|
|
112
|
+
success: true,
|
|
113
|
+
output: {
|
|
114
|
+
transcript: collector.getTranscript(),
|
|
115
|
+
turns: collector.getTurnCount(),
|
|
116
|
+
exitReason: result.reason,
|
|
117
|
+
lastSpeaker: collector.getLastSpeaker(),
|
|
118
|
+
interruptedText: result.interruptedText,
|
|
119
|
+
},
|
|
120
|
+
routeTarget,
|
|
121
|
+
scratchUpdate: { [node.id]: voiceCheckpoint },
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
catch (err) {
|
|
125
|
+
// VoiceInterruptError is a structured barge-in — treat as a successful exit
|
|
126
|
+
// with exitReason: 'interrupted' so the graph can route accordingly.
|
|
127
|
+
if (err instanceof VoiceInterruptError) {
|
|
128
|
+
const edges = node.edges ?? {};
|
|
129
|
+
const routeTarget = edges['interrupted'];
|
|
130
|
+
this.eventSink({ type: 'voice_session', nodeId: node.id, action: 'ended', exitReason: 'interrupted' });
|
|
131
|
+
return {
|
|
132
|
+
success: true,
|
|
133
|
+
output: {
|
|
134
|
+
transcript: [],
|
|
135
|
+
turns: 0,
|
|
136
|
+
exitReason: 'interrupted',
|
|
137
|
+
interruptedText: err.interruptedText,
|
|
138
|
+
userSpeech: err.userSpeech,
|
|
139
|
+
},
|
|
140
|
+
routeTarget,
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
// Unhandled error — surface as a failed result.
|
|
144
|
+
this.eventSink({ type: 'voice_session', nodeId: node.id, action: 'ended', exitReason: 'error' });
|
|
145
|
+
return { success: false, error: String(err) };
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
// ---------------------------------------------------------------------------
|
|
149
|
+
// Private helpers
|
|
150
|
+
// ---------------------------------------------------------------------------
|
|
151
|
+
/**
|
|
152
|
+
* Races all configured exit conditions against each other and resolves with
|
|
153
|
+
* the first one that fires.
|
|
154
|
+
*
|
|
155
|
+
* Listeners are attached to the session and transport EventEmitters. The
|
|
156
|
+
* `AbortController` signal is also monitored — if it fires with a
|
|
157
|
+
* {@link VoiceInterruptError} the Promise rejects (handled by the caller),
|
|
158
|
+
* otherwise it resolves with `{ reason: 'interrupted' }`.
|
|
159
|
+
*
|
|
160
|
+
* @param session - Voice pipeline session EventEmitter.
|
|
161
|
+
* @param collector - Active turn collector tracking turn count.
|
|
162
|
+
* @param config - Voice node configuration with exit settings.
|
|
163
|
+
* @param controller - Internal AbortController for barge-in signalling.
|
|
164
|
+
* @param transport - Bidirectional transport EventEmitter.
|
|
165
|
+
* @returns The winning exit condition's reason string and optional interrupted text.
|
|
166
|
+
*/
|
|
167
|
+
async raceExitConditions(session, collector, config, controller, transport) {
|
|
168
|
+
return new Promise((resolve, reject) => {
|
|
169
|
+
/** Prevent double-resolution from multiple conditions firing simultaneously. */
|
|
170
|
+
let settled = false;
|
|
171
|
+
/**
|
|
172
|
+
* Settle the promise with a resolve value, guarding against double-settle.
|
|
173
|
+
* @param result - The exit condition result.
|
|
174
|
+
*/
|
|
175
|
+
const settleWith = (result) => {
|
|
176
|
+
if (settled)
|
|
177
|
+
return;
|
|
178
|
+
settled = true;
|
|
179
|
+
resolve(result);
|
|
180
|
+
};
|
|
181
|
+
// -- Hangup: transport disconnects -----------------------------------
|
|
182
|
+
const onDisconnect = () => settleWith({ reason: 'hangup' });
|
|
183
|
+
transport.on('close', onDisconnect);
|
|
184
|
+
transport.on('disconnected', onDisconnect);
|
|
185
|
+
// -- Turns exhausted -------------------------------------------------
|
|
186
|
+
if (config.maxTurns && config.maxTurns > 0) {
|
|
187
|
+
session.on('turn_complete', () => {
|
|
188
|
+
if (collector.getTurnCount() >= config.maxTurns) {
|
|
189
|
+
settleWith({ reason: 'turns-exhausted' });
|
|
190
|
+
}
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
// -- Keyword detection -----------------------------------------------
|
|
194
|
+
if (config.exitOn === 'keyword' && config.exitKeywords?.length) {
|
|
195
|
+
session.on('final_transcript', (evt) => {
|
|
196
|
+
const text = (evt.text ?? '').toLowerCase();
|
|
197
|
+
for (const kw of config.exitKeywords) {
|
|
198
|
+
if (text.includes(kw.toLowerCase())) {
|
|
199
|
+
settleWith({ reason: `keyword:${kw}` });
|
|
200
|
+
return;
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
// -- Silence timeout (default 30 s) ----------------------------------
|
|
206
|
+
if (config.exitOn === 'silence-timeout') {
|
|
207
|
+
let silenceTimer = null;
|
|
208
|
+
const timeoutMs = 30000;
|
|
209
|
+
/** Reset the silence watchdog — called on any speech activity. */
|
|
210
|
+
const resetTimer = () => {
|
|
211
|
+
if (silenceTimer)
|
|
212
|
+
clearTimeout(silenceTimer);
|
|
213
|
+
silenceTimer = setTimeout(() => settleWith({ reason: 'silence-timeout' }), timeoutMs);
|
|
214
|
+
};
|
|
215
|
+
session.on('speech_start', resetTimer);
|
|
216
|
+
session.on('turn_complete', resetTimer);
|
|
217
|
+
resetTimer(); // Start the initial timer immediately.
|
|
218
|
+
}
|
|
219
|
+
// -- Abort signal (barge-in or parent cancellation) ------------------
|
|
220
|
+
controller.signal.addEventListener('abort', () => {
|
|
221
|
+
const reason = controller.signal.reason;
|
|
222
|
+
if (reason instanceof VoiceInterruptError) {
|
|
223
|
+
reject(reason);
|
|
224
|
+
}
|
|
225
|
+
else {
|
|
226
|
+
settleWith({ reason: 'interrupted' });
|
|
227
|
+
}
|
|
228
|
+
}, { once: true });
|
|
229
|
+
});
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
//# sourceMappingURL=VoiceNodeExecutor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VoiceNodeExecutor.js","sourceRoot":"","sources":["../../../src/orchestration/runtime/VoiceNodeExecutor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAItC,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,6CAA6C,CAAC;AA0BlF,8EAA8E;AAC9E,oBAAoB;AACpB,8EAA8E;AAE9E;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,OAAO,iBAAiB;IAC5B;;;OAGG;IACH,YACmB,SAAsC;QAAtC,cAAS,GAAT,SAAS,CAA6B;IACtD,CAAC;IAEJ;;;;;;;;;;;OAWG;IACH,KAAK,CAAC,OAAO,CACX,IAAe,EACf,KAA0B;QAE1B,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC;QACnC,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC5B,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,2CAA2C,EAAE,CAAC;QAChF,CAAC;QACD,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;QAEvC,gEAAgE;QAChE,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QAEzC,yEAAyE;QACzE,MAAM,YAAY,GAAI,KAAa,EAAE,OAAO,EAAE,WAAsC,CAAC;QACrF,IAAI,YAAY,EAAE,CAAC;YACjB,YAAY,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QACtG,CAAC;QAED,4EAA4E;QAC5E,MAAM,SAAS,GAAI,KAAa,EAAE,OAAO,EAAE,cAA0C,CAAC;QACtF,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,qDAAqD,EAAE,CAAC;QAC1F,CAAC;QAED,mEAAmE;QACnE,MAAM,UAAU,GAAI,KAAa,EAAE,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE,CAAoC,CAAC;QACzF,MAAM,gBAAgB,GAAG,UAAU,EAAE,SAAS,IAAI,CAAC,CAAC;QAEpD,yCAAyC;QACzC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;QAE9E,IAAI,CAAC;YACH,yEAAyE;YACzE,2FAA2F;YAC3F,MAAM,OAAO,GAAkB,SAAiB,CAAC,aAAa,IAAI,IAAI,YAAY,EAAE,CAAC;YAErF,sFAAsF;YACtF,MAAM,SAAS,GAAG,IAAI,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE,gBAAgB,CAAC,CAAC;YAE7F,+CAA+C;YAC/C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAC1C,OAAO,EACP,SAAS,EACT,WAAW,EACX,UAAU,EACV,SAAS,CACV,CAAC;YAEF,oDAAoD;YACpD,MAAM,KAAK,GAAI,IAAY,CAAC,KAAK,IAAI,EAAE,CAAC;YACxC,MAAM,WAAW,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAEjF,yEAAyE;YACzE,MAAM,eAAe,GAAwB;gBAC3C,SAAS,EAAE,SAAS,CAAC,YAAY,EAAE;gBACnC,UAAU,EAAE,SAAS,CAAC,aAAa,EAAE;gBACrC,cAAc,EAAE,MAAM,CAAC,MAAM;gBAC7B,UAAU,EAAE,EAAE;gBACd,aAAa,EAAE,WAAW;aAC3B,CAAC;YAEF,uCAAuC;YACvC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;YAEvG,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE;oBACN,UAAU,EAAE,SAAS,CAAC,aAAa,EAAE;oBACrC,KAAK,EAAE,SAAS,CAAC,YAAY,EAAE;oBAC/B,UAAU,EAAE,MAAM,CAAC,MAAM;oBACzB,WAAW,EAAE,SAAS,CAAC,cAAc,EAAE;oBACvC,eAAe,EAAE,MAAM,CAAC,eAAe;iBACxC;gBACD,WAAW;gBACX,aAAa,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,eAAe,EAAE;aAC9C,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,4EAA4E;YAC5E,qEAAqE;YACrE,IAAI,GAAG,YAAY,mBAAmB,EAAE,CAAC;gBACvC,MAAM,KAAK,GAAI,IAAY,CAAC,KAAK,IAAI,EAAE,CAAC;gBACxC,MAAM,WAAW,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC;gBAEzC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,CAAC,CAAC;gBAEvG,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,MAAM,EAAE;wBACN,UAAU,EAAE,EAAE;wBACd,KAAK,EAAE,CAAC;wBACR,UAAU,EAAE,aAAa;wBACzB,eAAe,EAAE,GAAG,CAAC,eAAe;wBACpC,UAAU,EAAE,GAAG,CAAC,UAAU;qBAC3B;oBACD,WAAW;iBACZ,CAAC;YACJ,CAAC;YAED,gDAAgD;YAChD,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,CAAC;YACjG,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;QAChD,CAAC;IACH,CAAC;IAED,8EAA8E;IAC9E,kBAAkB;IAClB,8EAA8E;IAE9E;;;;;;;;;;;;;;;OAeG;IACK,KAAK,CAAC,kBAAkB,CAC9B,OAAqB,EACrB,SAA6B,EAC7B,MAAuB,EACvB,UAA2B,EAC3B,SAAuB;QAEvB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,gFAAgF;YAChF,IAAI,OAAO,GAAG,KAAK,CAAC;YAEpB;;;eAGG;YACH,MAAM,UAAU,GAAG,CAAC,MAAoD,EAAQ,EAAE;gBAChF,IAAI,OAAO;oBAAE,OAAO;gBACpB,OAAO,GAAG,IAAI,CAAC;gBACf,OAAO,CAAC,MAAM,CAAC,CAAC;YAClB,CAAC,CAAC;YAEF,uEAAuE;YACvE,MAAM,YAAY,GAAG,GAAS,EAAE,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;YAClE,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;YACpC,SAAS,CAAC,EAAE,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;YAE3C,uEAAuE;YACvE,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC;gBAC3C,OAAO,CAAC,EAAE,CAAC,eAAe,EAAE,GAAG,EAAE;oBAC/B,IAAI,SAAS,CAAC,YAAY,EAAE,IAAI,MAAM,CAAC,QAAS,EAAE,CAAC;wBACjD,UAAU,CAAC,EAAE,MAAM,EAAE,iBAAiB,EAAE,CAAC,CAAC;oBAC5C,CAAC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC;YAED,uEAAuE;YACvE,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC;gBAC/D,OAAO,CAAC,EAAE,CAAC,kBAAkB,EAAE,CAAC,GAAQ,EAAE,EAAE;oBAC1C,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;oBAC5C,KAAK,MAAM,EAAE,IAAI,MAAM,CAAC,YAAa,EAAE,CAAC;wBACtC,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;4BACpC,UAAU,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC;4BACxC,OAAO;wBACT,CAAC;oBACH,CAAC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC;YAED,uEAAuE;YACvE,IAAI,MAAM,CAAC,MAAM,KAAK,iBAAiB,EAAE,CAAC;gBACxC,IAAI,YAAY,GAAyC,IAAI,CAAC;gBAC9D,MAAM,SAAS,GAAG,KAAM,CAAC;gBAEzB,kEAAkE;gBAClE,MAAM,UAAU,GAAG,GAAS,EAAE;oBAC5B,IAAI,YAAY;wBAAE,YAAY,CAAC,YAAY,CAAC,CAAC;oBAC7C,YAAY,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,iBAAiB,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;gBACxF,CAAC,CAAC;gBAEF,OAAO,CAAC,EAAE,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;gBACvC,OAAO,CAAC,EAAE,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;gBACxC,UAAU,EAAE,CAAC,CAAC,uCAAuC;YACvD,CAAC;YAED,uEAAuE;YACvE,UAAU,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;gBAC/C,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC;gBACxC,IAAI,MAAM,YAAY,mBAAmB,EAAE,CAAC;oBAC1C,MAAM,CAAC,MAAM,CAAC,CAAC;gBACjB,CAAC;qBAAM,CAAC;oBACN,UAAU,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;gBACxC,CAAC;YACH,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QACrB,CAAC,CAAC,CAAC;IACL,CAAC;CACF"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file VoiceTurnCollector.ts
|
|
3
|
+
* @description Subscribes to voice pipeline session events and maintains a
|
|
4
|
+
* running transcript buffer, turn counter, and last-speaker tracker.
|
|
5
|
+
*
|
|
6
|
+
* The collector bridges the raw EventEmitter-based voice pipeline session into
|
|
7
|
+
* the typed `GraphEvent` stream consumed by the graph runtime. Four session
|
|
8
|
+
* events are handled:
|
|
9
|
+
*
|
|
10
|
+
* - `interim_transcript` — partial STT result; forwarded as a non-final
|
|
11
|
+
* `voice_transcript` GraphEvent but **not** buffered (too noisy).
|
|
12
|
+
* - `final_transcript` — confirmed STT result; buffered in `transcript` and
|
|
13
|
+
* forwarded as a final `voice_transcript` GraphEvent.
|
|
14
|
+
* - `turn_complete` — endpoint detection fired; increments `turnCount` and
|
|
15
|
+
* emits a `voice_turn_complete` GraphEvent.
|
|
16
|
+
* - `barge_in` — user interrupted the agent mid-speech; emits a
|
|
17
|
+
* `voice_barge_in` GraphEvent.
|
|
18
|
+
*
|
|
19
|
+
* The `initialTurnCount` constructor parameter enables checkpoint restore:
|
|
20
|
+
* pass the previously persisted count so that `turnIndex` values continue
|
|
21
|
+
* from where the session left off rather than resetting to zero.
|
|
22
|
+
*/
|
|
23
|
+
import { EventEmitter } from 'events';
|
|
24
|
+
import type { GraphEvent } from '../events/GraphEvent.js';
|
|
25
|
+
/**
|
|
26
|
+
* A single confirmed (final) utterance captured from the voice pipeline.
|
|
27
|
+
*
|
|
28
|
+
* Only `final_transcript` events populate this buffer — interim partials are
|
|
29
|
+
* discarded to keep the transcript clean and avoid duplicate entries.
|
|
30
|
+
*/
|
|
31
|
+
export interface TranscriptEntry {
|
|
32
|
+
/** Speaker identifier as reported by the STT service (e.g. `"Speaker_0"`). */
|
|
33
|
+
speaker: string;
|
|
34
|
+
/** Recognised text for this utterance. */
|
|
35
|
+
text: string;
|
|
36
|
+
/**
|
|
37
|
+
* Wall-clock timestamp (milliseconds since Unix epoch) recorded at the
|
|
38
|
+
* moment the `final_transcript` event was processed.
|
|
39
|
+
*/
|
|
40
|
+
timestamp: number;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Stateful collector that subscribes to a voice pipeline session and routes
|
|
44
|
+
* session events into the AgentOS `GraphEvent` stream.
|
|
45
|
+
*
|
|
46
|
+
* @example
|
|
47
|
+
* ```ts
|
|
48
|
+
* const collector = new VoiceTurnCollector(
|
|
49
|
+
* session,
|
|
50
|
+
* (evt) => graphEventEmitter.emit(evt),
|
|
51
|
+
* 'voice-node-1',
|
|
52
|
+
* );
|
|
53
|
+
*
|
|
54
|
+
* // After the conversation:
|
|
55
|
+
* console.log(collector.getTurnCount()); // number of completed turns
|
|
56
|
+
* console.log(collector.getTranscript()); // full buffered transcript
|
|
57
|
+
* console.log(collector.getLastSpeaker()); // last identified speaker
|
|
58
|
+
* ```
|
|
59
|
+
*/
|
|
60
|
+
export declare class VoiceTurnCollector {
|
|
61
|
+
private readonly eventSink;
|
|
62
|
+
private readonly nodeId;
|
|
63
|
+
/** Buffered confirmed utterances in chronological order. */
|
|
64
|
+
private transcript;
|
|
65
|
+
/** Running count of completed turns (endpoint-detected). */
|
|
66
|
+
private turnCount;
|
|
67
|
+
/** Speaker identifier from the most recent `final_transcript` event. */
|
|
68
|
+
private lastSpeaker;
|
|
69
|
+
/**
|
|
70
|
+
* @param session - The voice pipeline `EventEmitter` to subscribe to.
|
|
71
|
+
* @param eventSink - Callback invoked synchronously for every emitted `GraphEvent`.
|
|
72
|
+
* @param nodeId - Identifies the owning graph node in every emitted event.
|
|
73
|
+
* @param initialTurnCount - Seed value for `turnCount`; pass a persisted value to
|
|
74
|
+
* resume from a checkpoint rather than starting at zero.
|
|
75
|
+
*/
|
|
76
|
+
constructor(session: EventEmitter, eventSink: (event: GraphEvent) => void, nodeId: string, initialTurnCount?: number);
|
|
77
|
+
/**
|
|
78
|
+
* Returns the total number of completed turns since construction (or since the
|
|
79
|
+
* provided `initialTurnCount` when restoring from a checkpoint).
|
|
80
|
+
*/
|
|
81
|
+
getTurnCount(): number;
|
|
82
|
+
/**
|
|
83
|
+
* Returns a shallow copy of the buffered transcript entries.
|
|
84
|
+
*
|
|
85
|
+
* A copy is returned to prevent external callers from mutating the internal
|
|
86
|
+
* buffer — entries are append-only and must remain ordered.
|
|
87
|
+
*/
|
|
88
|
+
getTranscript(): TranscriptEntry[];
|
|
89
|
+
/**
|
|
90
|
+
* Returns the speaker identifier from the most recent `final_transcript` event,
|
|
91
|
+
* or an empty string if no final transcript has been received yet.
|
|
92
|
+
*/
|
|
93
|
+
getLastSpeaker(): string;
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=VoiceTurnCollector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VoiceTurnCollector.d.ts","sourceRoot":"","sources":["../../../src/orchestration/runtime/VoiceTurnCollector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAM1D;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,8EAA8E;IAC9E,OAAO,EAAE,MAAM,CAAC;IAChB,0CAA0C;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,SAAS,EAAE,MAAM,CAAC;CACnB;AAMD;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,kBAAkB;IAmB3B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,MAAM;IAnBzB,4DAA4D;IAC5D,OAAO,CAAC,UAAU,CAAyB;IAE3C,4DAA4D;IAC5D,OAAO,CAAC,SAAS,CAAS;IAE1B,wEAAwE;IACxE,OAAO,CAAC,WAAW,CAAM;IAEzB;;;;;;OAMG;gBAED,OAAO,EAAE,YAAY,EACJ,SAAS,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,EACtC,MAAM,EAAE,MAAM,EAC/B,gBAAgB,SAAI;IA6EtB;;;OAGG;IACH,YAAY,IAAI,MAAM;IAItB;;;;;OAKG;IACH,aAAa,IAAI,eAAe,EAAE;IAIlC;;;OAGG;IACH,cAAc,IAAI,MAAM;CAGzB"}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file VoiceTurnCollector.ts
|
|
3
|
+
* @description Subscribes to voice pipeline session events and maintains a
|
|
4
|
+
* running transcript buffer, turn counter, and last-speaker tracker.
|
|
5
|
+
*
|
|
6
|
+
* The collector bridges the raw EventEmitter-based voice pipeline session into
|
|
7
|
+
* the typed `GraphEvent` stream consumed by the graph runtime. Four session
|
|
8
|
+
* events are handled:
|
|
9
|
+
*
|
|
10
|
+
* - `interim_transcript` — partial STT result; forwarded as a non-final
|
|
11
|
+
* `voice_transcript` GraphEvent but **not** buffered (too noisy).
|
|
12
|
+
* - `final_transcript` — confirmed STT result; buffered in `transcript` and
|
|
13
|
+
* forwarded as a final `voice_transcript` GraphEvent.
|
|
14
|
+
* - `turn_complete` — endpoint detection fired; increments `turnCount` and
|
|
15
|
+
* emits a `voice_turn_complete` GraphEvent.
|
|
16
|
+
* - `barge_in` — user interrupted the agent mid-speech; emits a
|
|
17
|
+
* `voice_barge_in` GraphEvent.
|
|
18
|
+
*
|
|
19
|
+
* The `initialTurnCount` constructor parameter enables checkpoint restore:
|
|
20
|
+
* pass the previously persisted count so that `turnIndex` values continue
|
|
21
|
+
* from where the session left off rather than resetting to zero.
|
|
22
|
+
*/
|
|
23
|
+
// ---------------------------------------------------------------------------
|
|
24
|
+
// VoiceTurnCollector
|
|
25
|
+
// ---------------------------------------------------------------------------
|
|
26
|
+
/**
|
|
27
|
+
* Stateful collector that subscribes to a voice pipeline session and routes
|
|
28
|
+
* session events into the AgentOS `GraphEvent` stream.
|
|
29
|
+
*
|
|
30
|
+
* @example
|
|
31
|
+
* ```ts
|
|
32
|
+
* const collector = new VoiceTurnCollector(
|
|
33
|
+
* session,
|
|
34
|
+
* (evt) => graphEventEmitter.emit(evt),
|
|
35
|
+
* 'voice-node-1',
|
|
36
|
+
* );
|
|
37
|
+
*
|
|
38
|
+
* // After the conversation:
|
|
39
|
+
* console.log(collector.getTurnCount()); // number of completed turns
|
|
40
|
+
* console.log(collector.getTranscript()); // full buffered transcript
|
|
41
|
+
* console.log(collector.getLastSpeaker()); // last identified speaker
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
44
|
+
export class VoiceTurnCollector {
|
|
45
|
+
/**
|
|
46
|
+
* @param session - The voice pipeline `EventEmitter` to subscribe to.
|
|
47
|
+
* @param eventSink - Callback invoked synchronously for every emitted `GraphEvent`.
|
|
48
|
+
* @param nodeId - Identifies the owning graph node in every emitted event.
|
|
49
|
+
* @param initialTurnCount - Seed value for `turnCount`; pass a persisted value to
|
|
50
|
+
* resume from a checkpoint rather than starting at zero.
|
|
51
|
+
*/
|
|
52
|
+
constructor(session, eventSink, nodeId, initialTurnCount = 0) {
|
|
53
|
+
this.eventSink = eventSink;
|
|
54
|
+
this.nodeId = nodeId;
|
|
55
|
+
/** Buffered confirmed utterances in chronological order. */
|
|
56
|
+
this.transcript = [];
|
|
57
|
+
/** Speaker identifier from the most recent `final_transcript` event. */
|
|
58
|
+
this.lastSpeaker = '';
|
|
59
|
+
this.turnCount = initialTurnCount;
|
|
60
|
+
// ------------------------------------------------------------------
|
|
61
|
+
// interim_transcript — partial STT result, forwarded but not buffered
|
|
62
|
+
// ------------------------------------------------------------------
|
|
63
|
+
session.on('interim_transcript', (evt) => {
|
|
64
|
+
this.eventSink({
|
|
65
|
+
type: 'voice_transcript',
|
|
66
|
+
nodeId: this.nodeId,
|
|
67
|
+
text: evt.text ?? '',
|
|
68
|
+
isFinal: false,
|
|
69
|
+
speaker: evt.speaker,
|
|
70
|
+
confidence: evt.confidence ?? 0,
|
|
71
|
+
});
|
|
72
|
+
});
|
|
73
|
+
// ------------------------------------------------------------------
|
|
74
|
+
// final_transcript — confirmed utterance, buffered and forwarded
|
|
75
|
+
// ------------------------------------------------------------------
|
|
76
|
+
session.on('final_transcript', (evt) => {
|
|
77
|
+
const speaker = evt.speaker ?? 'user';
|
|
78
|
+
// Buffer the confirmed entry for downstream consumers.
|
|
79
|
+
this.transcript.push({
|
|
80
|
+
speaker,
|
|
81
|
+
text: evt.text ?? '',
|
|
82
|
+
timestamp: Date.now(),
|
|
83
|
+
});
|
|
84
|
+
// Track the most recent speaker for quick access without iterating the buffer.
|
|
85
|
+
this.lastSpeaker = speaker;
|
|
86
|
+
this.eventSink({
|
|
87
|
+
type: 'voice_transcript',
|
|
88
|
+
nodeId: this.nodeId,
|
|
89
|
+
text: evt.text ?? '',
|
|
90
|
+
isFinal: true,
|
|
91
|
+
speaker,
|
|
92
|
+
confidence: evt.confidence ?? 0,
|
|
93
|
+
});
|
|
94
|
+
});
|
|
95
|
+
// ------------------------------------------------------------------
|
|
96
|
+
// turn_complete — endpoint detection fired; advance the turn counter
|
|
97
|
+
// ------------------------------------------------------------------
|
|
98
|
+
session.on('turn_complete', (evt) => {
|
|
99
|
+
// Increment before emitting so that turnIndex reflects the new count.
|
|
100
|
+
this.turnCount++;
|
|
101
|
+
this.eventSink({
|
|
102
|
+
type: 'voice_turn_complete',
|
|
103
|
+
nodeId: this.nodeId,
|
|
104
|
+
transcript: evt.transcript ?? '',
|
|
105
|
+
turnIndex: this.turnCount,
|
|
106
|
+
endpointReason: evt.reason ?? 'unknown',
|
|
107
|
+
});
|
|
108
|
+
});
|
|
109
|
+
// ------------------------------------------------------------------
|
|
110
|
+
// barge_in — user interrupted agent mid-speech
|
|
111
|
+
// ------------------------------------------------------------------
|
|
112
|
+
session.on('barge_in', (evt) => {
|
|
113
|
+
this.eventSink({
|
|
114
|
+
type: 'voice_barge_in',
|
|
115
|
+
nodeId: this.nodeId,
|
|
116
|
+
interruptedText: evt.interruptedText ?? '',
|
|
117
|
+
userSpeech: evt.userSpeech ?? '',
|
|
118
|
+
});
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
// ---------------------------------------------------------------------------
|
|
122
|
+
// Accessors
|
|
123
|
+
// ---------------------------------------------------------------------------
|
|
124
|
+
/**
|
|
125
|
+
* Returns the total number of completed turns since construction (or since the
|
|
126
|
+
* provided `initialTurnCount` when restoring from a checkpoint).
|
|
127
|
+
*/
|
|
128
|
+
getTurnCount() {
|
|
129
|
+
return this.turnCount;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Returns a shallow copy of the buffered transcript entries.
|
|
133
|
+
*
|
|
134
|
+
* A copy is returned to prevent external callers from mutating the internal
|
|
135
|
+
* buffer — entries are append-only and must remain ordered.
|
|
136
|
+
*/
|
|
137
|
+
getTranscript() {
|
|
138
|
+
return [...this.transcript];
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Returns the speaker identifier from the most recent `final_transcript` event,
|
|
142
|
+
* or an empty string if no final transcript has been received yet.
|
|
143
|
+
*/
|
|
144
|
+
getLastSpeaker() {
|
|
145
|
+
return this.lastSpeaker;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
//# sourceMappingURL=VoiceTurnCollector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VoiceTurnCollector.js","sourceRoot":"","sources":["../../../src/orchestration/runtime/VoiceTurnCollector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AA2BH,8EAA8E;AAC9E,qBAAqB;AACrB,8EAA8E;AAE9E;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,OAAO,kBAAkB;IAU7B;;;;;;OAMG;IACH,YACE,OAAqB,EACJ,SAAsC,EACtC,MAAc,EAC/B,gBAAgB,GAAG,CAAC;QAFH,cAAS,GAAT,SAAS,CAA6B;QACtC,WAAM,GAAN,MAAM,CAAQ;QAnBjC,4DAA4D;QACpD,eAAU,GAAsB,EAAE,CAAC;QAK3C,wEAAwE;QAChE,gBAAW,GAAG,EAAE,CAAC;QAevB,IAAI,CAAC,SAAS,GAAG,gBAAgB,CAAC;QAElC,qEAAqE;QACrE,sEAAsE;QACtE,qEAAqE;QACrE,OAAO,CAAC,EAAE,CAAC,oBAAoB,EAAE,CAAC,GAAQ,EAAE,EAAE;YAC5C,IAAI,CAAC,SAAS,CAAC;gBACb,IAAI,EAAE,kBAAkB;gBACxB,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,EAAE;gBACpB,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,GAAG,CAAC,OAAO;gBACpB,UAAU,EAAE,GAAG,CAAC,UAAU,IAAI,CAAC;aAChC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,qEAAqE;QACrE,iEAAiE;QACjE,qEAAqE;QACrE,OAAO,CAAC,EAAE,CAAC,kBAAkB,EAAE,CAAC,GAAQ,EAAE,EAAE;YAC1C,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,IAAI,MAAM,CAAC;YAEtC,uDAAuD;YACvD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;gBACnB,OAAO;gBACP,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,EAAE;gBACpB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;aACtB,CAAC,CAAC;YAEH,+EAA+E;YAC/E,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC;YAE3B,IAAI,CAAC,SAAS,CAAC;gBACb,IAAI,EAAE,kBAAkB;gBACxB,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,EAAE;gBACpB,OAAO,EAAE,IAAI;gBACb,OAAO;gBACP,UAAU,EAAE,GAAG,CAAC,UAAU,IAAI,CAAC;aAChC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,qEAAqE;QACrE,qEAAqE;QACrE,qEAAqE;QACrE,OAAO,CAAC,EAAE,CAAC,eAAe,EAAE,CAAC,GAAQ,EAAE,EAAE;YACvC,sEAAsE;YACtE,IAAI,CAAC,SAAS,EAAE,CAAC;YAEjB,IAAI,CAAC,SAAS,CAAC;gBACb,IAAI,EAAE,qBAAqB;gBAC3B,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,UAAU,EAAE,GAAG,CAAC,UAAU,IAAI,EAAE;gBAChC,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,cAAc,EAAE,GAAG,CAAC,MAAM,IAAI,SAAS;aACxC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,qEAAqE;QACrE,+CAA+C;QAC/C,qEAAqE;QACrE,OAAO,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,GAAQ,EAAE,EAAE;YAClC,IAAI,CAAC,SAAS,CAAC;gBACb,IAAI,EAAE,gBAAgB;gBACtB,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,eAAe,EAAE,GAAG,CAAC,eAAe,IAAI,EAAE;gBAC1C,UAAU,EAAE,GAAG,CAAC,UAAU,IAAI,EAAE;aACjC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED,8EAA8E;IAC9E,YAAY;IACZ,8EAA8E;IAE9E;;;OAGG;IACH,YAAY;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED;;;;;OAKG;IACH,aAAa;QACX,OAAO,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;IAC9B,CAAC;IAED;;;OAGG;IACH,cAAc;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;CACF"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module voice-pipeline/VoiceInterruptError
|
|
3
|
+
*
|
|
4
|
+
* Typed error thrown when a voice session is interrupted by user barge-in.
|
|
5
|
+
* Used by VoiceNodeExecutor to catch barge-in AbortSignal and return
|
|
6
|
+
* a structured result instead of propagating the error.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Structured error representing a user barge-in interruption during TTS playback.
|
|
10
|
+
*
|
|
11
|
+
* Thrown (or returned as a typed sentinel) when the user speaks over the agent.
|
|
12
|
+
* Consumers can inspect `interruptedText`, `userSpeech`, and `playedDurationMs`
|
|
13
|
+
* to decide how to resume or branch the conversation graph.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```typescript
|
|
17
|
+
* try {
|
|
18
|
+
* await voiceNode.run(context);
|
|
19
|
+
* } catch (err) {
|
|
20
|
+
* if (err instanceof VoiceInterruptError) {
|
|
21
|
+
* console.log(`Interrupted after ${err.playedDurationMs}ms`);
|
|
22
|
+
* await handleBargein(err.userSpeech);
|
|
23
|
+
* }
|
|
24
|
+
* }
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
export declare class VoiceInterruptError extends Error {
|
|
28
|
+
/** Discriminant name — always `'VoiceInterruptError'` for `instanceof`-free checks. */
|
|
29
|
+
readonly name = "VoiceInterruptError";
|
|
30
|
+
/** The text the agent was speaking when interrupted. */
|
|
31
|
+
readonly interruptedText: string;
|
|
32
|
+
/** What the user said that caused the interruption. */
|
|
33
|
+
readonly userSpeech: string;
|
|
34
|
+
/**
|
|
35
|
+
* How much of the agent's response was already played (ms).
|
|
36
|
+
* Derived from the cumulative `durationMs` of `EncodedAudioChunk`s sent
|
|
37
|
+
* to the transport before the barge-in was detected.
|
|
38
|
+
*/
|
|
39
|
+
readonly playedDurationMs: number;
|
|
40
|
+
/**
|
|
41
|
+
* @param context - Barge-in context captured at the moment of interruption.
|
|
42
|
+
* @param context.interruptedText - Full TTS text the agent was speaking.
|
|
43
|
+
* @param context.userSpeech - Transcript of the user's barge-in utterance.
|
|
44
|
+
* @param context.playedDurationMs - Milliseconds of audio already played.
|
|
45
|
+
*/
|
|
46
|
+
constructor(context: {
|
|
47
|
+
interruptedText: string;
|
|
48
|
+
userSpeech: string;
|
|
49
|
+
playedDurationMs: number;
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=VoiceInterruptError.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VoiceInterruptError.d.ts","sourceRoot":"","sources":["../../src/voice-pipeline/VoiceInterruptError.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,mBAAoB,SAAQ,KAAK;IAC5C,uFAAuF;IACvF,QAAQ,CAAC,IAAI,yBAAyB;IAEtC,wDAAwD;IACxD,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IAEjC,uDAAuD;IACvD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAE5B;;;;OAIG;IACH,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAElC;;;;;OAKG;gBACS,OAAO,EAAE;QACnB,eAAe,EAAE,MAAM,CAAC;QACxB,UAAU,EAAE,MAAM,CAAC;QACnB,gBAAgB,EAAE,MAAM,CAAC;KAC1B;CAMF"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module voice-pipeline/VoiceInterruptError
|
|
3
|
+
*
|
|
4
|
+
* Typed error thrown when a voice session is interrupted by user barge-in.
|
|
5
|
+
* Used by VoiceNodeExecutor to catch barge-in AbortSignal and return
|
|
6
|
+
* a structured result instead of propagating the error.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Structured error representing a user barge-in interruption during TTS playback.
|
|
10
|
+
*
|
|
11
|
+
* Thrown (or returned as a typed sentinel) when the user speaks over the agent.
|
|
12
|
+
* Consumers can inspect `interruptedText`, `userSpeech`, and `playedDurationMs`
|
|
13
|
+
* to decide how to resume or branch the conversation graph.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```typescript
|
|
17
|
+
* try {
|
|
18
|
+
* await voiceNode.run(context);
|
|
19
|
+
* } catch (err) {
|
|
20
|
+
* if (err instanceof VoiceInterruptError) {
|
|
21
|
+
* console.log(`Interrupted after ${err.playedDurationMs}ms`);
|
|
22
|
+
* await handleBargein(err.userSpeech);
|
|
23
|
+
* }
|
|
24
|
+
* }
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
export class VoiceInterruptError extends Error {
|
|
28
|
+
/**
|
|
29
|
+
* @param context - Barge-in context captured at the moment of interruption.
|
|
30
|
+
* @param context.interruptedText - Full TTS text the agent was speaking.
|
|
31
|
+
* @param context.userSpeech - Transcript of the user's barge-in utterance.
|
|
32
|
+
* @param context.playedDurationMs - Milliseconds of audio already played.
|
|
33
|
+
*/
|
|
34
|
+
constructor(context) {
|
|
35
|
+
super('Voice session interrupted by user');
|
|
36
|
+
/** Discriminant name — always `'VoiceInterruptError'` for `instanceof`-free checks. */
|
|
37
|
+
this.name = 'VoiceInterruptError';
|
|
38
|
+
this.interruptedText = context.interruptedText;
|
|
39
|
+
this.userSpeech = context.userSpeech;
|
|
40
|
+
this.playedDurationMs = context.playedDurationMs;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=VoiceInterruptError.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VoiceInterruptError.js","sourceRoot":"","sources":["../../src/voice-pipeline/VoiceInterruptError.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IAiB5C;;;;;OAKG;IACH,YAAY,OAIX;QACC,KAAK,CAAC,mCAAmC,CAAC,CAAC;QA3B7C,uFAAuF;QAC9E,SAAI,GAAG,qBAAqB,CAAC;QA2BpC,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;QAC/C,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;QACrC,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IACnD,CAAC;CACF"}
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
* ```
|
|
17
17
|
*/
|
|
18
18
|
import { EventEmitter } from 'node:events';
|
|
19
|
-
import type { IBargeinHandler, IDiarizationEngine, IEndpointDetector, IStreamTransport, IStreamingSTT, IStreamingTTS, IVoicePipelineAgentSession, PipelineState, VoicePipelineConfig, VoicePipelineSession } from './types.js';
|
|
19
|
+
import type { IBargeinHandler, IDiarizationEngine, IEndpointDetector, IStreamTransport, IStreamingSTT, IStreamingTTS, IVoicePipelineAgentSession, PipelineState, TurnCompleteEvent, VoicePipelineConfig, VoicePipelineSession } from './types.js';
|
|
20
20
|
/**
|
|
21
21
|
* Overrides for injecting pre-built components (primarily for testing).
|
|
22
22
|
* In production, components would be resolved from ExtensionManager.
|
|
@@ -78,6 +78,49 @@ export declare class VoicePipelineOrchestrator extends EventEmitter {
|
|
|
78
78
|
* @param reason - Optional human-readable reason for diagnostics.
|
|
79
79
|
*/
|
|
80
80
|
stopSession(reason?: string): Promise<void>;
|
|
81
|
+
/**
|
|
82
|
+
* Wait for the next user turn to complete.
|
|
83
|
+
*
|
|
84
|
+
* Wraps the internal `'turn_complete'` event in a one-shot Promise so that
|
|
85
|
+
* graph nodes (via VoiceTransportAdapter) can `await` user input without
|
|
86
|
+
* having to manage raw EventEmitter subscriptions themselves.
|
|
87
|
+
*
|
|
88
|
+
* Resolves with the first `TurnCompleteEvent` fired after this call.
|
|
89
|
+
* If the session is closed before a turn completes, the Promise will never
|
|
90
|
+
* resolve — callers should race it against a session-close signal if needed.
|
|
91
|
+
*
|
|
92
|
+
* @returns A Promise that resolves with the completed turn event.
|
|
93
|
+
*
|
|
94
|
+
* @example
|
|
95
|
+
* ```typescript
|
|
96
|
+
* const turn = await orchestrator.waitForUserTurn();
|
|
97
|
+
* console.log('User said:', turn.transcript);
|
|
98
|
+
* ```
|
|
99
|
+
*/
|
|
100
|
+
waitForUserTurn(): Promise<TurnCompleteEvent>;
|
|
101
|
+
/**
|
|
102
|
+
* Push text to the active TTS session.
|
|
103
|
+
*
|
|
104
|
+
* Accepts either a plain string or an `AsyncIterable<string>` of token chunks
|
|
105
|
+
* (e.g. a streaming LLM response). Calls `pushTokens()` on the active TTS
|
|
106
|
+
* session for each token, then calls `flush()` to signal end-of-utterance.
|
|
107
|
+
*
|
|
108
|
+
* Used by VoiceTransportAdapter to deliver graph node output as speech
|
|
109
|
+
* without the caller needing a direct reference to the TTS session.
|
|
110
|
+
*
|
|
111
|
+
* @param text - A complete string, or an async iterable of string tokens.
|
|
112
|
+
* @throws {Error} If there is no active TTS session (i.e. session not started).
|
|
113
|
+
*
|
|
114
|
+
* @example
|
|
115
|
+
* ```typescript
|
|
116
|
+
* // Plain string
|
|
117
|
+
* await orchestrator.pushToTTS('Hello, how can I help?');
|
|
118
|
+
*
|
|
119
|
+
* // Streaming tokens from an LLM
|
|
120
|
+
* await orchestrator.pushToTTS(llm.streamTokens(prompt));
|
|
121
|
+
* ```
|
|
122
|
+
*/
|
|
123
|
+
pushToTTS(text: string | AsyncIterable<string>): Promise<void>;
|
|
81
124
|
/**
|
|
82
125
|
* Forward audio frames from transport to STT session.
|
|
83
126
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VoicePipelineOrchestrator.d.ts","sourceRoot":"","sources":["../../src/voice-pipeline/VoicePipelineOrchestrator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG3C,OAAO,KAAK,EAGV,eAAe,EACf,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EAChB,aAAa,EACb,aAAa,EACb,0BAA0B,EAC1B,aAAa,
|
|
1
|
+
{"version":3,"file":"VoicePipelineOrchestrator.d.ts","sourceRoot":"","sources":["../../src/voice-pipeline/VoicePipelineOrchestrator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG3C,OAAO,KAAK,EAGV,eAAe,EACf,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EAChB,aAAa,EACb,aAAa,EACb,0BAA0B,EAC1B,aAAa,EAIb,iBAAiB,EACjB,mBAAmB,EACnB,oBAAoB,EAErB,MAAM,YAAY,CAAC;AAEpB;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACrC,wCAAwC;IACxC,YAAY,CAAC,EAAE,aAAa,CAAC;IAC7B,wCAAwC;IACxC,YAAY,CAAC,EAAE,aAAa,CAAC;IAC7B,mCAAmC;IACnC,gBAAgB,CAAC,EAAE,iBAAiB,CAAC;IACrC,kCAAkC;IAClC,cAAc,CAAC,EAAE,eAAe,CAAC;IACjC,oCAAoC;IACpC,iBAAiB,CAAC,EAAE,kBAAkB,CAAC;CACxC;AAED;;;;;;;;GAQG;AACH,qBAAa,yBAA0B,SAAQ,YAAY;IA0B7C,OAAO,CAAC,QAAQ,CAAC,MAAM;IAzBnC,8BAA8B;IAC9B,OAAO,CAAC,MAAM,CAAyB;IAEvC,mEAAmE;IACnE,OAAO,CAAC,WAAW,CAAoC;IACvD,OAAO,CAAC,WAAW,CAAoC;IACvD,OAAO,CAAC,iBAAiB,CAAkC;IAC3D,OAAO,CAAC,eAAe,CAAgC;IACvD,OAAO,CAAC,UAAU,CAAiC;IACnD,OAAO,CAAC,aAAa,CAA2C;IAEhE,+CAA+C;IAC/C,OAAO,CAAC,cAAc,CAA8C;IAEpE,uDAAuD;IACvD,OAAO,CAAC,eAAe,CAAM;IAE7B,8DAA8D;IAC9D,OAAO,CAAC,gBAAgB,CAAK;IAE7B,0CAA0C;IAC1C,IAAI,KAAK,IAAI,aAAa,CAEzB;gBAE4B,MAAM,EAAE,mBAAmB;IAIxD;;;;;;;;OAQG;IACG,YAAY,CAChB,SAAS,EAAE,gBAAgB,EAC3B,YAAY,EAAE,0BAA0B,EACxC,SAAS,CAAC,EAAE,sBAAsB,GACjC,OAAO,CAAC,oBAAoB,CAAC;IAiEhC;;;;OAIG;IACG,WAAW,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAsBjD;;;;;;;;;;;;;;;;;;OAkBG;IACG,eAAe,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAMnD;;;;;;;;;;;;;;;;;;;;;OAqBG;IACG,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBpE;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAS3B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAgB1B;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAuCzB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAyB3B;;;OAGG;IACH,OAAO,CAAC,YAAY;IA8CpB;;OAEG;IACH,OAAO,CAAC,eAAe;IAiBvB;;OAEG;IACH,OAAO,CAAC,SAAS;IAWjB;;;;OAIG;IACH,OAAO,CAAC,cAAc;IActB;;OAEG;IACH,OAAO,CAAC,cAAc;CAMvB"}
|
|
@@ -138,6 +138,69 @@ export class VoicePipelineOrchestrator extends EventEmitter {
|
|
|
138
138
|
this._agentSession = null;
|
|
139
139
|
}
|
|
140
140
|
// --------------------------------------------------------------------------
|
|
141
|
+
// Public integration points for VoiceTransportAdapter / graph nodes
|
|
142
|
+
// --------------------------------------------------------------------------
|
|
143
|
+
/**
|
|
144
|
+
* Wait for the next user turn to complete.
|
|
145
|
+
*
|
|
146
|
+
* Wraps the internal `'turn_complete'` event in a one-shot Promise so that
|
|
147
|
+
* graph nodes (via VoiceTransportAdapter) can `await` user input without
|
|
148
|
+
* having to manage raw EventEmitter subscriptions themselves.
|
|
149
|
+
*
|
|
150
|
+
* Resolves with the first `TurnCompleteEvent` fired after this call.
|
|
151
|
+
* If the session is closed before a turn completes, the Promise will never
|
|
152
|
+
* resolve — callers should race it against a session-close signal if needed.
|
|
153
|
+
*
|
|
154
|
+
* @returns A Promise that resolves with the completed turn event.
|
|
155
|
+
*
|
|
156
|
+
* @example
|
|
157
|
+
* ```typescript
|
|
158
|
+
* const turn = await orchestrator.waitForUserTurn();
|
|
159
|
+
* console.log('User said:', turn.transcript);
|
|
160
|
+
* ```
|
|
161
|
+
*/
|
|
162
|
+
async waitForUserTurn() {
|
|
163
|
+
return new Promise((resolve) => {
|
|
164
|
+
this.once('turn_complete', (event) => resolve(event));
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Push text to the active TTS session.
|
|
169
|
+
*
|
|
170
|
+
* Accepts either a plain string or an `AsyncIterable<string>` of token chunks
|
|
171
|
+
* (e.g. a streaming LLM response). Calls `pushTokens()` on the active TTS
|
|
172
|
+
* session for each token, then calls `flush()` to signal end-of-utterance.
|
|
173
|
+
*
|
|
174
|
+
* Used by VoiceTransportAdapter to deliver graph node output as speech
|
|
175
|
+
* without the caller needing a direct reference to the TTS session.
|
|
176
|
+
*
|
|
177
|
+
* @param text - A complete string, or an async iterable of string tokens.
|
|
178
|
+
* @throws {Error} If there is no active TTS session (i.e. session not started).
|
|
179
|
+
*
|
|
180
|
+
* @example
|
|
181
|
+
* ```typescript
|
|
182
|
+
* // Plain string
|
|
183
|
+
* await orchestrator.pushToTTS('Hello, how can I help?');
|
|
184
|
+
*
|
|
185
|
+
* // Streaming tokens from an LLM
|
|
186
|
+
* await orchestrator.pushToTTS(llm.streamTokens(prompt));
|
|
187
|
+
* ```
|
|
188
|
+
*/
|
|
189
|
+
async pushToTTS(text) {
|
|
190
|
+
const ttsSession = this._ttsSession;
|
|
191
|
+
if (!ttsSession)
|
|
192
|
+
throw new Error('No active TTS session');
|
|
193
|
+
if (typeof text === 'string') {
|
|
194
|
+
ttsSession.pushTokens(text);
|
|
195
|
+
}
|
|
196
|
+
else {
|
|
197
|
+
for await (const token of text) {
|
|
198
|
+
ttsSession.pushTokens(token);
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
await ttsSession.flush();
|
|
202
|
+
}
|
|
203
|
+
// --------------------------------------------------------------------------
|
|
141
204
|
// Wiring helpers
|
|
142
205
|
// --------------------------------------------------------------------------
|
|
143
206
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VoicePipelineOrchestrator.js","sourceRoot":"","sources":["../../src/voice-pipeline/VoicePipelineOrchestrator.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"VoicePipelineOrchestrator.js","sourceRoot":"","sources":["../../src/voice-pipeline/VoicePipelineOrchestrator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAuCzC;;;;;;;;GAQG;AACH,MAAM,OAAO,yBAA0B,SAAQ,YAAY;IAqBzD,0CAA0C;IAC1C,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,YAA6B,MAA2B;QACtD,KAAK,EAAE,CAAC;QADmB,WAAM,GAAN,MAAM,CAAqB;QAzBxD,8BAA8B;QACtB,WAAM,GAAkB,MAAM,CAAC;QAEvC,mEAAmE;QAC3D,gBAAW,GAA+B,IAAI,CAAC;QAC/C,gBAAW,GAA+B,IAAI,CAAC;QAC/C,sBAAiB,GAA6B,IAAI,CAAC;QACnD,oBAAe,GAA2B,IAAI,CAAC;QAC/C,eAAU,GAA4B,IAAI,CAAC;QAC3C,kBAAa,GAAsC,IAAI,CAAC;QAEhE,+CAA+C;QACvC,mBAAc,GAAyC,IAAI,CAAC;QAEpE,uDAAuD;QAC/C,oBAAe,GAAG,EAAE,CAAC;QAE7B,8DAA8D;QACtD,qBAAgB,GAAG,CAAC,CAAC;IAS7B,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,YAAY,CAChB,SAA2B,EAC3B,YAAwC,EACxC,SAAkC;QAElC,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,kCAAkC,IAAI,CAAC,MAAM,qBAAqB,CAAC,CAAC;QACtF,CAAC;QAED,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;QAElC,MAAM,GAAG,GAAG,SAAS,EAAE,YAAY,CAAC;QACpC,MAAM,GAAG,GAAG,SAAS,EAAE,YAAY,CAAC;QACpC,MAAM,gBAAgB,GAAG,SAAS,EAAE,gBAAgB,CAAC;QACrD,MAAM,cAAc,GAAG,SAAS,EAAE,cAAc,CAAC;QAEjD,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,qFAAqF,CAAC,CAAC;QACjH,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,qFAAqF,CAAC,CAAC;QACjH,IAAI,CAAC,gBAAgB;YAAE,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACxE,IAAI,CAAC,cAAc;YAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;QAEpE,sBAAsB;QACtB,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC,YAAY,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC9E,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC,YAAY,CAAC;YACxC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK;YACxB,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;SAC3B,CAAC,CAAC;QAEH,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;QAC9B,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;QAC9B,IAAI,CAAC,iBAAiB,GAAG,gBAAgB,CAAC;QAC1C,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;QAEtC,qBAAqB;QACrB,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QAChD,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE,gBAAgB,EAAE,SAAS,CAAC,CAAC;QACjE,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC;QAC9E,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QAChD,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;QACnF,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;QAExD,0BAA0B;QAC1B,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QAE5B,iBAAiB;QACjB,IAAI,CAAC,cAAc,EAAE,CAAC;QAEtB,mDAAmD;QACnD,MAAM,SAAS,GAAG,UAAU,EAAE,CAAC;QAC/B,4DAA4D;QAC5D,MAAM,YAAY,GAAG,IAAI,CAAC;QAC1B,MAAM,OAAO,GAAyB,MAAM,CAAC,MAAM,CAAC,IAAI,YAAY,EAAE,EAAE;YACtE,SAAS;YACT,IAAI,KAAK;gBACP,OAAO,YAAY,CAAC,MAAM,CAAC;YAC7B,CAAC;YACD,SAAS;YACT,KAAK,CAAC,KAAK,CAAC,MAAe;gBACzB,MAAM,YAAY,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YACzC,CAAC;SACF,CAAC,CAAC;QAEH,8CAA8C;QAC9C,IAAI,CAAC,EAAE,CAAC,eAAe,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QAExE,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,WAAW,CAAC,MAAe;QAC/B,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ;YAAE,OAAO;QAErC,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,CAAC;QAC1B,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,CAAC;QAC1B,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACrC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAEzB,sBAAsB;QACtB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAC9B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAC5B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;IAC5B,CAAC;IAED,6EAA6E;IAC7E,oEAAoE;IACpE,6EAA6E;IAE7E;;;;;;;;;;;;;;;;;;OAkBG;IACH,KAAK,CAAC,eAAe;QACnB,OAAO,IAAI,OAAO,CAAoB,CAAC,OAAO,EAAE,EAAE;YAChD,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,KAAwB,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;QAC3E,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,KAAK,CAAC,SAAS,CAAC,IAAoC;QAClD,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC;QACpC,IAAI,CAAC,UAAU;YAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAE1D,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAC9B,CAAC;aAAM,CAAC;YACN,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,IAAI,EAAE,CAAC;gBAC/B,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC;QAED,MAAM,UAAU,CAAC,KAAK,EAAE,CAAC;IAC3B,CAAC;IAED,6EAA6E;IAC7E,iBAAiB;IACjB,6EAA6E;IAE7E;;OAEG;IACK,mBAAmB,CACzB,SAA2B,EAC3B,UAA+B;QAE/B,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAiB,EAAE,EAAE;YAC1C,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACK,kBAAkB,CACxB,UAA+B,EAC/B,gBAAmC,EACnC,SAA2B;QAE3B,UAAU,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,UAA2B,EAAE,EAAE;YAC1D,gBAAgB,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;YAC5C,SAAS,CAAC,WAAW,CAAC;gBACpB,IAAI,EAAE,YAAY;gBAClB,IAAI,EAAE,UAAU,CAAC,IAAI;gBACrB,OAAO,EAAE,UAAU,CAAC,OAAO;gBAC3B,UAAU,EAAE,UAAU,CAAC,UAAU;aAClC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;OAGG;IACK,iBAAiB,CACvB,gBAAmC,EACnC,SAA2B,EAC3B,YAAwC,EACxC,UAA+B;QAE/B,gBAAgB,CAAC,EAAE,CAAC,eAAe,EAAE,KAAK,EAAE,KAAwB,EAAE,EAAE;YACtE,IAAI,IAAI,CAAC,MAAM,KAAK,WAAW;gBAAE,OAAO;YAExC,IAAI,CAAC,cAAc,EAAE,CAAC;YACtB,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;YAC7B,SAAS,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC,CAAC;YAElD,MAAM,QAAQ,GAAsB;gBAClC,QAAQ,EAAE,EAAE;gBACZ,cAAc,EAAE,KAAK,CAAC,MAAM;gBAC5B,gBAAgB,EAAE,KAAK,CAAC,UAAU;gBAClC,cAAc,EAAE,KAAK;gBACrB,oBAAoB,EAAE,KAAK,CAAC,UAAU;aACvC,CAAC;YAEF,MAAM,WAAW,GAAG,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;YACtE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;YAC3B,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;YAC1B,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;YAC1B,SAAS,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;YAE5D,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,WAAW,EAAE,CAAC;gBACtC,IAAK,IAAI,CAAC,MAAiB,KAAK,UAAU;oBAAE,MAAM,CAAC,oBAAoB;gBACvE,IAAI,CAAC,eAAe,IAAI,KAAK,CAAC;gBAC9B,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YAC/B,CAAC;YAED,IAAK,IAAI,CAAC,MAAiB,KAAK,UAAU,EAAE,CAAC;gBAC3C,MAAM,UAAU,CAAC,KAAK,EAAE,CAAC;YAC3B,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACK,mBAAmB,CACzB,UAA+B,EAC/B,SAA2B;QAE3B,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAwB,EAAE,EAAE;YAClD,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;gBAC/B,IAAI,CAAC,gBAAgB,IAAI,KAAK,CAAC,UAAU,CAAC;gBAC1C,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,UAAU,CAAC,EAAE,CAAC,gBAAgB,EAAE,GAAG,EAAE;YACnC,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;gBAC/B,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;gBAC5B,SAAS,CAAC,WAAW,CAAC;oBACpB,IAAI,EAAE,YAAY;oBAClB,IAAI,EAAE,IAAI,CAAC,eAAe;oBAC1B,UAAU,EAAE,IAAI,CAAC,gBAAgB;iBAClC,CAAC,CAAC;gBACH,IAAI,CAAC,iBAAiB,EAAE,KAAK,EAAE,CAAC;gBAChC,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;OAGG;IACK,YAAY,CAClB,UAA+B,EAC/B,UAA+B,EAC/B,cAA+B,EAC/B,SAA2B,EAC3B,YAAwC;QAExC,UAAU,CAAC,EAAE,CAAC,cAAc,EAAE,KAAK,IAAI,EAAE;YACvC,2CAA2C;YAC3C,IAAI,CAAC,iBAAiB,EAAE,YAAY,CAAC;gBACnC,IAAI,EAAE,cAAc;gBACpB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;gBACrB,MAAM,EAAE,KAAK;aACd,CAAC,CAAC;YAEH,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;gBAC/B,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,aAAa,CAAC;oBAChD,gBAAgB,EAAE,CAAC;oBACnB,eAAe,EAAE,IAAI,CAAC,eAAe;oBACrC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;iBACxC,CAAC,CAAC;gBAEH,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;oBAC7B,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;oBAC/B,UAAU,CAAC,MAAM,EAAE,CAAC;oBACpB,YAAY,CAAC,KAAK,EAAE,EAAE,CAAC;oBACvB,SAAS,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;oBACpD,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;oBAC5B,IAAI,CAAC,iBAAiB,EAAE,KAAK,EAAE,CAAC;oBAChC,IAAI,CAAC,cAAc,EAAE,CAAC;gBACxB,CAAC;qBAAM,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;oBACnC,SAAS,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;gBACtD,CAAC;gBACD,qCAAqC;YACvC,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,UAAU,CAAC,EAAE,CAAC,YAAY,EAAE,GAAG,EAAE;YAC/B,IAAI,CAAC,iBAAiB,EAAE,YAAY,CAAC;gBACnC,IAAI,EAAE,YAAY;gBAClB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;gBACrB,MAAM,EAAE,KAAK;aACd,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACK,eAAe,CACrB,SAA2B,EAC3B,UAA+B,EAC/B,UAA+B;QAE/B,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YACzB,IAAI,CAAC,cAAc,EAAE,CAAC;YACtB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YACzB,UAAU,CAAC,KAAK,EAAE,CAAC;YACnB,UAAU,CAAC,KAAK,EAAE,CAAC;QACrB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,6EAA6E;IAC7E,mBAAmB;IACnB,6EAA6E;IAE7E;;OAEG;IACK,SAAS,CAAC,KAAoB;QACpC,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC;QACzB,IAAI,IAAI,KAAK,KAAK;YAAE,OAAO;QAC3B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;IAClD,CAAC;IAED,6EAA6E;IAC7E,iBAAiB;IACjB,6EAA6E;IAE7E;;;;OAIG;IACK,cAAc;QACpB,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,iBAAiB,IAAI,KAAM,CAAC;QACtD,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC,GAAG,EAAE;YACpC,IAAI,IAAI,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;gBAChC,IAAI,CAAC,iBAAiB,EAAE,YAAY,CAAC;oBACnC,IAAI,EAAE,YAAY;oBAClB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;oBACrB,MAAM,EAAE,KAAK;iBACd,CAAC,CAAC;YACL,CAAC;QACH,CAAC,EAAE,KAAK,CAAC,CAAC;IACZ,CAAC;IAED;;OAEG;IACK,cAAc;QACpB,IAAI,IAAI,CAAC,cAAc,KAAK,IAAI,EAAE,CAAC;YACjC,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAClC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC7B,CAAC;IACH,CAAC;CACF"}
|
|
@@ -10,4 +10,5 @@ export { HeuristicEndpointDetector } from './HeuristicEndpointDetector.js';
|
|
|
10
10
|
export { AcousticEndpointDetector } from './AcousticEndpointDetector.js';
|
|
11
11
|
export { WebSocketStreamTransport } from './WebSocketStreamTransport.js';
|
|
12
12
|
export { VoicePipelineOrchestrator } from './VoicePipelineOrchestrator.js';
|
|
13
|
+
export { VoiceInterruptError } from './VoiceInterruptError.js';
|
|
13
14
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/voice-pipeline/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/voice-pipeline/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC"}
|
|
@@ -10,4 +10,5 @@ export { HeuristicEndpointDetector } from './HeuristicEndpointDetector.js';
|
|
|
10
10
|
export { AcousticEndpointDetector } from './AcousticEndpointDetector.js';
|
|
11
11
|
export { WebSocketStreamTransport } from './WebSocketStreamTransport.js';
|
|
12
12
|
export { VoicePipelineOrchestrator } from './VoicePipelineOrchestrator.js';
|
|
13
|
+
export { VoiceInterruptError } from './VoiceInterruptError.js';
|
|
13
14
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/voice-pipeline/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/voice-pipeline/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC"}
|