@livekit/agents 1.0.48 → 1.1.0-dev.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/constants.cjs +27 -0
- package/dist/constants.cjs.map +1 -1
- package/dist/constants.d.cts +9 -0
- package/dist/constants.d.ts +9 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +18 -0
- package/dist/constants.js.map +1 -1
- package/dist/inference/api_protos.d.cts +71 -71
- package/dist/inference/api_protos.d.ts +71 -71
- package/dist/inference/interruption/defaults.cjs +81 -0
- package/dist/inference/interruption/defaults.cjs.map +1 -0
- package/dist/inference/interruption/defaults.d.cts +19 -0
- package/dist/inference/interruption/defaults.d.ts +19 -0
- package/dist/inference/interruption/defaults.d.ts.map +1 -0
- package/dist/inference/interruption/defaults.js +46 -0
- package/dist/inference/interruption/defaults.js.map +1 -0
- package/dist/inference/interruption/errors.cjs +44 -0
- package/dist/inference/interruption/errors.cjs.map +1 -0
- package/dist/inference/interruption/errors.d.cts +12 -0
- package/dist/inference/interruption/errors.d.ts +12 -0
- package/dist/inference/interruption/errors.d.ts.map +1 -0
- package/dist/inference/interruption/errors.js +20 -0
- package/dist/inference/interruption/errors.js.map +1 -0
- package/dist/inference/interruption/http_transport.cjs +147 -0
- package/dist/inference/interruption/http_transport.cjs.map +1 -0
- package/dist/inference/interruption/http_transport.d.cts +63 -0
- package/dist/inference/interruption/http_transport.d.ts +63 -0
- package/dist/inference/interruption/http_transport.d.ts.map +1 -0
- package/dist/inference/interruption/http_transport.js +121 -0
- package/dist/inference/interruption/http_transport.js.map +1 -0
- package/dist/inference/interruption/interruption_cache_entry.cjs +58 -0
- package/dist/inference/interruption/interruption_cache_entry.cjs.map +1 -0
- package/dist/inference/interruption/interruption_cache_entry.d.cts +30 -0
- package/dist/inference/interruption/interruption_cache_entry.d.ts +30 -0
- package/dist/inference/interruption/interruption_cache_entry.d.ts.map +1 -0
- package/dist/inference/interruption/interruption_cache_entry.js +34 -0
- package/dist/inference/interruption/interruption_cache_entry.js.map +1 -0
- package/dist/inference/interruption/interruption_detector.cjs +181 -0
- package/dist/inference/interruption/interruption_detector.cjs.map +1 -0
- package/dist/inference/interruption/interruption_detector.d.cts +59 -0
- package/dist/inference/interruption/interruption_detector.d.ts +59 -0
- package/dist/inference/interruption/interruption_detector.d.ts.map +1 -0
- package/dist/inference/interruption/interruption_detector.js +147 -0
- package/dist/inference/interruption/interruption_detector.js.map +1 -0
- package/dist/inference/interruption/interruption_stream.cjs +368 -0
- package/dist/inference/interruption/interruption_stream.cjs.map +1 -0
- package/dist/inference/interruption/interruption_stream.d.cts +46 -0
- package/dist/inference/interruption/interruption_stream.d.ts +46 -0
- package/dist/inference/interruption/interruption_stream.d.ts.map +1 -0
- package/dist/inference/interruption/interruption_stream.js +344 -0
- package/dist/inference/interruption/interruption_stream.js.map +1 -0
- package/dist/inference/interruption/types.cjs +17 -0
- package/dist/inference/interruption/types.cjs.map +1 -0
- package/dist/inference/interruption/types.d.cts +66 -0
- package/dist/inference/interruption/types.d.ts +66 -0
- package/dist/inference/interruption/types.d.ts.map +1 -0
- package/dist/inference/interruption/types.js +1 -0
- package/dist/inference/interruption/types.js.map +1 -0
- package/dist/inference/interruption/utils.cjs +130 -0
- package/dist/inference/interruption/utils.cjs.map +1 -0
- package/dist/inference/interruption/utils.d.cts +41 -0
- package/dist/inference/interruption/utils.d.ts +41 -0
- package/dist/inference/interruption/utils.d.ts.map +1 -0
- package/dist/inference/interruption/utils.js +105 -0
- package/dist/inference/interruption/utils.js.map +1 -0
- package/dist/inference/interruption/utils.test.cjs +105 -0
- package/dist/inference/interruption/utils.test.cjs.map +1 -0
- package/dist/inference/interruption/utils.test.js +104 -0
- package/dist/inference/interruption/utils.test.js.map +1 -0
- package/dist/inference/interruption/ws_transport.cjs +329 -0
- package/dist/inference/interruption/ws_transport.cjs.map +1 -0
- package/dist/inference/interruption/ws_transport.d.cts +33 -0
- package/dist/inference/interruption/ws_transport.d.ts +33 -0
- package/dist/inference/interruption/ws_transport.d.ts.map +1 -0
- package/dist/inference/interruption/ws_transport.js +295 -0
- package/dist/inference/interruption/ws_transport.js.map +1 -0
- package/dist/inference/llm.cjs +14 -10
- package/dist/inference/llm.cjs.map +1 -1
- package/dist/inference/llm.d.cts +2 -1
- package/dist/inference/llm.d.ts +2 -1
- package/dist/inference/llm.d.ts.map +1 -1
- package/dist/inference/llm.js +8 -10
- package/dist/inference/llm.js.map +1 -1
- package/dist/inference/stt.cjs +7 -2
- package/dist/inference/stt.cjs.map +1 -1
- package/dist/inference/stt.d.cts +2 -0
- package/dist/inference/stt.d.ts +2 -0
- package/dist/inference/stt.d.ts.map +1 -1
- package/dist/inference/stt.js +8 -3
- package/dist/inference/stt.js.map +1 -1
- package/dist/inference/tts.cjs +7 -2
- package/dist/inference/tts.cjs.map +1 -1
- package/dist/inference/tts.d.cts +2 -0
- package/dist/inference/tts.d.ts +2 -0
- package/dist/inference/tts.d.ts.map +1 -1
- package/dist/inference/tts.js +8 -3
- package/dist/inference/tts.js.map +1 -1
- package/dist/inference/utils.cjs +26 -7
- package/dist/inference/utils.cjs.map +1 -1
- package/dist/inference/utils.d.cts +13 -0
- package/dist/inference/utils.d.ts +13 -0
- package/dist/inference/utils.d.ts.map +1 -1
- package/dist/inference/utils.js +18 -2
- package/dist/inference/utils.js.map +1 -1
- package/dist/llm/chat_context.cjs +20 -2
- package/dist/llm/chat_context.cjs.map +1 -1
- package/dist/llm/chat_context.d.cts +19 -1
- package/dist/llm/chat_context.d.ts +19 -1
- package/dist/llm/chat_context.d.ts.map +1 -1
- package/dist/llm/chat_context.js +20 -2
- package/dist/llm/chat_context.js.map +1 -1
- 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.map +1 -1
- package/dist/llm/llm.cjs +16 -1
- package/dist/llm/llm.cjs.map +1 -1
- package/dist/llm/llm.d.cts +9 -0
- package/dist/llm/llm.d.ts +9 -0
- package/dist/llm/llm.d.ts.map +1 -1
- package/dist/llm/llm.js +16 -1
- package/dist/llm/llm.js.map +1 -1
- package/dist/llm/realtime.cjs +3 -0
- package/dist/llm/realtime.cjs.map +1 -1
- package/dist/llm/realtime.d.cts +1 -0
- package/dist/llm/realtime.d.ts +1 -0
- package/dist/llm/realtime.d.ts.map +1 -1
- package/dist/llm/realtime.js +3 -0
- package/dist/llm/realtime.js.map +1 -1
- package/dist/metrics/base.cjs.map +1 -1
- package/dist/metrics/base.d.cts +45 -1
- package/dist/metrics/base.d.ts +45 -1
- package/dist/metrics/base.d.ts.map +1 -1
- package/dist/metrics/index.cjs +5 -0
- package/dist/metrics/index.cjs.map +1 -1
- package/dist/metrics/index.d.cts +2 -1
- package/dist/metrics/index.d.ts +2 -1
- package/dist/metrics/index.d.ts.map +1 -1
- package/dist/metrics/index.js +6 -0
- package/dist/metrics/index.js.map +1 -1
- package/dist/metrics/model_usage.cjs +189 -0
- package/dist/metrics/model_usage.cjs.map +1 -0
- package/dist/metrics/model_usage.d.cts +92 -0
- package/dist/metrics/model_usage.d.ts +92 -0
- package/dist/metrics/model_usage.d.ts.map +1 -0
- package/dist/metrics/model_usage.js +164 -0
- package/dist/metrics/model_usage.js.map +1 -0
- package/dist/metrics/model_usage.test.cjs +474 -0
- package/dist/metrics/model_usage.test.cjs.map +1 -0
- package/dist/metrics/model_usage.test.js +476 -0
- package/dist/metrics/model_usage.test.js.map +1 -0
- package/dist/metrics/usage_collector.cjs +3 -0
- package/dist/metrics/usage_collector.cjs.map +1 -1
- package/dist/metrics/usage_collector.d.cts +9 -0
- package/dist/metrics/usage_collector.d.ts +9 -0
- package/dist/metrics/usage_collector.d.ts.map +1 -1
- package/dist/metrics/usage_collector.js +3 -0
- package/dist/metrics/usage_collector.js.map +1 -1
- package/dist/metrics/utils.cjs +9 -0
- package/dist/metrics/utils.cjs.map +1 -1
- package/dist/metrics/utils.d.ts.map +1 -1
- package/dist/metrics/utils.js +9 -0
- package/dist/metrics/utils.js.map +1 -1
- package/dist/stream/multi_input_stream.test.cjs +4 -0
- package/dist/stream/multi_input_stream.test.cjs.map +1 -1
- package/dist/stream/multi_input_stream.test.js +5 -1
- package/dist/stream/multi_input_stream.test.js.map +1 -1
- package/dist/stream/stream_channel.cjs +31 -0
- package/dist/stream/stream_channel.cjs.map +1 -1
- package/dist/stream/stream_channel.d.cts +4 -2
- package/dist/stream/stream_channel.d.ts +4 -2
- package/dist/stream/stream_channel.d.ts.map +1 -1
- package/dist/stream/stream_channel.js +31 -0
- package/dist/stream/stream_channel.js.map +1 -1
- package/dist/stt/stt.cjs +34 -2
- package/dist/stt/stt.cjs.map +1 -1
- package/dist/stt/stt.d.cts +22 -0
- package/dist/stt/stt.d.ts +22 -0
- package/dist/stt/stt.d.ts.map +1 -1
- package/dist/stt/stt.js +34 -2
- package/dist/stt/stt.js.map +1 -1
- package/dist/telemetry/otel_http_exporter.cjs +24 -5
- package/dist/telemetry/otel_http_exporter.cjs.map +1 -1
- package/dist/telemetry/otel_http_exporter.d.cts +1 -0
- package/dist/telemetry/otel_http_exporter.d.ts +1 -0
- package/dist/telemetry/otel_http_exporter.d.ts.map +1 -1
- package/dist/telemetry/otel_http_exporter.js +24 -5
- package/dist/telemetry/otel_http_exporter.js.map +1 -1
- package/dist/telemetry/trace_types.cjs +5 -5
- package/dist/telemetry/trace_types.cjs.map +1 -1
- package/dist/telemetry/trace_types.d.cts +9 -5
- package/dist/telemetry/trace_types.d.ts +9 -5
- package/dist/telemetry/trace_types.d.ts.map +1 -1
- package/dist/telemetry/trace_types.js +5 -5
- package/dist/telemetry/trace_types.js.map +1 -1
- package/dist/telemetry/traces.cjs +47 -8
- package/dist/telemetry/traces.cjs.map +1 -1
- package/dist/telemetry/traces.d.ts.map +1 -1
- package/dist/telemetry/traces.js +47 -8
- package/dist/telemetry/traces.js.map +1 -1
- package/dist/tts/tts.cjs +64 -2
- package/dist/tts/tts.cjs.map +1 -1
- package/dist/tts/tts.d.cts +34 -0
- package/dist/tts/tts.d.ts +34 -0
- package/dist/tts/tts.d.ts.map +1 -1
- package/dist/tts/tts.js +64 -2
- package/dist/tts/tts.js.map +1 -1
- package/dist/version.cjs +1 -1
- package/dist/version.js +1 -1
- package/dist/voice/agent.cjs +25 -4
- package/dist/voice/agent.cjs.map +1 -1
- package/dist/voice/agent.d.cts +10 -2
- package/dist/voice/agent.d.ts +10 -2
- package/dist/voice/agent.d.ts.map +1 -1
- package/dist/voice/agent.js +25 -4
- package/dist/voice/agent.js.map +1 -1
- package/dist/voice/agent_activity.cjs +261 -36
- package/dist/voice/agent_activity.cjs.map +1 -1
- package/dist/voice/agent_activity.d.cts +20 -6
- package/dist/voice/agent_activity.d.ts +20 -6
- package/dist/voice/agent_activity.d.ts.map +1 -1
- package/dist/voice/agent_activity.js +262 -37
- package/dist/voice/agent_activity.js.map +1 -1
- package/dist/voice/agent_session.cjs +105 -48
- package/dist/voice/agent_session.cjs.map +1 -1
- package/dist/voice/agent_session.d.cts +90 -20
- package/dist/voice/agent_session.d.ts +90 -20
- package/dist/voice/agent_session.d.ts.map +1 -1
- package/dist/voice/agent_session.js +105 -46
- package/dist/voice/agent_session.js.map +1 -1
- package/dist/voice/audio_recognition.cjs +287 -6
- package/dist/voice/audio_recognition.cjs.map +1 -1
- package/dist/voice/audio_recognition.d.cts +42 -3
- package/dist/voice/audio_recognition.d.ts +42 -3
- package/dist/voice/audio_recognition.d.ts.map +1 -1
- package/dist/voice/audio_recognition.js +289 -7
- package/dist/voice/audio_recognition.js.map +1 -1
- package/dist/voice/client_events.cjs +554 -0
- package/dist/voice/client_events.cjs.map +1 -0
- package/dist/voice/client_events.d.cts +195 -0
- package/dist/voice/client_events.d.ts +195 -0
- package/dist/voice/client_events.d.ts.map +1 -0
- package/dist/voice/client_events.js +548 -0
- package/dist/voice/client_events.js.map +1 -0
- package/dist/voice/events.cjs +1 -0
- package/dist/voice/events.cjs.map +1 -1
- package/dist/voice/events.d.cts +8 -5
- package/dist/voice/events.d.ts +8 -5
- package/dist/voice/events.d.ts.map +1 -1
- package/dist/voice/events.js +1 -0
- package/dist/voice/events.js.map +1 -1
- package/dist/voice/generation.cjs +43 -8
- package/dist/voice/generation.cjs.map +1 -1
- package/dist/voice/generation.d.cts +3 -3
- package/dist/voice/generation.d.ts +3 -3
- package/dist/voice/generation.d.ts.map +1 -1
- package/dist/voice/generation.js +43 -8
- package/dist/voice/generation.js.map +1 -1
- package/dist/voice/index.cjs +1 -0
- package/dist/voice/index.cjs.map +1 -1
- package/dist/voice/index.d.cts +1 -0
- package/dist/voice/index.d.ts +1 -0
- package/dist/voice/index.d.ts.map +1 -1
- package/dist/voice/index.js +1 -0
- package/dist/voice/index.js.map +1 -1
- package/dist/voice/report.cjs +20 -8
- package/dist/voice/report.cjs.map +1 -1
- package/dist/voice/report.d.cts +5 -0
- package/dist/voice/report.d.ts +5 -0
- package/dist/voice/report.d.ts.map +1 -1
- package/dist/voice/report.js +20 -8
- package/dist/voice/report.js.map +1 -1
- package/dist/voice/report.test.cjs +106 -0
- package/dist/voice/report.test.cjs.map +1 -0
- package/dist/voice/report.test.js +105 -0
- package/dist/voice/report.test.js.map +1 -0
- package/dist/voice/room_io/room_io.cjs +5 -39
- package/dist/voice/room_io/room_io.cjs.map +1 -1
- package/dist/voice/room_io/room_io.d.cts +4 -9
- package/dist/voice/room_io/room_io.d.ts +4 -9
- package/dist/voice/room_io/room_io.d.ts.map +1 -1
- package/dist/voice/room_io/room_io.js +5 -40
- package/dist/voice/room_io/room_io.js.map +1 -1
- package/dist/voice/turn_config/endpointing.cjs +33 -0
- package/dist/voice/turn_config/endpointing.cjs.map +1 -0
- package/dist/voice/turn_config/endpointing.d.cts +30 -0
- package/dist/voice/turn_config/endpointing.d.ts +30 -0
- package/dist/voice/turn_config/endpointing.d.ts.map +1 -0
- package/dist/voice/turn_config/endpointing.js +9 -0
- package/dist/voice/turn_config/endpointing.js.map +1 -0
- package/dist/voice/turn_config/interruption.cjs +37 -0
- package/dist/voice/turn_config/interruption.cjs.map +1 -0
- package/dist/voice/turn_config/interruption.d.cts +53 -0
- package/dist/voice/turn_config/interruption.d.ts +53 -0
- package/dist/voice/turn_config/interruption.d.ts.map +1 -0
- package/dist/voice/turn_config/interruption.js +13 -0
- package/dist/voice/turn_config/interruption.js.map +1 -0
- package/dist/voice/turn_config/turn_handling.cjs +35 -0
- package/dist/voice/turn_config/turn_handling.cjs.map +1 -0
- package/dist/voice/turn_config/turn_handling.d.cts +36 -0
- package/dist/voice/turn_config/turn_handling.d.ts +36 -0
- package/dist/voice/turn_config/turn_handling.d.ts.map +1 -0
- package/dist/voice/turn_config/turn_handling.js +11 -0
- package/dist/voice/turn_config/turn_handling.js.map +1 -0
- package/dist/voice/turn_config/utils.cjs +97 -0
- package/dist/voice/turn_config/utils.cjs.map +1 -0
- package/dist/voice/turn_config/utils.d.cts +25 -0
- package/dist/voice/turn_config/utils.d.ts +25 -0
- package/dist/voice/turn_config/utils.d.ts.map +1 -0
- package/dist/voice/turn_config/utils.js +73 -0
- package/dist/voice/turn_config/utils.js.map +1 -0
- package/dist/voice/turn_config/utils.test.cjs +86 -0
- package/dist/voice/turn_config/utils.test.cjs.map +1 -0
- package/dist/voice/turn_config/utils.test.js +85 -0
- package/dist/voice/turn_config/utils.test.js.map +1 -0
- package/dist/voice/wire_format.cjs +798 -0
- package/dist/voice/wire_format.cjs.map +1 -0
- package/dist/voice/wire_format.d.cts +5503 -0
- package/dist/voice/wire_format.d.ts +5503 -0
- package/dist/voice/wire_format.d.ts.map +1 -0
- package/dist/voice/wire_format.js +728 -0
- package/dist/voice/wire_format.js.map +1 -0
- package/package.json +2 -1
- package/src/constants.ts +13 -0
- package/src/inference/interruption/defaults.ts +51 -0
- package/src/inference/interruption/errors.ts +25 -0
- package/src/inference/interruption/http_transport.ts +187 -0
- package/src/inference/interruption/interruption_cache_entry.ts +50 -0
- package/src/inference/interruption/interruption_detector.ts +188 -0
- package/src/inference/interruption/interruption_stream.ts +467 -0
- package/src/inference/interruption/types.ts +84 -0
- package/src/inference/interruption/utils.test.ts +132 -0
- package/src/inference/interruption/utils.ts +137 -0
- package/src/inference/interruption/ws_transport.ts +402 -0
- package/src/inference/llm.ts +9 -12
- package/src/inference/stt.ts +10 -3
- package/src/inference/tts.ts +10 -3
- package/src/inference/utils.ts +29 -1
- package/src/llm/chat_context.ts +40 -2
- package/src/llm/index.ts +1 -0
- package/src/llm/llm.ts +16 -0
- package/src/llm/realtime.ts +4 -0
- package/src/metrics/base.ts +48 -1
- package/src/metrics/index.ts +11 -0
- package/src/metrics/model_usage.test.ts +545 -0
- package/src/metrics/model_usage.ts +262 -0
- package/src/metrics/usage_collector.ts +11 -0
- package/src/metrics/utils.ts +11 -0
- package/src/stream/multi_input_stream.test.ts +6 -1
- package/src/stream/stream_channel.ts +34 -2
- package/src/stt/stt.ts +38 -0
- package/src/telemetry/otel_http_exporter.ts +28 -5
- package/src/telemetry/trace_types.ts +11 -8
- package/src/telemetry/traces.ts +111 -54
- package/src/tts/tts.ts +69 -1
- package/src/voice/agent.ts +30 -3
- package/src/voice/agent_activity.ts +327 -28
- package/src/voice/agent_session.ts +207 -59
- package/src/voice/audio_recognition.ts +385 -9
- package/src/voice/client_events.ts +838 -0
- package/src/voice/events.ts +14 -4
- package/src/voice/generation.ts +52 -9
- package/src/voice/index.ts +1 -0
- package/src/voice/report.test.ts +117 -0
- package/src/voice/report.ts +29 -6
- package/src/voice/room_io/room_io.ts +7 -61
- package/src/voice/turn_config/endpointing.ts +33 -0
- package/src/voice/turn_config/interruption.ts +56 -0
- package/src/voice/turn_config/turn_handling.ts +45 -0
- package/src/voice/turn_config/utils.test.ts +100 -0
- package/src/voice/turn_config/utils.ts +103 -0
- package/src/voice/wire_format.ts +827 -0
package/src/llm/chat_context.ts
CHANGED
|
@@ -81,6 +81,17 @@ export function createAudioContent(params: {
|
|
|
81
81
|
};
|
|
82
82
|
}
|
|
83
83
|
|
|
84
|
+
export interface MetricsReport {
|
|
85
|
+
startedSpeakingAt?: number;
|
|
86
|
+
stoppedSpeakingAt?: number;
|
|
87
|
+
transcriptionDelay?: number;
|
|
88
|
+
endOfTurnDelay?: number;
|
|
89
|
+
onUserTurnCompletedDelay?: number;
|
|
90
|
+
llmNodeTtft?: number;
|
|
91
|
+
ttsNodeTtfb?: number;
|
|
92
|
+
e2eLatency?: number;
|
|
93
|
+
}
|
|
94
|
+
|
|
84
95
|
export class ChatMessage {
|
|
85
96
|
readonly id: string;
|
|
86
97
|
|
|
@@ -92,18 +103,24 @@ export class ChatMessage {
|
|
|
92
103
|
|
|
93
104
|
interrupted: boolean;
|
|
94
105
|
|
|
106
|
+
transcriptConfidence?: number;
|
|
107
|
+
|
|
108
|
+
extra: Record<string, unknown>;
|
|
109
|
+
|
|
110
|
+
metrics: MetricsReport;
|
|
111
|
+
|
|
95
112
|
hash?: Uint8Array;
|
|
96
113
|
|
|
97
114
|
createdAt: number;
|
|
98
115
|
|
|
99
|
-
extra: Record<string, unknown>;
|
|
100
|
-
|
|
101
116
|
constructor(params: {
|
|
102
117
|
role: ChatRole;
|
|
103
118
|
content: ChatContent[] | string;
|
|
104
119
|
id?: string;
|
|
105
120
|
interrupted?: boolean;
|
|
106
121
|
createdAt?: number;
|
|
122
|
+
transcriptConfidence?: number;
|
|
123
|
+
metrics?: MetricsReport;
|
|
107
124
|
extra?: Record<string, unknown>;
|
|
108
125
|
}) {
|
|
109
126
|
const {
|
|
@@ -112,6 +129,8 @@ export class ChatMessage {
|
|
|
112
129
|
id = shortuuid('item_'),
|
|
113
130
|
interrupted = false,
|
|
114
131
|
createdAt = Date.now(),
|
|
132
|
+
transcriptConfidence,
|
|
133
|
+
metrics = {},
|
|
115
134
|
extra = {},
|
|
116
135
|
} = params;
|
|
117
136
|
this.id = id;
|
|
@@ -119,6 +138,8 @@ export class ChatMessage {
|
|
|
119
138
|
this.content = Array.isArray(content) ? content : [content];
|
|
120
139
|
this.interrupted = interrupted;
|
|
121
140
|
this.createdAt = createdAt;
|
|
141
|
+
this.transcriptConfidence = transcriptConfidence;
|
|
142
|
+
this.metrics = metrics;
|
|
122
143
|
this.extra = extra;
|
|
123
144
|
}
|
|
124
145
|
|
|
@@ -128,6 +149,8 @@ export class ChatMessage {
|
|
|
128
149
|
id?: string;
|
|
129
150
|
interrupted?: boolean;
|
|
130
151
|
createdAt?: number;
|
|
152
|
+
transcriptConfidence?: number;
|
|
153
|
+
metrics?: MetricsReport;
|
|
131
154
|
extra?: Record<string, unknown>;
|
|
132
155
|
}) {
|
|
133
156
|
return new ChatMessage(params);
|
|
@@ -179,6 +202,16 @@ export class ChatMessage {
|
|
|
179
202
|
result.createdAt = this.createdAt;
|
|
180
203
|
}
|
|
181
204
|
|
|
205
|
+
if (this.transcriptConfidence !== undefined) {
|
|
206
|
+
result.transcriptConfidence = this.transcriptConfidence;
|
|
207
|
+
}
|
|
208
|
+
if (Object.keys(this.metrics).length > 0) {
|
|
209
|
+
result.metrics = { ...this.metrics };
|
|
210
|
+
}
|
|
211
|
+
if (Object.keys(this.extra).length > 0) {
|
|
212
|
+
result.extra = this.extra as JSONValue;
|
|
213
|
+
}
|
|
214
|
+
|
|
182
215
|
return result;
|
|
183
216
|
}
|
|
184
217
|
}
|
|
@@ -439,6 +472,8 @@ export class ChatContext {
|
|
|
439
472
|
id?: string;
|
|
440
473
|
interrupted?: boolean;
|
|
441
474
|
createdAt?: number;
|
|
475
|
+
transcriptConfidence?: number;
|
|
476
|
+
metrics?: MetricsReport;
|
|
442
477
|
extra?: Record<string, unknown>;
|
|
443
478
|
}): ChatMessage {
|
|
444
479
|
const msg = new ChatMessage(params);
|
|
@@ -623,6 +658,9 @@ export class ChatContext {
|
|
|
623
658
|
id: item.id,
|
|
624
659
|
interrupted: item.interrupted,
|
|
625
660
|
createdAt: item.createdAt,
|
|
661
|
+
transcriptConfidence: item.transcriptConfidence,
|
|
662
|
+
metrics: item.metrics,
|
|
663
|
+
extra: item.extra,
|
|
626
664
|
});
|
|
627
665
|
|
|
628
666
|
// Filter content based on options
|
package/src/llm/index.ts
CHANGED
package/src/llm/llm.ts
CHANGED
|
@@ -65,6 +65,18 @@ export abstract class LLM extends (EventEmitter as new () => TypedEmitter<LLMCal
|
|
|
65
65
|
return 'unknown';
|
|
66
66
|
}
|
|
67
67
|
|
|
68
|
+
/**
|
|
69
|
+
* Get the provider name for this LLM instance.
|
|
70
|
+
*
|
|
71
|
+
* @returns The provider name if available, "unknown" otherwise.
|
|
72
|
+
*
|
|
73
|
+
* @remarks
|
|
74
|
+
* Plugins should override this property to provide their provider information.
|
|
75
|
+
*/
|
|
76
|
+
get provider(): string {
|
|
77
|
+
return 'unknown';
|
|
78
|
+
}
|
|
79
|
+
|
|
68
80
|
/**
|
|
69
81
|
* Returns a {@link LLMStream} that can be used to push text and receive LLM responses.
|
|
70
82
|
*/
|
|
@@ -248,6 +260,10 @@ export abstract class LLMStream implements AsyncIterableIterator<ChatChunk> {
|
|
|
248
260
|
}
|
|
249
261
|
return (usage?.completionTokens || 0) / (durationMs / 1000);
|
|
250
262
|
})(),
|
|
263
|
+
metadata: {
|
|
264
|
+
modelProvider: this.#llm.provider,
|
|
265
|
+
modelName: this.#llm.model,
|
|
266
|
+
},
|
|
251
267
|
};
|
|
252
268
|
|
|
253
269
|
if (this.#llmRequestSpan) {
|
package/src/llm/realtime.ts
CHANGED
|
@@ -73,6 +73,10 @@ export abstract class RealtimeModel {
|
|
|
73
73
|
/** The model name/identifier used by this realtime model */
|
|
74
74
|
abstract get model(): string;
|
|
75
75
|
|
|
76
|
+
get provider(): string {
|
|
77
|
+
return 'unknown';
|
|
78
|
+
}
|
|
79
|
+
|
|
76
80
|
abstract session(): RealtimeSession;
|
|
77
81
|
|
|
78
82
|
abstract close(): Promise<void>;
|
package/src/metrics/base.ts
CHANGED
|
@@ -2,13 +2,21 @@
|
|
|
2
2
|
//
|
|
3
3
|
// SPDX-License-Identifier: Apache-2.0
|
|
4
4
|
|
|
5
|
+
export type MetricsMetadata = {
|
|
6
|
+
/** The provider name (e.g., 'openai', 'anthropic'). */
|
|
7
|
+
modelProvider?: string;
|
|
8
|
+
/** The model name (e.g., 'gpt-4o', 'claude-3-5-sonnet'). */
|
|
9
|
+
modelName?: string;
|
|
10
|
+
};
|
|
11
|
+
|
|
5
12
|
export type AgentMetrics =
|
|
6
13
|
| STTMetrics
|
|
7
14
|
| LLMMetrics
|
|
8
15
|
| TTSMetrics
|
|
9
16
|
| VADMetrics
|
|
10
17
|
| EOUMetrics
|
|
11
|
-
| RealtimeModelMetrics
|
|
18
|
+
| RealtimeModelMetrics
|
|
19
|
+
| InterruptionMetrics;
|
|
12
20
|
|
|
13
21
|
export type LLMMetrics = {
|
|
14
22
|
type: 'llm_metrics';
|
|
@@ -26,6 +34,8 @@ export type LLMMetrics = {
|
|
|
26
34
|
totalTokens: number;
|
|
27
35
|
tokensPerSecond: number;
|
|
28
36
|
speechId?: string;
|
|
37
|
+
/** Metadata for model provider and name tracking. */
|
|
38
|
+
metadata?: MetricsMetadata;
|
|
29
39
|
};
|
|
30
40
|
|
|
31
41
|
export type STTMetrics = {
|
|
@@ -41,10 +51,16 @@ export type STTMetrics = {
|
|
|
41
51
|
* The duration of the pushed audio in milliseconds.
|
|
42
52
|
*/
|
|
43
53
|
audioDurationMs: number;
|
|
54
|
+
/** Input audio tokens (for token-based billing). */
|
|
55
|
+
inputTokens?: number;
|
|
56
|
+
/** Output text tokens (for token-based billing). */
|
|
57
|
+
outputTokens?: number;
|
|
44
58
|
/**
|
|
45
59
|
* Whether the STT is streaming (e.g using websocket).
|
|
46
60
|
*/
|
|
47
61
|
streamed: boolean;
|
|
62
|
+
/** Metadata for model provider and name tracking. */
|
|
63
|
+
metadata?: MetricsMetadata;
|
|
48
64
|
};
|
|
49
65
|
|
|
50
66
|
export type TTSMetrics = {
|
|
@@ -59,10 +75,17 @@ export type TTSMetrics = {
|
|
|
59
75
|
/** Generated audio duration in milliseconds. */
|
|
60
76
|
audioDurationMs: number;
|
|
61
77
|
cancelled: boolean;
|
|
78
|
+
/** Number of characters synthesized (for character-based billing). */
|
|
62
79
|
charactersCount: number;
|
|
80
|
+
/** Input text tokens (for token-based billing, e.g., OpenAI TTS). */
|
|
81
|
+
inputTokens?: number;
|
|
82
|
+
/** Output audio tokens (for token-based billing, e.g., OpenAI TTS). */
|
|
83
|
+
outputTokens?: number;
|
|
63
84
|
streamed: boolean;
|
|
64
85
|
segmentId?: string;
|
|
65
86
|
speechId?: string;
|
|
87
|
+
/** Metadata for model provider and name tracking. */
|
|
88
|
+
metadata?: MetricsMetadata;
|
|
66
89
|
};
|
|
67
90
|
|
|
68
91
|
export type VADMetrics = {
|
|
@@ -133,6 +156,10 @@ export type RealtimeModelMetrics = {
|
|
|
133
156
|
* The duration of the response from created to done in milliseconds.
|
|
134
157
|
*/
|
|
135
158
|
durationMs: number;
|
|
159
|
+
/**
|
|
160
|
+
* The duration of the session connection in milliseconds (for session-based billing like xAI).
|
|
161
|
+
*/
|
|
162
|
+
sessionDurationMs?: number;
|
|
136
163
|
/**
|
|
137
164
|
* Time to first audio token in milliseconds. -1 if no audio token was sent.
|
|
138
165
|
*/
|
|
@@ -165,4 +192,24 @@ export type RealtimeModelMetrics = {
|
|
|
165
192
|
* Details about the output tokens used in the Response.
|
|
166
193
|
*/
|
|
167
194
|
outputTokenDetails: RealtimeModelMetricsOutputTokenDetails;
|
|
195
|
+
/** Metadata for model provider and name tracking. */
|
|
196
|
+
metadata?: MetricsMetadata;
|
|
197
|
+
};
|
|
198
|
+
|
|
199
|
+
export type InterruptionMetrics = {
|
|
200
|
+
type: 'interruption_metrics';
|
|
201
|
+
timestamp: number;
|
|
202
|
+
/** Latest RTT time taken to perform inference, in milliseconds. */
|
|
203
|
+
totalDuration: number;
|
|
204
|
+
/** Latest time taken by the model side, in milliseconds. */
|
|
205
|
+
predictionDuration: number;
|
|
206
|
+
/** Latest total time from onset of speech to final prediction, in milliseconds. */
|
|
207
|
+
detectionDelay: number;
|
|
208
|
+
/** Number of interruptions detected (incremental). */
|
|
209
|
+
numInterruptions: number;
|
|
210
|
+
/** Number of backchannels detected (incremental). */
|
|
211
|
+
numBackchannels: number;
|
|
212
|
+
/** Number of requests sent to the model (incremental). */
|
|
213
|
+
numRequests: number;
|
|
214
|
+
metadata?: MetricsMetadata;
|
|
168
215
|
};
|
package/src/metrics/index.ts
CHANGED
|
@@ -5,11 +5,22 @@
|
|
|
5
5
|
export type {
|
|
6
6
|
AgentMetrics,
|
|
7
7
|
EOUMetrics,
|
|
8
|
+
InterruptionMetrics,
|
|
8
9
|
LLMMetrics,
|
|
10
|
+
MetricsMetadata,
|
|
9
11
|
RealtimeModelMetrics,
|
|
10
12
|
STTMetrics,
|
|
11
13
|
TTSMetrics,
|
|
12
14
|
VADMetrics,
|
|
13
15
|
} from './base.js';
|
|
16
|
+
export {
|
|
17
|
+
filterZeroValues,
|
|
18
|
+
ModelUsageCollector,
|
|
19
|
+
type InterruptionModelUsage,
|
|
20
|
+
type LLMModelUsage,
|
|
21
|
+
type ModelUsage,
|
|
22
|
+
type STTModelUsage,
|
|
23
|
+
type TTSModelUsage,
|
|
24
|
+
} from './model_usage.js';
|
|
14
25
|
export { UsageCollector, type UsageSummary } from './usage_collector.js';
|
|
15
26
|
export { logMetrics } from './utils.js';
|