@livekit/agents 1.1.0-dev.0 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.cjs +2 -0
- package/dist/cli.cjs.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +2 -0
- package/dist/cli.js.map +1 -1
- package/dist/constants.cjs +3 -0
- package/dist/constants.cjs.map +1 -1
- package/dist/constants.d.cts +1 -0
- package/dist/constants.d.ts +1 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +2 -0
- package/dist/constants.js.map +1 -1
- package/dist/cpu.cjs +189 -0
- package/dist/cpu.cjs.map +1 -0
- package/dist/cpu.d.cts +24 -0
- package/dist/cpu.d.ts +24 -0
- package/dist/cpu.d.ts.map +1 -0
- package/dist/cpu.js +152 -0
- package/dist/cpu.js.map +1 -0
- package/dist/cpu.test.cjs +227 -0
- package/dist/cpu.test.cjs.map +1 -0
- package/dist/cpu.test.js +204 -0
- package/dist/cpu.test.js.map +1 -0
- package/dist/index.cjs +12 -10
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +13 -13
- package/dist/index.d.ts +13 -13
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -10
- package/dist/index.js.map +1 -1
- package/dist/inference/interruption/defaults.cjs +1 -1
- package/dist/inference/interruption/defaults.cjs.map +1 -1
- package/dist/inference/interruption/defaults.d.cts +1 -1
- package/dist/inference/interruption/defaults.d.ts +1 -1
- package/dist/inference/interruption/defaults.d.ts.map +1 -1
- package/dist/inference/interruption/defaults.js +1 -1
- package/dist/inference/interruption/defaults.js.map +1 -1
- package/dist/inference/interruption/http_transport.cjs +44 -28
- package/dist/inference/interruption/http_transport.cjs.map +1 -1
- package/dist/inference/interruption/http_transport.d.ts.map +1 -1
- package/dist/inference/interruption/http_transport.js +45 -29
- package/dist/inference/interruption/http_transport.js.map +1 -1
- package/dist/inference/interruption/interruption_detector.cjs +22 -5
- package/dist/inference/interruption/interruption_detector.cjs.map +1 -1
- package/dist/inference/interruption/interruption_detector.d.cts +2 -2
- package/dist/inference/interruption/interruption_detector.d.ts +2 -2
- package/dist/inference/interruption/interruption_detector.d.ts.map +1 -1
- package/dist/inference/interruption/interruption_detector.js +22 -5
- package/dist/inference/interruption/interruption_detector.js.map +1 -1
- package/dist/inference/interruption/interruption_stream.cjs +4 -4
- package/dist/inference/interruption/interruption_stream.cjs.map +1 -1
- package/dist/inference/interruption/interruption_stream.js +4 -4
- package/dist/inference/interruption/interruption_stream.js.map +1 -1
- package/dist/inference/interruption/types.cjs.map +1 -1
- package/dist/inference/interruption/types.d.cts +2 -2
- package/dist/inference/interruption/types.d.ts +2 -2
- package/dist/inference/interruption/types.d.ts.map +1 -1
- package/dist/inference/interruption/ws_transport.cjs +60 -47
- package/dist/inference/interruption/ws_transport.cjs.map +1 -1
- package/dist/inference/interruption/ws_transport.d.ts.map +1 -1
- package/dist/inference/interruption/ws_transport.js +60 -47
- package/dist/inference/interruption/ws_transport.js.map +1 -1
- package/dist/inference/llm.cjs.map +1 -1
- package/dist/inference/llm.d.cts +1 -1
- package/dist/inference/llm.d.ts +1 -1
- package/dist/inference/llm.d.ts.map +1 -1
- package/dist/inference/llm.js.map +1 -1
- package/dist/inference/stt.cjs +20 -12
- package/dist/inference/stt.cjs.map +1 -1
- package/dist/inference/stt.d.cts +3 -2
- package/dist/inference/stt.d.ts +3 -2
- package/dist/inference/stt.d.ts.map +1 -1
- package/dist/inference/stt.js +20 -12
- package/dist/inference/stt.js.map +1 -1
- package/dist/inference/stt.test.cjs +14 -0
- package/dist/inference/stt.test.cjs.map +1 -1
- package/dist/inference/stt.test.js +14 -0
- package/dist/inference/stt.test.js.map +1 -1
- package/dist/inference/tts.cjs +13 -4
- package/dist/inference/tts.cjs.map +1 -1
- package/dist/inference/tts.d.cts +8 -1
- package/dist/inference/tts.d.ts +8 -1
- package/dist/inference/tts.d.ts.map +1 -1
- package/dist/inference/tts.js +13 -4
- package/dist/inference/tts.js.map +1 -1
- package/dist/inference/tts.test.cjs +10 -0
- package/dist/inference/tts.test.cjs.map +1 -1
- package/dist/inference/tts.test.js +10 -0
- package/dist/inference/tts.test.js.map +1 -1
- package/dist/ipc/job_proc_lazy_main.cjs +41 -23
- package/dist/ipc/job_proc_lazy_main.cjs.map +1 -1
- package/dist/ipc/job_proc_lazy_main.js +41 -23
- package/dist/ipc/job_proc_lazy_main.js.map +1 -1
- package/dist/job.cjs +1 -1
- package/dist/job.cjs.map +1 -1
- package/dist/job.js +1 -1
- package/dist/job.js.map +1 -1
- package/dist/language.cjs +394 -0
- package/dist/language.cjs.map +1 -0
- package/dist/language.d.cts +15 -0
- package/dist/language.d.ts +15 -0
- package/dist/language.d.ts.map +1 -0
- package/dist/language.js +363 -0
- package/dist/language.js.map +1 -0
- package/dist/language.test.cjs +43 -0
- package/dist/language.test.cjs.map +1 -0
- package/dist/language.test.js +49 -0
- package/dist/language.test.js.map +1 -0
- package/dist/llm/index.cjs +2 -0
- package/dist/llm/index.cjs.map +1 -1
- package/dist/llm/index.d.cts +1 -1
- package/dist/llm/index.d.ts +1 -1
- package/dist/llm/index.d.ts.map +1 -1
- package/dist/llm/index.js +2 -0
- package/dist/llm/index.js.map +1 -1
- package/dist/stream/deferred_stream.cjs +6 -2
- package/dist/stream/deferred_stream.cjs.map +1 -1
- package/dist/stream/deferred_stream.d.ts.map +1 -1
- package/dist/stream/deferred_stream.js +6 -2
- package/dist/stream/deferred_stream.js.map +1 -1
- package/dist/stt/stt.cjs.map +1 -1
- package/dist/stt/stt.d.cts +2 -1
- package/dist/stt/stt.d.ts +2 -1
- package/dist/stt/stt.d.ts.map +1 -1
- package/dist/stt/stt.js.map +1 -1
- package/dist/utils.cjs +15 -0
- package/dist/utils.cjs.map +1 -1
- package/dist/utils.d.cts +8 -0
- package/dist/utils.d.ts +8 -0
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +13 -0
- package/dist/utils.js.map +1 -1
- package/dist/version.cjs +1 -1
- package/dist/version.js +1 -1
- package/dist/voice/agent.cjs +14 -17
- package/dist/voice/agent.cjs.map +1 -1
- package/dist/voice/agent.d.cts +10 -11
- package/dist/voice/agent.d.ts +10 -11
- package/dist/voice/agent.d.ts.map +1 -1
- package/dist/voice/agent.js +15 -18
- package/dist/voice/agent.js.map +1 -1
- package/dist/voice/agent.test.cjs +194 -0
- package/dist/voice/agent.test.cjs.map +1 -1
- package/dist/voice/agent.test.js +195 -1
- package/dist/voice/agent.test.js.map +1 -1
- package/dist/voice/agent_activity.cjs +116 -39
- package/dist/voice/agent_activity.cjs.map +1 -1
- package/dist/voice/agent_activity.d.cts +2 -0
- package/dist/voice/agent_activity.d.ts +2 -0
- package/dist/voice/agent_activity.d.ts.map +1 -1
- package/dist/voice/agent_activity.js +117 -40
- package/dist/voice/agent_activity.js.map +1 -1
- package/dist/voice/agent_activity.test.cjs +135 -0
- package/dist/voice/agent_activity.test.cjs.map +1 -0
- package/dist/voice/agent_activity.test.js +134 -0
- package/dist/voice/agent_activity.test.js.map +1 -0
- package/dist/voice/agent_session.cjs +38 -38
- package/dist/voice/agent_session.cjs.map +1 -1
- package/dist/voice/agent_session.d.cts +65 -56
- package/dist/voice/agent_session.d.ts +65 -56
- package/dist/voice/agent_session.d.ts.map +1 -1
- package/dist/voice/agent_session.js +37 -37
- package/dist/voice/agent_session.js.map +1 -1
- package/dist/voice/audio_recognition.cjs +106 -52
- package/dist/voice/audio_recognition.cjs.map +1 -1
- package/dist/voice/audio_recognition.d.cts +4 -2
- package/dist/voice/audio_recognition.d.ts +4 -2
- package/dist/voice/audio_recognition.d.ts.map +1 -1
- package/dist/voice/audio_recognition.js +106 -52
- package/dist/voice/audio_recognition.js.map +1 -1
- package/dist/voice/audio_recognition_span.test.cjs +84 -22
- package/dist/voice/audio_recognition_span.test.cjs.map +1 -1
- package/dist/voice/audio_recognition_span.test.js +90 -23
- package/dist/voice/audio_recognition_span.test.js.map +1 -1
- package/dist/voice/events.cjs +1 -1
- package/dist/voice/events.cjs.map +1 -1
- package/dist/voice/events.d.cts +4 -3
- package/dist/voice/events.d.ts +4 -3
- package/dist/voice/events.d.ts.map +1 -1
- package/dist/voice/events.js +1 -1
- package/dist/voice/events.js.map +1 -1
- package/dist/voice/index.cjs +9 -1
- package/dist/voice/index.cjs.map +1 -1
- package/dist/voice/index.d.cts +1 -1
- package/dist/voice/index.d.ts +1 -1
- package/dist/voice/index.d.ts.map +1 -1
- package/dist/voice/index.js +10 -1
- package/dist/voice/index.js.map +1 -1
- package/dist/voice/remote_session.cjs +922 -0
- package/dist/voice/remote_session.cjs.map +1 -0
- package/dist/voice/remote_session.d.cts +108 -0
- package/dist/voice/remote_session.d.ts +108 -0
- package/dist/voice/remote_session.d.ts.map +1 -0
- package/dist/voice/remote_session.js +887 -0
- package/dist/voice/remote_session.js.map +1 -0
- package/dist/voice/report.cjs +11 -10
- package/dist/voice/report.cjs.map +1 -1
- package/dist/voice/report.d.cts +5 -3
- package/dist/voice/report.d.ts +5 -3
- package/dist/voice/report.d.ts.map +1 -1
- package/dist/voice/report.js +11 -10
- package/dist/voice/report.js.map +1 -1
- package/dist/voice/report.test.cjs +15 -0
- package/dist/voice/report.test.cjs.map +1 -1
- package/dist/voice/report.test.js +15 -0
- package/dist/voice/report.test.js.map +1 -1
- package/dist/voice/room_io/room_io.cjs +39 -0
- package/dist/voice/room_io/room_io.cjs.map +1 -1
- package/dist/voice/room_io/room_io.d.cts +3 -1
- package/dist/voice/room_io/room_io.d.ts +3 -1
- package/dist/voice/room_io/room_io.d.ts.map +1 -1
- package/dist/voice/room_io/room_io.js +40 -1
- package/dist/voice/room_io/room_io.js.map +1 -1
- package/dist/voice/turn_config/interruption.cjs.map +1 -1
- package/dist/voice/turn_config/interruption.d.cts +1 -1
- package/dist/voice/turn_config/interruption.d.ts +1 -1
- package/dist/voice/turn_config/interruption.d.ts.map +1 -1
- package/dist/voice/turn_config/interruption.js.map +1 -1
- package/dist/voice/turn_config/utils.cjs +95 -35
- package/dist/voice/turn_config/utils.cjs.map +1 -1
- package/dist/voice/turn_config/utils.d.cts +17 -5
- package/dist/voice/turn_config/utils.d.ts +17 -5
- package/dist/voice/turn_config/utils.d.ts.map +1 -1
- package/dist/voice/turn_config/utils.js +93 -35
- package/dist/voice/turn_config/utils.js.map +1 -1
- package/dist/voice/turn_config/utils.test.cjs +83 -41
- package/dist/voice/turn_config/utils.test.cjs.map +1 -1
- package/dist/voice/turn_config/utils.test.js +84 -42
- package/dist/voice/turn_config/utils.test.js.map +1 -1
- package/dist/worker.cjs +6 -29
- package/dist/worker.cjs.map +1 -1
- package/dist/worker.d.ts.map +1 -1
- package/dist/worker.js +6 -19
- package/dist/worker.js.map +1 -1
- package/package.json +3 -2
- package/src/cli.ts +2 -0
- package/src/constants.ts +1 -0
- package/src/cpu.test.ts +239 -0
- package/src/cpu.ts +173 -0
- package/src/index.ts +13 -15
- package/src/inference/interruption/defaults.ts +1 -1
- package/src/inference/interruption/http_transport.ts +49 -30
- package/src/inference/interruption/interruption_detector.ts +22 -6
- package/src/inference/interruption/interruption_stream.ts +4 -4
- package/src/inference/interruption/types.ts +2 -2
- package/src/inference/interruption/ws_transport.ts +63 -59
- package/src/inference/llm.ts +3 -1
- package/src/inference/stt.test.ts +17 -0
- package/src/inference/stt.ts +22 -14
- package/src/inference/tts.test.ts +12 -0
- package/src/inference/tts.ts +22 -6
- package/src/ipc/job_proc_lazy_main.ts +44 -24
- package/src/job.ts +1 -1
- package/src/language.test.ts +62 -0
- package/src/language.ts +380 -0
- package/src/llm/index.ts +2 -0
- package/src/stream/deferred_stream.ts +5 -1
- package/src/stt/stt.ts +2 -1
- package/src/utils.ts +20 -0
- package/src/voice/agent.test.ts +208 -1
- package/src/voice/agent.ts +21 -22
- package/src/voice/agent_activity.test.ts +194 -0
- package/src/voice/agent_activity.ts +161 -43
- package/src/voice/agent_session.ts +103 -92
- package/src/voice/audio_recognition.ts +124 -61
- package/src/voice/audio_recognition_span.test.ts +115 -35
- package/src/voice/events.ts +4 -3
- package/src/voice/index.ts +10 -1
- package/src/voice/remote_session.ts +1083 -0
- package/src/voice/report.test.ts +22 -3
- package/src/voice/report.ts +31 -14
- package/src/voice/room_io/room_io.ts +52 -2
- package/src/voice/turn_config/interruption.ts +1 -1
- package/src/voice/turn_config/utils.test.ts +91 -43
- package/src/voice/turn_config/utils.ts +120 -56
- package/src/worker.ts +34 -50
- package/dist/voice/client_events.cjs +0 -554
- package/dist/voice/client_events.cjs.map +0 -1
- package/dist/voice/client_events.d.cts +0 -195
- package/dist/voice/client_events.d.ts +0 -195
- package/dist/voice/client_events.d.ts.map +0 -1
- package/dist/voice/client_events.js +0 -548
- package/dist/voice/client_events.js.map +0 -1
- package/dist/voice/wire_format.cjs +0 -798
- package/dist/voice/wire_format.cjs.map +0 -1
- package/dist/voice/wire_format.d.cts +0 -5503
- package/dist/voice/wire_format.d.ts +0 -5503
- package/dist/voice/wire_format.d.ts.map +0 -1
- package/dist/voice/wire_format.js +0 -728
- package/dist/voice/wire_format.js.map +0 -1
- package/src/voice/client_events.ts +0 -838
- package/src/voice/wire_format.ts +0 -827
|
@@ -11,7 +11,7 @@ import type { FunctionCall, FunctionCallOutput } from '../llm/chat_context.js';
|
|
|
11
11
|
import { ChatContext, ChatMessage } from '../llm/chat_context.js';
|
|
12
12
|
import type { LLM, RealtimeModel, RealtimeModelError, ToolChoice } from '../llm/index.js';
|
|
13
13
|
import type { LLMError } from '../llm/llm.js';
|
|
14
|
-
import { type ModelUsage } from '../metrics/model_usage.js';
|
|
14
|
+
import { type ModelUsage, ModelUsageCollector } from '../metrics/model_usage.js';
|
|
15
15
|
import type { STT } from '../stt/index.js';
|
|
16
16
|
import type { STTError } from '../stt/stt.js';
|
|
17
17
|
import type { TTS, TTSError } from '../tts/tts.js';
|
|
@@ -32,60 +32,38 @@ export interface AgentSessionUsage {
|
|
|
32
32
|
/** List of usage summaries, one per model/provider combination. */
|
|
33
33
|
modelUsage: Array<Partial<ModelUsage>>;
|
|
34
34
|
}
|
|
35
|
-
export interface
|
|
35
|
+
export interface InternalSessionOptions<UserData> extends AgentSessionOptions<UserData> {
|
|
36
|
+
turnHandling: InternalTurnHandlingOptions;
|
|
37
|
+
useTtsAlignedTranscript: boolean;
|
|
36
38
|
maxToolSteps: number;
|
|
37
|
-
/**
|
|
38
|
-
* Whether to speculatively begin LLM and TTS requests before an end-of-turn is detected.
|
|
39
|
-
* When `true`, the agent sends inference calls as soon as a user transcript is received rather
|
|
40
|
-
* than waiting for a definitive turn boundary. This can reduce response latency by overlapping
|
|
41
|
-
* model inference with user audio, but may incur extra compute if the user interrupts or
|
|
42
|
-
* revises mid-utterance.
|
|
43
|
-
* @defaultValue false
|
|
44
|
-
*/
|
|
45
|
-
preemptiveGeneration: boolean;
|
|
46
|
-
/**
|
|
47
|
-
* If set, set the user state as "away" after this amount of time after user and agent are
|
|
48
|
-
* silent. Set to `null` to disable.
|
|
49
|
-
* @defaultValue 15.0
|
|
50
|
-
*/
|
|
51
39
|
userAwayTimeout: number | null;
|
|
52
|
-
/**
|
|
53
|
-
* Duration in milliseconds for AEC (Acoustic Echo Cancellation) warmup, during which
|
|
54
|
-
* interruptions from audio activity are suppressed. Set to `null` to disable.
|
|
55
|
-
* @defaultValue 3000
|
|
56
|
-
*/
|
|
57
|
-
aecWarmupDuration: number | null;
|
|
58
|
-
/**
|
|
59
|
-
* Configuration for turn handling.
|
|
60
|
-
*/
|
|
61
|
-
turnHandling: Partial<TurnHandlingOptions>;
|
|
62
|
-
useTtsAlignedTranscript: boolean;
|
|
63
|
-
/** @deprecated Use {@link SessionOptions.turnHandling}.interruption.mode instead. */
|
|
64
|
-
allowInterruptions?: boolean;
|
|
65
|
-
/** @deprecated Use {@link SessionOptions.turnHandling}.interruption.discardAudioIfUninterruptible instead. */
|
|
66
|
-
discardAudioIfUninterruptible?: boolean;
|
|
67
|
-
/** @deprecated Use {@link SessionOptions.turnHandling}.interruption.minDuration instead. */
|
|
68
|
-
minInterruptionDuration?: number;
|
|
69
|
-
/** @deprecated Use {@link SessionOptions.turnHandling}.interruption.minWords instead. */
|
|
70
|
-
minInterruptionWords?: number;
|
|
71
|
-
/** @deprecated Use {@link SessionOptions.turnHandling}.endpointing.minDelay instead. */
|
|
72
|
-
minEndpointingDelay?: number;
|
|
73
|
-
/** @deprecated Use {@link SessionOptions.turnHandling}.endpointing.maxDelay instead. */
|
|
74
|
-
maxEndpointingDelay?: number;
|
|
75
|
-
}
|
|
76
|
-
export interface InternalSessionOptions extends SessionOptions {
|
|
77
|
-
turnHandling: InternalTurnHandlingOptions;
|
|
78
40
|
}
|
|
79
|
-
export declare const
|
|
41
|
+
export declare const defaultAgentSessionOptions: {
|
|
80
42
|
readonly maxToolSteps: 3;
|
|
81
|
-
readonly preemptiveGeneration:
|
|
43
|
+
readonly preemptiveGeneration: true;
|
|
82
44
|
readonly userAwayTimeout: 15;
|
|
83
45
|
readonly aecWarmupDuration: 3000;
|
|
84
46
|
readonly turnHandling: {};
|
|
85
47
|
readonly useTtsAlignedTranscript: true;
|
|
86
48
|
};
|
|
87
|
-
/** @deprecated {@link VoiceOptions} has been
|
|
88
|
-
export type VoiceOptions =
|
|
49
|
+
/** @deprecated {@link VoiceOptions} has been flattened onto to {@link AgentSessionOptions} */
|
|
50
|
+
export type VoiceOptions = {
|
|
51
|
+
maxToolSteps: number;
|
|
52
|
+
preemptiveGeneration: boolean;
|
|
53
|
+
userAwayTimeout?: number | null;
|
|
54
|
+
/** @deprecated Use {@link AgentSessionOptions.turnHandling}.interruption.mode instead. */
|
|
55
|
+
allowInterruptions?: boolean;
|
|
56
|
+
/** @deprecated Use {@link AgentSessionOptions.turnHandling}.interruption.discardAudioIfUninterruptible instead. */
|
|
57
|
+
discardAudioIfUninterruptible?: boolean;
|
|
58
|
+
/** @deprecated Use {@link AgentSessionOptions.turnHandling}.interruption.minDuration instead. */
|
|
59
|
+
minInterruptionDuration?: number;
|
|
60
|
+
/** @deprecated Use {@link AgentSessionOptions.turnHandling}.interruption.minWords instead. */
|
|
61
|
+
minInterruptionWords?: number;
|
|
62
|
+
/** @deprecated Use {@link AgentSessionOptions.turnHandling}.endpointing.minDelay instead. */
|
|
63
|
+
minEndpointingDelay?: number;
|
|
64
|
+
/** @deprecated Use {@link AgentSessionOptions.turnHandling}.endpointing.maxDelay instead. */
|
|
65
|
+
maxEndpointingDelay?: number;
|
|
66
|
+
};
|
|
89
67
|
export type TurnDetectionMode = 'stt' | 'vad' | 'realtime_llm' | 'manual' | _TurnDetector;
|
|
90
68
|
export type AgentSessionCallbacks = {
|
|
91
69
|
[AgentSessionEventTypes.UserInputTranscribed]: (ev: UserInputTranscribedEvent) => void;
|
|
@@ -97,7 +75,7 @@ export type AgentSessionCallbacks = {
|
|
|
97
75
|
[AgentSessionEventTypes.SpeechCreated]: (ev: SpeechCreatedEvent) => void;
|
|
98
76
|
[AgentSessionEventTypes.Error]: (ev: ErrorEvent) => void;
|
|
99
77
|
[AgentSessionEventTypes.Close]: (ev: CloseEvent) => void;
|
|
100
|
-
[AgentSessionEventTypes.
|
|
78
|
+
[AgentSessionEventTypes.OverlappingSpeech]: (ev: OverlappingSpeechEvent) => void;
|
|
101
79
|
};
|
|
102
80
|
export type AgentSessionOptions<UserData = UnknownUserData> = {
|
|
103
81
|
stt?: STT | STTModelString;
|
|
@@ -105,12 +83,38 @@ export type AgentSessionOptions<UserData = UnknownUserData> = {
|
|
|
105
83
|
llm?: LLM | RealtimeModel | LLMModels;
|
|
106
84
|
tts?: TTS | TTSModelString;
|
|
107
85
|
userData?: UserData;
|
|
108
|
-
options?: Partial<SessionOptions>;
|
|
109
86
|
connOptions?: SessionConnectOptions;
|
|
110
|
-
/** @deprecated use
|
|
87
|
+
/** @deprecated use turnHandling.turnDetection instead */
|
|
111
88
|
turnDetection?: TurnDetectionMode;
|
|
112
|
-
/** @deprecated use
|
|
89
|
+
/** @deprecated use top-level SessionOptions fields instead */
|
|
113
90
|
voiceOptions?: Partial<VoiceOptions>;
|
|
91
|
+
maxToolSteps?: number;
|
|
92
|
+
/**
|
|
93
|
+
* Whether to speculatively begin LLM and TTS requests before an end-of-turn is detected.
|
|
94
|
+
* When `true`, the agent sends inference calls as soon as a user transcript is received rather
|
|
95
|
+
* than waiting for a definitive turn boundary. This can reduce response latency by overlapping
|
|
96
|
+
* model inference with user audio, but may incur extra compute if the user interrupts or
|
|
97
|
+
* revises mid-utterance.
|
|
98
|
+
* @defaultValue true
|
|
99
|
+
*/
|
|
100
|
+
preemptiveGeneration?: boolean;
|
|
101
|
+
/**
|
|
102
|
+
* If set, set the user state as "away" after this amount of time after user and agent are
|
|
103
|
+
* silent. Set to `null` to disable.
|
|
104
|
+
* @defaultValue 15.0
|
|
105
|
+
*/
|
|
106
|
+
userAwayTimeout?: number | null;
|
|
107
|
+
/**
|
|
108
|
+
* Duration in milliseconds for AEC (Acoustic Echo Cancellation) warmup, during which
|
|
109
|
+
* interruptions from audio activity are suppressed. Set to `null` to disable.
|
|
110
|
+
* @defaultValue 3000
|
|
111
|
+
*/
|
|
112
|
+
aecWarmupDuration?: number | null;
|
|
113
|
+
/**
|
|
114
|
+
* Configuration for turn handling.
|
|
115
|
+
*/
|
|
116
|
+
turnHandling?: Partial<TurnHandlingOptions>;
|
|
117
|
+
useTtsAlignedTranscript?: boolean;
|
|
114
118
|
};
|
|
115
119
|
type ActivityTransitionOptions = {
|
|
116
120
|
previousActivity?: 'close' | 'pause';
|
|
@@ -125,14 +129,16 @@ export declare class AgentSession<UserData = UnknownUserData> extends AgentSessi
|
|
|
125
129
|
llm?: LLM | RealtimeModel;
|
|
126
130
|
tts?: TTS;
|
|
127
131
|
turnDetection?: TurnDetectionMode;
|
|
128
|
-
|
|
132
|
+
/** @deprecated use {@link sessionOptions } instead */
|
|
133
|
+
readonly options: VoiceOptions;
|
|
134
|
+
readonly sessionOptions: InternalSessionOptions<UserData>;
|
|
129
135
|
private readonly activityLock;
|
|
130
136
|
private agent?;
|
|
131
137
|
private activity?;
|
|
132
138
|
private nextActivity?;
|
|
133
139
|
private updateActivityTask?;
|
|
134
140
|
private started;
|
|
135
|
-
private
|
|
141
|
+
private sessionHost?;
|
|
136
142
|
private _chatCtx;
|
|
137
143
|
private _userData;
|
|
138
144
|
private _userState;
|
|
@@ -145,11 +151,11 @@ export declare class AgentSession<UserData = UnknownUserData> extends AgentSessi
|
|
|
145
151
|
private _connOptions;
|
|
146
152
|
private llmErrorCounts;
|
|
147
153
|
private ttsErrorCounts;
|
|
148
|
-
private interruptionDetectionErrorCounts;
|
|
149
154
|
private sessionSpan?;
|
|
150
155
|
private agentSpeakingSpan?;
|
|
151
156
|
private _interruptionDetection?;
|
|
152
|
-
|
|
157
|
+
/** @internal */
|
|
158
|
+
_usageCollector: ModelUsageCollector;
|
|
153
159
|
/** @internal */
|
|
154
160
|
_roomIO?: RoomIO;
|
|
155
161
|
/** @internal */
|
|
@@ -177,7 +183,7 @@ export declare class AgentSession<UserData = UnknownUserData> extends AgentSessi
|
|
|
177
183
|
get history(): ChatContext;
|
|
178
184
|
/** Connection options for STT, LLM, and TTS. */
|
|
179
185
|
get connOptions(): ResolvedSessionConnectOptions;
|
|
180
|
-
get interruptionDetection():
|
|
186
|
+
get interruptionDetection(): "vad" | "adaptive" | undefined;
|
|
181
187
|
/**
|
|
182
188
|
* Returns usage summaries for this session, one per model/provider combination.
|
|
183
189
|
*/
|
|
@@ -258,7 +264,10 @@ export declare class AgentSession<UserData = UnknownUserData> extends AgentSessi
|
|
|
258
264
|
otelContext?: Context;
|
|
259
265
|
}): void;
|
|
260
266
|
/** @internal */
|
|
261
|
-
_updateUserState(state: UserState,
|
|
267
|
+
_updateUserState(state: UserState, options?: {
|
|
268
|
+
lastSpeakingTime?: number;
|
|
269
|
+
otelContext?: Context;
|
|
270
|
+
}): void;
|
|
262
271
|
private onAudioInputChanged;
|
|
263
272
|
private onAudioOutputChanged;
|
|
264
273
|
private onTextOutputChanged;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent_session.d.ts","sourceRoot":"","sources":["../../src/voice/agent_session.ts"],"names":[],"mappings":";AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,KAAK,EAAE,iBAAiB,IAAI,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAChF,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAGxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,EAIL,KAAK,SAAS,EACd,KAAK,cAAc,EACnB,KAAK,cAAc,EACpB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,qCAAqC,CAAC;AACtF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAEjF,OAAO,KAAK,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC/E,OAAO,EAAoB,WAAW,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACpF,OAAO,KAAK,EAAE,GAAG,EAAE,aAAa,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC1F,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE9C,OAAO,EAAE,KAAK,UAAU,
|
|
1
|
+
{"version":3,"file":"agent_session.d.ts","sourceRoot":"","sources":["../../src/voice/agent_session.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,7 +17,6 @@ import {
|
|
|
17
17
|
} from "../types.js";
|
|
18
18
|
import { Task } from "../utils.js";
|
|
19
19
|
import { AgentActivity } from "./agent_activity.js";
|
|
20
|
-
import { ClientEventsHandler } from "./client_events.js";
|
|
21
20
|
import {
|
|
22
21
|
AgentSessionEventTypes,
|
|
23
22
|
CloseReason,
|
|
@@ -28,6 +27,7 @@ import {
|
|
|
28
27
|
} from "./events.js";
|
|
29
28
|
import { AgentInput, AgentOutput } from "./io.js";
|
|
30
29
|
import { RecorderIO } from "./recorder_io/index.js";
|
|
30
|
+
import { RoomSessionTransport, SessionHost } from "./remote_session.js";
|
|
31
31
|
import {
|
|
32
32
|
DEFAULT_TEXT_INPUT_CALLBACK,
|
|
33
33
|
RoomIO
|
|
@@ -35,9 +35,9 @@ import {
|
|
|
35
35
|
import { RunResult } from "./testing/run_result.js";
|
|
36
36
|
import { migrateLegacyOptions } from "./turn_config/utils.js";
|
|
37
37
|
import { setParticipantSpanAttributes } from "./utils.js";
|
|
38
|
-
const
|
|
38
|
+
const defaultAgentSessionOptions = {
|
|
39
39
|
maxToolSteps: 3,
|
|
40
|
-
preemptiveGeneration:
|
|
40
|
+
preemptiveGeneration: true,
|
|
41
41
|
userAwayTimeout: 15,
|
|
42
42
|
aecWarmupDuration: 3e3,
|
|
43
43
|
turnHandling: {},
|
|
@@ -49,14 +49,16 @@ class AgentSession extends EventEmitter {
|
|
|
49
49
|
llm;
|
|
50
50
|
tts;
|
|
51
51
|
turnDetection;
|
|
52
|
+
/** @deprecated use {@link sessionOptions } instead */
|
|
52
53
|
options;
|
|
54
|
+
sessionOptions;
|
|
53
55
|
activityLock = new Mutex();
|
|
54
56
|
agent;
|
|
55
57
|
activity;
|
|
56
58
|
nextActivity;
|
|
57
59
|
updateActivityTask;
|
|
58
60
|
started = false;
|
|
59
|
-
|
|
61
|
+
sessionHost;
|
|
60
62
|
_chatCtx;
|
|
61
63
|
_userData;
|
|
62
64
|
_userState = "listening";
|
|
@@ -71,10 +73,10 @@ class AgentSession extends EventEmitter {
|
|
|
71
73
|
// Unrecoverable error counts, reset after agent speaking
|
|
72
74
|
llmErrorCounts = 0;
|
|
73
75
|
ttsErrorCounts = 0;
|
|
74
|
-
interruptionDetectionErrorCounts = 0;
|
|
75
76
|
sessionSpan;
|
|
76
77
|
agentSpeakingSpan;
|
|
77
78
|
_interruptionDetection;
|
|
79
|
+
/** @internal */
|
|
78
80
|
_usageCollector = new ModelUsageCollector();
|
|
79
81
|
/** @internal */
|
|
80
82
|
_roomIO;
|
|
@@ -96,10 +98,10 @@ class AgentSession extends EventEmitter {
|
|
|
96
98
|
_userSpeakingSpan;
|
|
97
99
|
logger = log();
|
|
98
100
|
constructor(options) {
|
|
99
|
-
var _a
|
|
101
|
+
var _a;
|
|
100
102
|
super();
|
|
101
|
-
const opts = migrateLegacyOptions(options);
|
|
102
|
-
const { vad, stt, llm, tts, userData, connOptions,
|
|
103
|
+
const { agentSessionOptions: opts, legacyVoiceOptions } = migrateLegacyOptions(options);
|
|
104
|
+
const { vad, stt, llm, tts, userData, connOptions, ...resolvedSessionOptions } = opts;
|
|
103
105
|
this._connOptions = {
|
|
104
106
|
sttConnOptions: { ...DEFAULT_API_CONNECT_OPTIONS, ...connOptions == null ? void 0 : connOptions.sttConnOptions },
|
|
105
107
|
llmConnOptions: { ...DEFAULT_API_CONNECT_OPTIONS, ...connOptions == null ? void 0 : connOptions.llmConnOptions },
|
|
@@ -122,23 +124,21 @@ class AgentSession extends EventEmitter {
|
|
|
122
124
|
} else {
|
|
123
125
|
this.tts = tts;
|
|
124
126
|
}
|
|
125
|
-
this.turnDetection =
|
|
126
|
-
this._interruptionDetection = (
|
|
127
|
+
this.turnDetection = resolvedSessionOptions.turnHandling.turnDetection;
|
|
128
|
+
this._interruptionDetection = (_a = resolvedSessionOptions.turnHandling.interruption) == null ? void 0 : _a.mode;
|
|
127
129
|
this._userData = userData;
|
|
128
130
|
this._input = new AgentInput(this.onAudioInputChanged);
|
|
129
131
|
this._output = new AgentOutput(this.onAudioOutputChanged, this.onTextOutputChanged);
|
|
130
132
|
this._chatCtx = ChatContext.empty();
|
|
131
|
-
this.
|
|
132
|
-
this.
|
|
133
|
+
this.sessionOptions = resolvedSessionOptions;
|
|
134
|
+
this.options = legacyVoiceOptions;
|
|
135
|
+
this._aecWarmupRemaining = this.sessionOptions.aecWarmupDuration ?? 0;
|
|
133
136
|
this._onUserInputTranscribed = this._onUserInputTranscribed.bind(this);
|
|
134
137
|
this.on(AgentSessionEventTypes.UserInputTranscribed, this._onUserInputTranscribed);
|
|
135
138
|
}
|
|
136
139
|
emit(event, ...args) {
|
|
137
140
|
const eventData = args[0];
|
|
138
141
|
this._recordedEvents.push(eventData);
|
|
139
|
-
if (event === AgentSessionEventTypes.MetricsCollected) {
|
|
140
|
-
this._usageCollector.collect(eventData.metrics);
|
|
141
|
-
}
|
|
142
142
|
return super.emit(event, ...args);
|
|
143
143
|
}
|
|
144
144
|
get input() {
|
|
@@ -170,7 +170,7 @@ class AgentSession extends EventEmitter {
|
|
|
170
170
|
return { modelUsage: this._usageCollector.flatten().map(filterZeroValues) };
|
|
171
171
|
}
|
|
172
172
|
get useTtsAlignedTranscript() {
|
|
173
|
-
return this.
|
|
173
|
+
return this.sessionOptions.useTtsAlignedTranscript;
|
|
174
174
|
}
|
|
175
175
|
set userData(value) {
|
|
176
176
|
this._userData = value;
|
|
@@ -209,9 +209,11 @@ class AgentSession extends EventEmitter {
|
|
|
209
209
|
outputOptions
|
|
210
210
|
});
|
|
211
211
|
this._roomIO.start();
|
|
212
|
-
|
|
212
|
+
const transport = new RoomSessionTransport(room, this._roomIO);
|
|
213
|
+
this.sessionHost = new SessionHost(transport);
|
|
214
|
+
this.sessionHost.registerSession(this);
|
|
213
215
|
if ((inputOptions == null ? void 0 : inputOptions.textEnabled) !== false) {
|
|
214
|
-
this.
|
|
216
|
+
this.sessionHost.registerTextInput(
|
|
215
217
|
(inputOptions == null ? void 0 : inputOptions.textInputCallback) ?? DEFAULT_TEXT_INPUT_CALLBACK
|
|
216
218
|
);
|
|
217
219
|
}
|
|
@@ -245,8 +247,8 @@ class AgentSession extends EventEmitter {
|
|
|
245
247
|
}
|
|
246
248
|
tasks.push(this._updateActivity(this.agent, { waitOnEnter: false }));
|
|
247
249
|
await Promise.allSettled(tasks);
|
|
248
|
-
if (this.
|
|
249
|
-
await this.
|
|
250
|
+
if (this.sessionHost) {
|
|
251
|
+
await this.sessionHost.start();
|
|
250
252
|
}
|
|
251
253
|
this.logger.debug(
|
|
252
254
|
`using audio io: ${this.input.audio ? "`" + this.input.audio.constructor.name + "`" : "(none)"} -> \`AgentSession\` -> ${this.output.audio ? "`" + this.output.audio.constructor.name + "`" : "(none)"}`
|
|
@@ -547,7 +549,9 @@ class AgentSession extends EventEmitter {
|
|
|
547
549
|
if (this.closingTask) {
|
|
548
550
|
return;
|
|
549
551
|
}
|
|
550
|
-
this.closeImpl(reason, error, drain)
|
|
552
|
+
this.closingTask = this.closeImpl(reason, error, drain).finally(() => {
|
|
553
|
+
this.closingTask = null;
|
|
554
|
+
});
|
|
551
555
|
}
|
|
552
556
|
/** @internal */
|
|
553
557
|
_onError(error) {
|
|
@@ -565,12 +569,10 @@ class AgentSession extends EventEmitter {
|
|
|
565
569
|
return;
|
|
566
570
|
}
|
|
567
571
|
} else if (error.type === "interruption_detection_error") {
|
|
568
|
-
this.
|
|
569
|
-
|
|
570
|
-
return;
|
|
571
|
-
}
|
|
572
|
+
this.logger.error(error.toString());
|
|
573
|
+
return;
|
|
572
574
|
}
|
|
573
|
-
this.logger.error(error, "AgentSession is closing due to unrecoverable error");
|
|
575
|
+
this.logger.error(error, "AgentSession is closing due to an unrecoverable error");
|
|
574
576
|
this.closingTask = (async () => {
|
|
575
577
|
await this.closeImpl(CloseReason.ERROR, error);
|
|
576
578
|
})().then(() => {
|
|
@@ -595,7 +597,6 @@ class AgentSession extends EventEmitter {
|
|
|
595
597
|
if (state === "speaking") {
|
|
596
598
|
this.llmErrorCounts = 0;
|
|
597
599
|
this.ttsErrorCounts = 0;
|
|
598
|
-
this.interruptionDetectionErrorCounts = 0;
|
|
599
600
|
if (this.agentSpeakingSpan === void 0) {
|
|
600
601
|
this.agentSpeakingSpan = tracer.startSpan({
|
|
601
602
|
name: "agent_speaking",
|
|
@@ -631,7 +632,7 @@ class AgentSession extends EventEmitter {
|
|
|
631
632
|
);
|
|
632
633
|
}
|
|
633
634
|
/** @internal */
|
|
634
|
-
_updateUserState(state,
|
|
635
|
+
_updateUserState(state, options) {
|
|
635
636
|
var _a;
|
|
636
637
|
if (this._userState === state) {
|
|
637
638
|
return;
|
|
@@ -639,15 +640,15 @@ class AgentSession extends EventEmitter {
|
|
|
639
640
|
if (state === "speaking" && this._userSpeakingSpan === void 0) {
|
|
640
641
|
this._userSpeakingSpan = tracer.startSpan({
|
|
641
642
|
name: "user_speaking",
|
|
642
|
-
context: this.rootSpanContext,
|
|
643
|
-
startTime: lastSpeakingTime
|
|
643
|
+
context: (options == null ? void 0 : options.otelContext) ?? this.rootSpanContext,
|
|
644
|
+
startTime: options == null ? void 0 : options.lastSpeakingTime
|
|
644
645
|
});
|
|
645
646
|
const linked = (_a = this._roomIO) == null ? void 0 : _a.linkedParticipant;
|
|
646
647
|
if (linked) {
|
|
647
648
|
setParticipantSpanAttributes(this._userSpeakingSpan, linked);
|
|
648
649
|
}
|
|
649
650
|
} else if (this._userSpeakingSpan !== void 0) {
|
|
650
|
-
this._userSpeakingSpan.end(lastSpeakingTime);
|
|
651
|
+
this._userSpeakingSpan.end(options == null ? void 0 : options.lastSpeakingTime);
|
|
651
652
|
this._userSpeakingSpan = void 0;
|
|
652
653
|
}
|
|
653
654
|
const oldState = this._userState;
|
|
@@ -677,7 +678,7 @@ class AgentSession extends EventEmitter {
|
|
|
677
678
|
}
|
|
678
679
|
_setUserAwayTimer() {
|
|
679
680
|
this._cancelUserAwayTimer();
|
|
680
|
-
if (this.
|
|
681
|
+
if (this.sessionOptions.userAwayTimeout === null || this.sessionOptions.userAwayTimeout === void 0) {
|
|
681
682
|
return;
|
|
682
683
|
}
|
|
683
684
|
if (this._roomIO && !this._roomIO.isParticipantAvailable) {
|
|
@@ -686,7 +687,7 @@ class AgentSession extends EventEmitter {
|
|
|
686
687
|
this.userAwayTimer = setTimeout(() => {
|
|
687
688
|
this.logger.debug("User away timeout triggered");
|
|
688
689
|
this._updateUserState("away");
|
|
689
|
-
}, this.
|
|
690
|
+
}, this.sessionOptions.userAwayTimeout * 1e3);
|
|
690
691
|
}
|
|
691
692
|
_cancelUserAwayTimer() {
|
|
692
693
|
if (this.userAwayTimer !== null) {
|
|
@@ -751,8 +752,8 @@ class AgentSession extends EventEmitter {
|
|
|
751
752
|
this.input.audio = null;
|
|
752
753
|
this.output.audio = null;
|
|
753
754
|
this.output.transcription = null;
|
|
754
|
-
await ((_b = this.
|
|
755
|
-
this.
|
|
755
|
+
await ((_b = this.sessionHost) == null ? void 0 : _b.close());
|
|
756
|
+
this.sessionHost = void 0;
|
|
756
757
|
await ((_c = this._roomIO) == null ? void 0 : _c.close());
|
|
757
758
|
this._roomIO = void 0;
|
|
758
759
|
await ((_d = this.activity) == null ? void 0 : _d.close());
|
|
@@ -776,12 +777,11 @@ class AgentSession extends EventEmitter {
|
|
|
776
777
|
this.rootSpanContext = void 0;
|
|
777
778
|
this.llmErrorCounts = 0;
|
|
778
779
|
this.ttsErrorCounts = 0;
|
|
779
|
-
this.interruptionDetectionErrorCounts = 0;
|
|
780
780
|
this.logger.info({ reason, error }, "AgentSession closed");
|
|
781
781
|
}
|
|
782
782
|
}
|
|
783
783
|
export {
|
|
784
784
|
AgentSession,
|
|
785
|
-
|
|
785
|
+
defaultAgentSessionOptions
|
|
786
786
|
};
|
|
787
787
|
//# sourceMappingURL=agent_session.js.map
|