@livekit/agents 1.0.31 → 1.0.32
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/ipc/inference_proc_executor.cjs +6 -3
- package/dist/ipc/inference_proc_executor.cjs.map +1 -1
- package/dist/ipc/inference_proc_executor.d.ts.map +1 -1
- package/dist/ipc/inference_proc_executor.js +6 -3
- package/dist/ipc/inference_proc_executor.js.map +1 -1
- package/dist/ipc/job_proc_executor.cjs +6 -1
- package/dist/ipc/job_proc_executor.cjs.map +1 -1
- package/dist/ipc/job_proc_executor.d.ts.map +1 -1
- package/dist/ipc/job_proc_executor.js +6 -1
- package/dist/ipc/job_proc_executor.js.map +1 -1
- package/dist/ipc/job_proc_lazy_main.cjs +1 -1
- package/dist/ipc/job_proc_lazy_main.cjs.map +1 -1
- package/dist/ipc/job_proc_lazy_main.js +1 -1
- package/dist/ipc/job_proc_lazy_main.js.map +1 -1
- package/dist/ipc/supervised_proc.cjs +29 -7
- package/dist/ipc/supervised_proc.cjs.map +1 -1
- package/dist/ipc/supervised_proc.d.ts.map +1 -1
- package/dist/ipc/supervised_proc.js +29 -7
- package/dist/ipc/supervised_proc.js.map +1 -1
- package/dist/ipc/supervised_proc.test.cjs +145 -0
- package/dist/ipc/supervised_proc.test.cjs.map +1 -0
- package/dist/ipc/supervised_proc.test.js +122 -0
- package/dist/ipc/supervised_proc.test.js.map +1 -0
- package/dist/job.cjs +5 -1
- package/dist/job.cjs.map +1 -1
- package/dist/job.d.ts.map +1 -1
- package/dist/job.js +5 -1
- package/dist/job.js.map +1 -1
- package/dist/llm/chat_context.cjs +19 -2
- package/dist/llm/chat_context.cjs.map +1 -1
- package/dist/llm/chat_context.d.cts +8 -0
- package/dist/llm/chat_context.d.ts +8 -0
- package/dist/llm/chat_context.d.ts.map +1 -1
- package/dist/llm/chat_context.js +19 -2
- package/dist/llm/chat_context.js.map +1 -1
- package/dist/llm/provider_format/google.cjs +6 -2
- package/dist/llm/provider_format/google.cjs.map +1 -1
- package/dist/llm/provider_format/google.d.ts.map +1 -1
- package/dist/llm/provider_format/google.js +6 -2
- package/dist/llm/provider_format/google.js.map +1 -1
- package/dist/llm/realtime.cjs.map +1 -1
- package/dist/llm/realtime.d.cts +4 -0
- package/dist/llm/realtime.d.ts +4 -0
- package/dist/llm/realtime.d.ts.map +1 -1
- package/dist/llm/realtime.js.map +1 -1
- package/dist/log.cjs +3 -3
- package/dist/log.cjs.map +1 -1
- package/dist/log.d.cts +5 -0
- package/dist/log.d.ts +5 -0
- package/dist/log.d.ts.map +1 -1
- package/dist/log.js +3 -3
- package/dist/log.js.map +1 -1
- package/dist/stream/stream_channel.cjs +8 -1
- package/dist/stream/stream_channel.cjs.map +1 -1
- package/dist/stream/stream_channel.d.cts +1 -0
- package/dist/stream/stream_channel.d.ts +1 -0
- package/dist/stream/stream_channel.d.ts.map +1 -1
- package/dist/stream/stream_channel.js +8 -1
- package/dist/stream/stream_channel.js.map +1 -1
- package/dist/telemetry/otel_http_exporter.cjs +13 -10
- package/dist/telemetry/otel_http_exporter.cjs.map +1 -1
- package/dist/telemetry/otel_http_exporter.d.ts.map +1 -1
- package/dist/telemetry/otel_http_exporter.js +13 -10
- package/dist/telemetry/otel_http_exporter.js.map +1 -1
- package/dist/telemetry/traces.cjs +22 -4
- package/dist/telemetry/traces.cjs.map +1 -1
- package/dist/telemetry/traces.d.ts.map +1 -1
- package/dist/telemetry/traces.js +22 -4
- package/dist/telemetry/traces.js.map +1 -1
- package/dist/voice/agent_activity.cjs +25 -5
- package/dist/voice/agent_activity.cjs.map +1 -1
- package/dist/voice/agent_activity.d.cts +1 -0
- package/dist/voice/agent_activity.d.ts +1 -0
- package/dist/voice/agent_activity.d.ts.map +1 -1
- package/dist/voice/agent_activity.js +26 -6
- package/dist/voice/agent_activity.js.map +1 -1
- package/dist/voice/generation.cjs +3 -1
- package/dist/voice/generation.cjs.map +1 -1
- package/dist/voice/generation.d.ts.map +1 -1
- package/dist/voice/generation.js +3 -1
- package/dist/voice/generation.js.map +1 -1
- package/package.json +1 -1
- package/src/ipc/inference_proc_executor.ts +11 -3
- package/src/ipc/job_proc_executor.ts +11 -1
- package/src/ipc/job_proc_lazy_main.ts +1 -1
- package/src/ipc/supervised_proc.test.ts +153 -0
- package/src/ipc/supervised_proc.ts +27 -9
- package/src/job.ts +4 -1
- package/src/llm/chat_context.ts +28 -2
- package/src/llm/provider_format/google.ts +6 -2
- package/src/llm/realtime.ts +5 -0
- package/src/log.ts +9 -3
- package/src/stream/stream_channel.ts +9 -1
- package/src/telemetry/otel_http_exporter.ts +14 -10
- package/src/telemetry/traces.ts +28 -4
- package/src/voice/agent_activity.ts +27 -2
- package/src/voice/generation.ts +2 -0
- package/src/llm/__snapshots__/utils.test.ts.snap +0 -65
|
@@ -12,7 +12,7 @@ import { isSameToolChoice, isSameToolContext } from "../llm/tool_context.js";
|
|
|
12
12
|
import { log } from "../log.js";
|
|
13
13
|
import { DeferredReadableStream } from "../stream/deferred_stream.js";
|
|
14
14
|
import { STT } from "../stt/stt.js";
|
|
15
|
-
import { traceTypes, tracer } from "../telemetry/index.js";
|
|
15
|
+
import { recordRealtimeMetrics, traceTypes, tracer } from "../telemetry/index.js";
|
|
16
16
|
import { splitWords } from "../tokenize/basic/word.js";
|
|
17
17
|
import { TTS } from "../tts/tts.js";
|
|
18
18
|
import { Future, Task, cancelAndWait, waitFor } from "../utils.js";
|
|
@@ -46,6 +46,8 @@ class AgentActivity {
|
|
|
46
46
|
started = false;
|
|
47
47
|
audioRecognition;
|
|
48
48
|
realtimeSession;
|
|
49
|
+
realtimeSpans;
|
|
50
|
+
// Maps response_id to OTEL span for metrics recording
|
|
49
51
|
turnDetectionMode;
|
|
50
52
|
logger = log();
|
|
51
53
|
_draining = false;
|
|
@@ -134,6 +136,7 @@ class AgentActivity {
|
|
|
134
136
|
this.agent._agentActivity = this;
|
|
135
137
|
if (this.llm instanceof RealtimeModel) {
|
|
136
138
|
this.realtimeSession = this.llm.session();
|
|
139
|
+
this.realtimeSpans = /* @__PURE__ */ new Map();
|
|
137
140
|
this.realtimeSession.on("generation_created", (ev) => this.onGenerationCreated(ev));
|
|
138
141
|
this.realtimeSession.on("input_speech_started", (ev) => this.onInputSpeechStarted(ev));
|
|
139
142
|
this.realtimeSession.on("input_speech_stopped", (ev) => this.onInputSpeechStopped(ev));
|
|
@@ -346,6 +349,13 @@ class AgentActivity {
|
|
|
346
349
|
if (speechHandle && (ev.type === "llm_metrics" || ev.type === "tts_metrics")) {
|
|
347
350
|
ev.speechId = speechHandle.id;
|
|
348
351
|
}
|
|
352
|
+
if (ev.type === "realtime_model_metrics" && this.realtimeSpans) {
|
|
353
|
+
const span = this.realtimeSpans.get(ev.requestId);
|
|
354
|
+
if (span) {
|
|
355
|
+
recordRealtimeMetrics(span, ev);
|
|
356
|
+
this.realtimeSpans.delete(ev.requestId);
|
|
357
|
+
}
|
|
358
|
+
}
|
|
349
359
|
this.agentSession.emit(
|
|
350
360
|
AgentSessionEventTypes.MetricsCollected,
|
|
351
361
|
createMetricsCollectedEvent({ metrics: ev })
|
|
@@ -1259,6 +1269,10 @@ ${instructions}` : instructions,
|
|
|
1259
1269
|
if (!(this.llm instanceof RealtimeModel)) {
|
|
1260
1270
|
throw new Error("llm is not a realtime model");
|
|
1261
1271
|
}
|
|
1272
|
+
span.setAttribute(traceTypes.ATTR_GEN_AI_REQUEST_MODEL, this.llm.model);
|
|
1273
|
+
if (this.realtimeSpans && ev.responseId) {
|
|
1274
|
+
this.realtimeSpans.set(ev.responseId, span);
|
|
1275
|
+
}
|
|
1262
1276
|
this.logger.debug(
|
|
1263
1277
|
{ speech_id: speechHandle.id, stepIndex: speechHandle.numSteps },
|
|
1264
1278
|
"realtime generation started"
|
|
@@ -1486,7 +1500,12 @@ ${instructions}` : instructions,
|
|
|
1486
1500
|
this.agentSession._updateAgentState("thinking");
|
|
1487
1501
|
});
|
|
1488
1502
|
await executeToolsTask.result;
|
|
1489
|
-
if (toolOutput.output.length === 0)
|
|
1503
|
+
if (toolOutput.output.length === 0) {
|
|
1504
|
+
if (!speechHandle.interrupted) {
|
|
1505
|
+
this.agentSession._updateAgentState("listening");
|
|
1506
|
+
}
|
|
1507
|
+
return;
|
|
1508
|
+
}
|
|
1490
1509
|
const { maxToolSteps } = this.agentSession.options;
|
|
1491
1510
|
if (speechHandle.numSteps >= maxToolSteps) {
|
|
1492
1511
|
this.logger.warn(
|
|
@@ -1664,7 +1683,7 @@ ${instructions}` : instructions,
|
|
|
1664
1683
|
}
|
|
1665
1684
|
}
|
|
1666
1685
|
async close() {
|
|
1667
|
-
var _a, _b, _c;
|
|
1686
|
+
var _a, _b, _c, _d;
|
|
1668
1687
|
const unlock = await this.lock.lock();
|
|
1669
1688
|
try {
|
|
1670
1689
|
if (!this._draining) {
|
|
@@ -1694,9 +1713,10 @@ ${instructions}` : instructions,
|
|
|
1694
1713
|
this.vad.off("metrics_collected", this.onMetricsCollected);
|
|
1695
1714
|
}
|
|
1696
1715
|
this.detachAudioInput();
|
|
1697
|
-
|
|
1698
|
-
await ((_b = this.
|
|
1699
|
-
await ((_c = this.
|
|
1716
|
+
(_a = this.realtimeSpans) == null ? void 0 : _a.clear();
|
|
1717
|
+
await ((_b = this.realtimeSession) == null ? void 0 : _b.close());
|
|
1718
|
+
await ((_c = this.audioRecognition) == null ? void 0 : _c.close());
|
|
1719
|
+
await ((_d = this._mainTask) == null ? void 0 : _d.cancelAndWait());
|
|
1700
1720
|
} finally {
|
|
1701
1721
|
unlock();
|
|
1702
1722
|
}
|