@livekit/agents 1.0.36-dev.0 → 1.0.37
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/index.cjs +1 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +0 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -1
- package/dist/index.js.map +1 -1
- package/dist/inference/utils.cjs +2 -15
- package/dist/inference/utils.cjs.map +1 -1
- package/dist/inference/utils.d.cts +0 -1
- package/dist/inference/utils.d.ts +0 -1
- package/dist/inference/utils.d.ts.map +1 -1
- package/dist/inference/utils.js +1 -13
- package/dist/inference/utils.js.map +1 -1
- package/dist/stream/stream_channel.cjs +0 -3
- package/dist/stream/stream_channel.cjs.map +1 -1
- package/dist/stream/stream_channel.d.cts +2 -3
- package/dist/stream/stream_channel.d.ts +2 -3
- package/dist/stream/stream_channel.d.ts.map +1 -1
- package/dist/stream/stream_channel.js +0 -3
- package/dist/stream/stream_channel.js.map +1 -1
- package/dist/telemetry/trace_types.cjs +0 -15
- package/dist/telemetry/trace_types.cjs.map +1 -1
- package/dist/telemetry/trace_types.d.cts +0 -5
- package/dist/telemetry/trace_types.d.ts +0 -5
- package/dist/telemetry/trace_types.d.ts.map +1 -1
- package/dist/telemetry/trace_types.js +0 -10
- package/dist/telemetry/trace_types.js.map +1 -1
- package/dist/voice/agent_activity.cjs +19 -68
- package/dist/voice/agent_activity.cjs.map +1 -1
- package/dist/voice/agent_activity.d.cts +0 -14
- package/dist/voice/agent_activity.d.ts +0 -14
- package/dist/voice/agent_activity.d.ts.map +1 -1
- package/dist/voice/agent_activity.js +19 -68
- package/dist/voice/agent_activity.js.map +1 -1
- package/dist/voice/agent_session.cjs +65 -37
- package/dist/voice/agent_session.cjs.map +1 -1
- package/dist/voice/agent_session.d.cts +25 -4
- package/dist/voice/agent_session.d.ts +25 -4
- package/dist/voice/agent_session.d.ts.map +1 -1
- package/dist/voice/agent_session.js +65 -37
- package/dist/voice/agent_session.js.map +1 -1
- package/dist/voice/audio_recognition.cjs +2 -124
- package/dist/voice/audio_recognition.cjs.map +1 -1
- package/dist/voice/audio_recognition.d.cts +1 -32
- package/dist/voice/audio_recognition.d.ts +1 -32
- package/dist/voice/audio_recognition.d.ts.map +1 -1
- package/dist/voice/audio_recognition.js +2 -127
- package/dist/voice/audio_recognition.js.map +1 -1
- package/dist/voice/index.cjs +14 -1
- 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 +3 -1
- package/dist/voice/index.js.map +1 -1
- package/dist/voice/room_io/room_io.cjs +1 -0
- package/dist/voice/room_io/room_io.cjs.map +1 -1
- package/dist/voice/room_io/room_io.d.ts.map +1 -1
- package/dist/voice/room_io/room_io.js +1 -0
- package/dist/voice/room_io/room_io.js.map +1 -1
- package/dist/voice/speech_handle.cjs +12 -3
- package/dist/voice/speech_handle.cjs.map +1 -1
- package/dist/voice/speech_handle.d.cts +12 -2
- package/dist/voice/speech_handle.d.ts +12 -2
- package/dist/voice/speech_handle.d.ts.map +1 -1
- package/dist/voice/speech_handle.js +10 -2
- package/dist/voice/speech_handle.js.map +1 -1
- package/dist/voice/testing/index.cjs +54 -0
- package/dist/voice/testing/index.cjs.map +1 -0
- package/dist/voice/testing/index.d.cts +20 -0
- package/dist/voice/testing/index.d.ts +20 -0
- package/dist/voice/testing/index.d.ts.map +1 -0
- package/dist/voice/testing/index.js +33 -0
- package/dist/voice/testing/index.js.map +1 -0
- package/dist/voice/testing/run_result.cjs +766 -0
- package/dist/voice/testing/run_result.cjs.map +1 -0
- package/dist/voice/testing/run_result.d.cts +374 -0
- package/dist/voice/testing/run_result.d.ts +374 -0
- package/dist/voice/testing/run_result.d.ts.map +1 -0
- package/dist/voice/testing/run_result.js +739 -0
- package/dist/voice/testing/run_result.js.map +1 -0
- package/dist/{inference/interruption/index.cjs → voice/testing/types.cjs} +24 -12
- package/dist/voice/testing/types.cjs.map +1 -0
- package/dist/voice/testing/types.d.cts +83 -0
- package/dist/voice/testing/types.d.ts +83 -0
- package/dist/voice/testing/types.d.ts.map +1 -0
- package/dist/voice/testing/types.js +19 -0
- package/dist/voice/testing/types.js.map +1 -0
- package/package.json +3 -4
- package/src/index.ts +0 -2
- package/src/inference/utils.ts +0 -15
- package/src/stream/stream_channel.ts +2 -6
- package/src/telemetry/trace_types.ts +0 -7
- package/src/voice/agent_activity.ts +24 -83
- package/src/voice/agent_session.ts +74 -49
- package/src/voice/audio_recognition.ts +1 -161
- package/src/voice/index.ts +1 -0
- package/src/voice/room_io/room_io.ts +1 -0
- package/src/voice/speech_handle.ts +24 -4
- package/src/voice/testing/index.ts +50 -0
- package/src/voice/testing/run_result.ts +937 -0
- package/src/voice/testing/types.ts +118 -0
- package/dist/inference/interruption/AdaptiveInterruptionDetector.cjs +0 -152
- package/dist/inference/interruption/AdaptiveInterruptionDetector.cjs.map +0 -1
- package/dist/inference/interruption/AdaptiveInterruptionDetector.d.cts +0 -50
- package/dist/inference/interruption/AdaptiveInterruptionDetector.d.ts +0 -50
- package/dist/inference/interruption/AdaptiveInterruptionDetector.d.ts.map +0 -1
- package/dist/inference/interruption/AdaptiveInterruptionDetector.js +0 -125
- package/dist/inference/interruption/AdaptiveInterruptionDetector.js.map +0 -1
- package/dist/inference/interruption/InterruptionStream.cjs +0 -310
- package/dist/inference/interruption/InterruptionStream.cjs.map +0 -1
- package/dist/inference/interruption/InterruptionStream.d.cts +0 -57
- package/dist/inference/interruption/InterruptionStream.d.ts +0 -57
- package/dist/inference/interruption/InterruptionStream.d.ts.map +0 -1
- package/dist/inference/interruption/InterruptionStream.js +0 -288
- package/dist/inference/interruption/InterruptionStream.js.map +0 -1
- package/dist/inference/interruption/defaults.cjs +0 -76
- package/dist/inference/interruption/defaults.cjs.map +0 -1
- package/dist/inference/interruption/defaults.d.cts +0 -14
- package/dist/inference/interruption/defaults.d.ts +0 -14
- package/dist/inference/interruption/defaults.d.ts.map +0 -1
- package/dist/inference/interruption/defaults.js +0 -42
- package/dist/inference/interruption/defaults.js.map +0 -1
- package/dist/inference/interruption/errors.cjs +0 -2
- package/dist/inference/interruption/errors.cjs.map +0 -1
- package/dist/inference/interruption/errors.d.cts +0 -2
- package/dist/inference/interruption/errors.d.ts +0 -2
- package/dist/inference/interruption/errors.d.ts.map +0 -1
- package/dist/inference/interruption/errors.js +0 -1
- package/dist/inference/interruption/errors.js.map +0 -1
- package/dist/inference/interruption/http_transport.cjs +0 -57
- package/dist/inference/interruption/http_transport.cjs.map +0 -1
- package/dist/inference/interruption/http_transport.d.cts +0 -23
- package/dist/inference/interruption/http_transport.d.ts +0 -23
- package/dist/inference/interruption/http_transport.d.ts.map +0 -1
- package/dist/inference/interruption/http_transport.js +0 -33
- package/dist/inference/interruption/http_transport.js.map +0 -1
- package/dist/inference/interruption/index.cjs.map +0 -1
- package/dist/inference/interruption/index.d.cts +0 -5
- package/dist/inference/interruption/index.d.ts +0 -5
- package/dist/inference/interruption/index.d.ts.map +0 -1
- package/dist/inference/interruption/index.js +0 -7
- package/dist/inference/interruption/index.js.map +0 -1
- package/dist/inference/interruption/interruption.cjs +0 -85
- package/dist/inference/interruption/interruption.cjs.map +0 -1
- package/dist/inference/interruption/interruption.d.cts +0 -48
- package/dist/inference/interruption/interruption.d.ts +0 -48
- package/dist/inference/interruption/interruption.d.ts.map +0 -1
- package/dist/inference/interruption/interruption.js +0 -59
- package/dist/inference/interruption/interruption.js.map +0 -1
- package/dist/inference/utils.test.cjs +0 -20
- package/dist/inference/utils.test.cjs.map +0 -1
- package/dist/inference/utils.test.js +0 -19
- package/dist/inference/utils.test.js.map +0 -1
- package/dist/utils/ws_transport.cjs +0 -51
- package/dist/utils/ws_transport.cjs.map +0 -1
- package/dist/utils/ws_transport.d.cts +0 -9
- package/dist/utils/ws_transport.d.ts +0 -9
- package/dist/utils/ws_transport.d.ts.map +0 -1
- package/dist/utils/ws_transport.js +0 -17
- package/dist/utils/ws_transport.js.map +0 -1
- package/dist/utils/ws_transport.test.cjs +0 -212
- package/dist/utils/ws_transport.test.cjs.map +0 -1
- package/dist/utils/ws_transport.test.js +0 -211
- package/dist/utils/ws_transport.test.js.map +0 -1
- package/src/inference/interruption/AdaptiveInterruptionDetector.ts +0 -166
- package/src/inference/interruption/InterruptionStream.ts +0 -397
- package/src/inference/interruption/defaults.ts +0 -33
- package/src/inference/interruption/errors.ts +0 -0
- package/src/inference/interruption/http_transport.ts +0 -61
- package/src/inference/interruption/index.ts +0 -4
- package/src/inference/interruption/interruption.ts +0 -88
- package/src/inference/utils.test.ts +0 -31
- package/src/utils/ws_transport.test.ts +0 -282
- package/src/utils/ws_transport.ts +0 -22
package/dist/index.cjs
CHANGED
|
@@ -67,7 +67,6 @@ __reExport(index_exports, require("./utils.cjs"), module.exports);
|
|
|
67
67
|
__reExport(index_exports, require("./vad.cjs"), module.exports);
|
|
68
68
|
__reExport(index_exports, require("./version.cjs"), module.exports);
|
|
69
69
|
__reExport(index_exports, require("./worker.cjs"), module.exports);
|
|
70
|
-
__reExport(index_exports, require("./inference/interruption/index.cjs"), module.exports);
|
|
71
70
|
// Annotate the CommonJS export names for ESM import in node:
|
|
72
71
|
0 && (module.exports = {
|
|
73
72
|
cli,
|
|
@@ -94,7 +93,6 @@ __reExport(index_exports, require("./inference/interruption/index.cjs"), module.
|
|
|
94
93
|
...require("./utils.cjs"),
|
|
95
94
|
...require("./vad.cjs"),
|
|
96
95
|
...require("./version.cjs"),
|
|
97
|
-
...require("./worker.cjs")
|
|
98
|
-
...require("./inference/interruption/index.cjs")
|
|
96
|
+
...require("./worker.cjs")
|
|
99
97
|
});
|
|
100
98
|
//# sourceMappingURL=index.cjs.map
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2024 LiveKit, Inc.\n//\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * LiveKit Agents is a framework for building realtime programmable participants that run on\n * servers.\n *\n * @see {@link https://docs.livekit.io/agents/overview | LiveKit Agents documentation}\n * @packageDocumentation\n */\nimport * as cli from './cli.js';\nimport * as inference from './inference/index.js';\nimport * as ipc from './ipc/index.js';\nimport * as llm from './llm/index.js';\nimport * as metrics from './metrics/index.js';\nimport * as stream from './stream/index.js';\nimport * as stt from './stt/index.js';\nimport * as telemetry from './telemetry/index.js';\nimport * as tokenize from './tokenize/index.js';\nimport * as tts from './tts/index.js';\nimport * as voice from './voice/index.js';\n\nexport * from './_exceptions.js';\nexport * from './audio.js';\nexport * from './connection_pool.js';\nexport * from './generator.js';\nexport * from './inference_runner.js';\nexport * from './job.js';\nexport * from './log.js';\nexport * from './plugin.js';\nexport * from './transcription.js';\nexport * from './types.js';\nexport * from './utils.js';\nexport * from './vad.js';\nexport * from './version.js';\nexport * from './worker.js';\n\nexport
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2024 LiveKit, Inc.\n//\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * LiveKit Agents is a framework for building realtime programmable participants that run on\n * servers.\n *\n * @see {@link https://docs.livekit.io/agents/overview | LiveKit Agents documentation}\n * @packageDocumentation\n */\nimport * as cli from './cli.js';\nimport * as inference from './inference/index.js';\nimport * as ipc from './ipc/index.js';\nimport * as llm from './llm/index.js';\nimport * as metrics from './metrics/index.js';\nimport * as stream from './stream/index.js';\nimport * as stt from './stt/index.js';\nimport * as telemetry from './telemetry/index.js';\nimport * as tokenize from './tokenize/index.js';\nimport * as tts from './tts/index.js';\nimport * as voice from './voice/index.js';\n\nexport * from './_exceptions.js';\nexport * from './audio.js';\nexport * from './connection_pool.js';\nexport * from './generator.js';\nexport * from './inference_runner.js';\nexport * from './job.js';\nexport * from './log.js';\nexport * from './plugin.js';\nexport * from './transcription.js';\nexport * from './types.js';\nexport * from './utils.js';\nexport * from './vad.js';\nexport * from './version.js';\nexport * from './worker.js';\n\nexport { cli, inference, ipc, llm, metrics, stream, stt, telemetry, tokenize, tts, voice };\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAWA,UAAqB;AACrB,gBAA2B;AAC3B,UAAqB;AACrB,UAAqB;AACrB,cAAyB;AACzB,aAAwB;AACxB,UAAqB;AACrB,gBAA2B;AAC3B,eAA0B;AAC1B,UAAqB;AACrB,YAAuB;AAEvB,0BAAc,6BAvBd;AAwBA,0BAAc,uBAxBd;AAyBA,0BAAc,iCAzBd;AA0BA,0BAAc,2BA1Bd;AA2BA,0BAAc,kCA3Bd;AA4BA,0BAAc,qBA5Bd;AA6BA,0BAAc,qBA7Bd;AA8BA,0BAAc,wBA9Bd;AA+BA,0BAAc,+BA/Bd;AAgCA,0BAAc,uBAhCd;AAiCA,0BAAc,uBAjCd;AAkCA,0BAAc,qBAlCd;AAmCA,0BAAc,yBAnCd;AAoCA,0BAAc,wBApCd;","names":[]}
|
package/dist/index.d.cts
CHANGED
|
@@ -30,6 +30,5 @@ export * from './utils.js';
|
|
|
30
30
|
export * from './vad.js';
|
|
31
31
|
export * from './version.js';
|
|
32
32
|
export * from './worker.js';
|
|
33
|
-
export * from './inference/interruption/index.js';
|
|
34
33
|
export { cli, inference, ipc, llm, metrics, stream, stt, telemetry, tokenize, tts, voice };
|
|
35
34
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts
CHANGED
|
@@ -30,6 +30,5 @@ export * from './utils.js';
|
|
|
30
30
|
export * from './vad.js';
|
|
31
31
|
export * from './version.js';
|
|
32
32
|
export * from './worker.js';
|
|
33
|
-
export * from './inference/interruption/index.js';
|
|
34
33
|
export { cli, inference, ipc, llm, metrics, stream, stt, telemetry, tokenize, tts, voice };
|
|
35
34
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA;;;;;;GAMG;AACH,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAChC,OAAO,KAAK,SAAS,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAC;AACtC,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAC;AACtC,OAAO,KAAK,OAAO,MAAM,oBAAoB,CAAC;AAC9C,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAC5C,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAC;AACtC,OAAO,KAAK,SAAS,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,QAAQ,MAAM,qBAAqB,CAAC;AAChD,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAC;AACtC,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAC;AAE1C,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAE5B,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA;;;;;;GAMG;AACH,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAChC,OAAO,KAAK,SAAS,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAC;AACtC,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAC;AACtC,OAAO,KAAK,OAAO,MAAM,oBAAoB,CAAC;AAC9C,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAC5C,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAC;AACtC,OAAO,KAAK,SAAS,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,QAAQ,MAAM,qBAAqB,CAAC;AAChD,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAC;AACtC,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAC;AAE1C,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAE5B,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC"}
|
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2024 LiveKit, Inc.\n//\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * LiveKit Agents is a framework for building realtime programmable participants that run on\n * servers.\n *\n * @see {@link https://docs.livekit.io/agents/overview | LiveKit Agents documentation}\n * @packageDocumentation\n */\nimport * as cli from './cli.js';\nimport * as inference from './inference/index.js';\nimport * as ipc from './ipc/index.js';\nimport * as llm from './llm/index.js';\nimport * as metrics from './metrics/index.js';\nimport * as stream from './stream/index.js';\nimport * as stt from './stt/index.js';\nimport * as telemetry from './telemetry/index.js';\nimport * as tokenize from './tokenize/index.js';\nimport * as tts from './tts/index.js';\nimport * as voice from './voice/index.js';\n\nexport * from './_exceptions.js';\nexport * from './audio.js';\nexport * from './connection_pool.js';\nexport * from './generator.js';\nexport * from './inference_runner.js';\nexport * from './job.js';\nexport * from './log.js';\nexport * from './plugin.js';\nexport * from './transcription.js';\nexport * from './types.js';\nexport * from './utils.js';\nexport * from './vad.js';\nexport * from './version.js';\nexport * from './worker.js';\n\nexport
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2024 LiveKit, Inc.\n//\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * LiveKit Agents is a framework for building realtime programmable participants that run on\n * servers.\n *\n * @see {@link https://docs.livekit.io/agents/overview | LiveKit Agents documentation}\n * @packageDocumentation\n */\nimport * as cli from './cli.js';\nimport * as inference from './inference/index.js';\nimport * as ipc from './ipc/index.js';\nimport * as llm from './llm/index.js';\nimport * as metrics from './metrics/index.js';\nimport * as stream from './stream/index.js';\nimport * as stt from './stt/index.js';\nimport * as telemetry from './telemetry/index.js';\nimport * as tokenize from './tokenize/index.js';\nimport * as tts from './tts/index.js';\nimport * as voice from './voice/index.js';\n\nexport * from './_exceptions.js';\nexport * from './audio.js';\nexport * from './connection_pool.js';\nexport * from './generator.js';\nexport * from './inference_runner.js';\nexport * from './job.js';\nexport * from './log.js';\nexport * from './plugin.js';\nexport * from './transcription.js';\nexport * from './types.js';\nexport * from './utils.js';\nexport * from './vad.js';\nexport * from './version.js';\nexport * from './worker.js';\n\nexport { cli, inference, ipc, llm, metrics, stream, stt, telemetry, tokenize, tts, voice };\n"],"mappings":"AAWA,YAAY,SAAS;AACrB,YAAY,eAAe;AAC3B,YAAY,SAAS;AACrB,YAAY,SAAS;AACrB,YAAY,aAAa;AACzB,YAAY,YAAY;AACxB,YAAY,SAAS;AACrB,YAAY,eAAe;AAC3B,YAAY,cAAc;AAC1B,YAAY,SAAS;AACrB,YAAY,WAAW;AAEvB,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;","names":[]}
|
package/dist/inference/utils.cjs
CHANGED
|
@@ -19,8 +19,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
19
19
|
var utils_exports = {};
|
|
20
20
|
__export(utils_exports, {
|
|
21
21
|
connectWs: () => connectWs,
|
|
22
|
-
createAccessToken: () => createAccessToken
|
|
23
|
-
slidingWindowMinMax: () => slidingWindowMinMax
|
|
22
|
+
createAccessToken: () => createAccessToken
|
|
24
23
|
});
|
|
25
24
|
module.exports = __toCommonJS(utils_exports);
|
|
26
25
|
var import_livekit_server_sdk = require("livekit-server-sdk");
|
|
@@ -69,21 +68,9 @@ async function connectWs(url, headers, timeoutMs) {
|
|
|
69
68
|
socket.once("close", onClose);
|
|
70
69
|
});
|
|
71
70
|
}
|
|
72
|
-
function slidingWindowMinMax(probabilities, minWindow) {
|
|
73
|
-
if (probabilities.length < minWindow) {
|
|
74
|
-
return -Infinity;
|
|
75
|
-
}
|
|
76
|
-
let maxOfMins = -Infinity;
|
|
77
|
-
for (let i = 0; i <= probabilities.length - minWindow; i++) {
|
|
78
|
-
const windowMin = Math.min(...probabilities.slice(i, i + minWindow));
|
|
79
|
-
maxOfMins = Math.max(maxOfMins, windowMin);
|
|
80
|
-
}
|
|
81
|
-
return maxOfMins;
|
|
82
|
-
}
|
|
83
71
|
// Annotate the CommonJS export names for ESM import in node:
|
|
84
72
|
0 && (module.exports = {
|
|
85
73
|
connectWs,
|
|
86
|
-
createAccessToken
|
|
87
|
-
slidingWindowMinMax
|
|
74
|
+
createAccessToken
|
|
88
75
|
});
|
|
89
76
|
//# sourceMappingURL=utils.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/inference/utils.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2025 LiveKit, Inc.\n//\n// SPDX-License-Identifier: Apache-2.0\nimport { AccessToken } from 'livekit-server-sdk';\nimport { WebSocket } from 'ws';\nimport { APIConnectionError, APIStatusError } from '../index.js';\n\nexport type AnyString = string & NonNullable<unknown>;\n\nexport async function createAccessToken(\n apiKey: string,\n apiSecret: string,\n ttl: number = 600,\n): Promise<string> {\n const token = new AccessToken(apiKey, apiSecret, { identity: 'agent', ttl });\n token.addInferenceGrant({ perform: true });\n\n return await token.toJwt();\n}\n\nexport async function connectWs(\n url: string,\n headers: Record<string, string>,\n timeoutMs: number,\n): Promise<WebSocket> {\n return new Promise<WebSocket>((resolve, reject) => {\n const socket = new WebSocket(url, { headers: headers });\n\n const timeout = setTimeout(() => {\n reject(new APIConnectionError({ message: 'Timeout connecting to LiveKit WebSocket' }));\n }, timeoutMs);\n\n const onOpen = () => {\n clearTimeout(timeout);\n resolve(socket);\n };\n\n const onError = (err: unknown) => {\n clearTimeout(timeout);\n if (err && typeof err === 'object' && 'code' in err && (err as any).code === 429) {\n reject(\n new APIStatusError({\n message: 'LiveKit gateway quota exceeded',\n options: { statusCode: 429 },\n }),\n );\n } else {\n reject(new APIConnectionError({ message: 'Error connecting to LiveKit WebSocket' }));\n }\n };\n\n const onClose = (code: number) => {\n clearTimeout(timeout);\n if (code !== 1000) {\n reject(\n new APIConnectionError({\n message: 'Connection closed unexpectedly',\n }),\n );\n }\n };\n socket.once('open', onOpen);\n socket.once('error', onError);\n socket.once('close', onClose);\n });\n}\n
|
|
1
|
+
{"version":3,"sources":["../../src/inference/utils.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2025 LiveKit, Inc.\n//\n// SPDX-License-Identifier: Apache-2.0\nimport { AccessToken } from 'livekit-server-sdk';\nimport { WebSocket } from 'ws';\nimport { APIConnectionError, APIStatusError } from '../index.js';\n\nexport type AnyString = string & NonNullable<unknown>;\n\nexport async function createAccessToken(\n apiKey: string,\n apiSecret: string,\n ttl: number = 600,\n): Promise<string> {\n const token = new AccessToken(apiKey, apiSecret, { identity: 'agent', ttl });\n token.addInferenceGrant({ perform: true });\n\n return await token.toJwt();\n}\n\nexport async function connectWs(\n url: string,\n headers: Record<string, string>,\n timeoutMs: number,\n): Promise<WebSocket> {\n return new Promise<WebSocket>((resolve, reject) => {\n const socket = new WebSocket(url, { headers: headers });\n\n const timeout = setTimeout(() => {\n reject(new APIConnectionError({ message: 'Timeout connecting to LiveKit WebSocket' }));\n }, timeoutMs);\n\n const onOpen = () => {\n clearTimeout(timeout);\n resolve(socket);\n };\n\n const onError = (err: unknown) => {\n clearTimeout(timeout);\n if (err && typeof err === 'object' && 'code' in err && (err as any).code === 429) {\n reject(\n new APIStatusError({\n message: 'LiveKit gateway quota exceeded',\n options: { statusCode: 429 },\n }),\n );\n } else {\n reject(new APIConnectionError({ message: 'Error connecting to LiveKit WebSocket' }));\n }\n };\n\n const onClose = (code: number) => {\n clearTimeout(timeout);\n if (code !== 1000) {\n reject(\n new APIConnectionError({\n message: 'Connection closed unexpectedly',\n }),\n );\n }\n };\n socket.once('open', onOpen);\n socket.once('error', onError);\n socket.once('close', onClose);\n });\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,gCAA4B;AAC5B,gBAA0B;AAC1B,eAAmD;AAInD,eAAsB,kBACpB,QACA,WACA,MAAc,KACG;AACjB,QAAM,QAAQ,IAAI,sCAAY,QAAQ,WAAW,EAAE,UAAU,SAAS,IAAI,CAAC;AAC3E,QAAM,kBAAkB,EAAE,SAAS,KAAK,CAAC;AAEzC,SAAO,MAAM,MAAM,MAAM;AAC3B;AAEA,eAAsB,UACpB,KACA,SACA,WACoB;AACpB,SAAO,IAAI,QAAmB,CAAC,SAAS,WAAW;AACjD,UAAM,SAAS,IAAI,oBAAU,KAAK,EAAE,QAAiB,CAAC;AAEtD,UAAM,UAAU,WAAW,MAAM;AAC/B,aAAO,IAAI,4BAAmB,EAAE,SAAS,0CAA0C,CAAC,CAAC;AAAA,IACvF,GAAG,SAAS;AAEZ,UAAM,SAAS,MAAM;AACnB,mBAAa,OAAO;AACpB,cAAQ,MAAM;AAAA,IAChB;AAEA,UAAM,UAAU,CAAC,QAAiB;AAChC,mBAAa,OAAO;AACpB,UAAI,OAAO,OAAO,QAAQ,YAAY,UAAU,OAAQ,IAAY,SAAS,KAAK;AAChF;AAAA,UACE,IAAI,wBAAe;AAAA,YACjB,SAAS;AAAA,YACT,SAAS,EAAE,YAAY,IAAI;AAAA,UAC7B,CAAC;AAAA,QACH;AAAA,MACF,OAAO;AACL,eAAO,IAAI,4BAAmB,EAAE,SAAS,wCAAwC,CAAC,CAAC;AAAA,MACrF;AAAA,IACF;AAEA,UAAM,UAAU,CAAC,SAAiB;AAChC,mBAAa,OAAO;AACpB,UAAI,SAAS,KAAM;AACjB;AAAA,UACE,IAAI,4BAAmB;AAAA,YACrB,SAAS;AAAA,UACX,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF;AACA,WAAO,KAAK,QAAQ,MAAM;AAC1B,WAAO,KAAK,SAAS,OAAO;AAC5B,WAAO,KAAK,SAAS,OAAO;AAAA,EAC9B,CAAC;AACH;","names":[]}
|
|
@@ -2,5 +2,4 @@ import { WebSocket } from 'ws';
|
|
|
2
2
|
export type AnyString = string & NonNullable<unknown>;
|
|
3
3
|
export declare function createAccessToken(apiKey: string, apiSecret: string, ttl?: number): Promise<string>;
|
|
4
4
|
export declare function connectWs(url: string, headers: Record<string, string>, timeoutMs: number): Promise<WebSocket>;
|
|
5
|
-
export declare function slidingWindowMinMax(probabilities: Float32Array, minWindow: number): number;
|
|
6
5
|
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -2,5 +2,4 @@ import { WebSocket } from 'ws';
|
|
|
2
2
|
export type AnyString = string & NonNullable<unknown>;
|
|
3
3
|
export declare function createAccessToken(apiKey: string, apiSecret: string, ttl?: number): Promise<string>;
|
|
4
4
|
export declare function connectWs(url: string, headers: Record<string, string>, timeoutMs: number): Promise<WebSocket>;
|
|
5
|
-
export declare function slidingWindowMinMax(probabilities: Float32Array, minWindow: number): number;
|
|
6
5
|
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/inference/utils.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAG/B,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;AAEtD,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,GAAG,GAAE,MAAY,GAChB,OAAO,CAAC,MAAM,CAAC,CAKjB;AAED,wBAAsB,SAAS,CAC7B,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,SAAS,CAAC,CAyCpB
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/inference/utils.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAG/B,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;AAEtD,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,GAAG,GAAE,MAAY,GAChB,OAAO,CAAC,MAAM,CAAC,CAKjB;AAED,wBAAsB,SAAS,CAC7B,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,SAAS,CAAC,CAyCpB"}
|
package/dist/inference/utils.js
CHANGED
|
@@ -44,20 +44,8 @@ async function connectWs(url, headers, timeoutMs) {
|
|
|
44
44
|
socket.once("close", onClose);
|
|
45
45
|
});
|
|
46
46
|
}
|
|
47
|
-
function slidingWindowMinMax(probabilities, minWindow) {
|
|
48
|
-
if (probabilities.length < minWindow) {
|
|
49
|
-
return -Infinity;
|
|
50
|
-
}
|
|
51
|
-
let maxOfMins = -Infinity;
|
|
52
|
-
for (let i = 0; i <= probabilities.length - minWindow; i++) {
|
|
53
|
-
const windowMin = Math.min(...probabilities.slice(i, i + minWindow));
|
|
54
|
-
maxOfMins = Math.max(maxOfMins, windowMin);
|
|
55
|
-
}
|
|
56
|
-
return maxOfMins;
|
|
57
|
-
}
|
|
58
47
|
export {
|
|
59
48
|
connectWs,
|
|
60
|
-
createAccessToken
|
|
61
|
-
slidingWindowMinMax
|
|
49
|
+
createAccessToken
|
|
62
50
|
};
|
|
63
51
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/inference/utils.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2025 LiveKit, Inc.\n//\n// SPDX-License-Identifier: Apache-2.0\nimport { AccessToken } from 'livekit-server-sdk';\nimport { WebSocket } from 'ws';\nimport { APIConnectionError, APIStatusError } from '../index.js';\n\nexport type AnyString = string & NonNullable<unknown>;\n\nexport async function createAccessToken(\n apiKey: string,\n apiSecret: string,\n ttl: number = 600,\n): Promise<string> {\n const token = new AccessToken(apiKey, apiSecret, { identity: 'agent', ttl });\n token.addInferenceGrant({ perform: true });\n\n return await token.toJwt();\n}\n\nexport async function connectWs(\n url: string,\n headers: Record<string, string>,\n timeoutMs: number,\n): Promise<WebSocket> {\n return new Promise<WebSocket>((resolve, reject) => {\n const socket = new WebSocket(url, { headers: headers });\n\n const timeout = setTimeout(() => {\n reject(new APIConnectionError({ message: 'Timeout connecting to LiveKit WebSocket' }));\n }, timeoutMs);\n\n const onOpen = () => {\n clearTimeout(timeout);\n resolve(socket);\n };\n\n const onError = (err: unknown) => {\n clearTimeout(timeout);\n if (err && typeof err === 'object' && 'code' in err && (err as any).code === 429) {\n reject(\n new APIStatusError({\n message: 'LiveKit gateway quota exceeded',\n options: { statusCode: 429 },\n }),\n );\n } else {\n reject(new APIConnectionError({ message: 'Error connecting to LiveKit WebSocket' }));\n }\n };\n\n const onClose = (code: number) => {\n clearTimeout(timeout);\n if (code !== 1000) {\n reject(\n new APIConnectionError({\n message: 'Connection closed unexpectedly',\n }),\n );\n }\n };\n socket.once('open', onOpen);\n socket.once('error', onError);\n socket.once('close', onClose);\n });\n}\n
|
|
1
|
+
{"version":3,"sources":["../../src/inference/utils.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2025 LiveKit, Inc.\n//\n// SPDX-License-Identifier: Apache-2.0\nimport { AccessToken } from 'livekit-server-sdk';\nimport { WebSocket } from 'ws';\nimport { APIConnectionError, APIStatusError } from '../index.js';\n\nexport type AnyString = string & NonNullable<unknown>;\n\nexport async function createAccessToken(\n apiKey: string,\n apiSecret: string,\n ttl: number = 600,\n): Promise<string> {\n const token = new AccessToken(apiKey, apiSecret, { identity: 'agent', ttl });\n token.addInferenceGrant({ perform: true });\n\n return await token.toJwt();\n}\n\nexport async function connectWs(\n url: string,\n headers: Record<string, string>,\n timeoutMs: number,\n): Promise<WebSocket> {\n return new Promise<WebSocket>((resolve, reject) => {\n const socket = new WebSocket(url, { headers: headers });\n\n const timeout = setTimeout(() => {\n reject(new APIConnectionError({ message: 'Timeout connecting to LiveKit WebSocket' }));\n }, timeoutMs);\n\n const onOpen = () => {\n clearTimeout(timeout);\n resolve(socket);\n };\n\n const onError = (err: unknown) => {\n clearTimeout(timeout);\n if (err && typeof err === 'object' && 'code' in err && (err as any).code === 429) {\n reject(\n new APIStatusError({\n message: 'LiveKit gateway quota exceeded',\n options: { statusCode: 429 },\n }),\n );\n } else {\n reject(new APIConnectionError({ message: 'Error connecting to LiveKit WebSocket' }));\n }\n };\n\n const onClose = (code: number) => {\n clearTimeout(timeout);\n if (code !== 1000) {\n reject(\n new APIConnectionError({\n message: 'Connection closed unexpectedly',\n }),\n );\n }\n };\n socket.once('open', onOpen);\n socket.once('error', onError);\n socket.once('close', onClose);\n });\n}\n"],"mappings":"AAGA,SAAS,mBAAmB;AAC5B,SAAS,iBAAiB;AAC1B,SAAS,oBAAoB,sBAAsB;AAInD,eAAsB,kBACpB,QACA,WACA,MAAc,KACG;AACjB,QAAM,QAAQ,IAAI,YAAY,QAAQ,WAAW,EAAE,UAAU,SAAS,IAAI,CAAC;AAC3E,QAAM,kBAAkB,EAAE,SAAS,KAAK,CAAC;AAEzC,SAAO,MAAM,MAAM,MAAM;AAC3B;AAEA,eAAsB,UACpB,KACA,SACA,WACoB;AACpB,SAAO,IAAI,QAAmB,CAAC,SAAS,WAAW;AACjD,UAAM,SAAS,IAAI,UAAU,KAAK,EAAE,QAAiB,CAAC;AAEtD,UAAM,UAAU,WAAW,MAAM;AAC/B,aAAO,IAAI,mBAAmB,EAAE,SAAS,0CAA0C,CAAC,CAAC;AAAA,IACvF,GAAG,SAAS;AAEZ,UAAM,SAAS,MAAM;AACnB,mBAAa,OAAO;AACpB,cAAQ,MAAM;AAAA,IAChB;AAEA,UAAM,UAAU,CAAC,QAAiB;AAChC,mBAAa,OAAO;AACpB,UAAI,OAAO,OAAO,QAAQ,YAAY,UAAU,OAAQ,IAAY,SAAS,KAAK;AAChF;AAAA,UACE,IAAI,eAAe;AAAA,YACjB,SAAS;AAAA,YACT,SAAS,EAAE,YAAY,IAAI;AAAA,UAC7B,CAAC;AAAA,QACH;AAAA,MACF,OAAO;AACL,eAAO,IAAI,mBAAmB,EAAE,SAAS,wCAAwC,CAAC,CAAC;AAAA,MACrF;AAAA,IACF;AAEA,UAAM,UAAU,CAAC,SAAiB;AAChC,mBAAa,OAAO;AACpB,UAAI,SAAS,KAAM;AACjB;AAAA,UACE,IAAI,mBAAmB;AAAA,YACrB,SAAS;AAAA,UACX,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF;AACA,WAAO,KAAK,QAAQ,MAAM;AAC1B,WAAO,KAAK,SAAS,OAAO;AAC5B,WAAO,KAAK,SAAS,OAAO;AAAA,EAC9B,CAAC;AACH;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/stream/stream_channel.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2025 LiveKit, Inc.\n//\n// SPDX-License-Identifier: Apache-2.0\nimport type { ReadableStream } from 'node:stream/web';\nimport { IdentityTransform } from './identity_transform.js';\n\nexport interface StreamChannel<T
|
|
1
|
+
{"version":3,"sources":["../../src/stream/stream_channel.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2025 LiveKit, Inc.\n//\n// SPDX-License-Identifier: Apache-2.0\nimport type { ReadableStream } from 'node:stream/web';\nimport { IdentityTransform } from './identity_transform.js';\n\nexport interface StreamChannel<T> {\n write(chunk: T): Promise<void>;\n close(): Promise<void>;\n stream(): ReadableStream<T>;\n readonly closed: boolean;\n}\n\nexport function createStreamChannel<T>(): StreamChannel<T> {\n const transform = new IdentityTransform<T>();\n const writer = transform.writable.getWriter();\n let isClosed = false;\n\n return {\n write: (chunk: T) => writer.write(chunk),\n stream: () => transform.readable,\n close: async () => {\n try {\n const result = await writer.close();\n isClosed = true;\n return result;\n } catch (e) {\n if (e instanceof Error && e.name === 'TypeError') {\n // Ignore error if the stream is already closed\n isClosed = true;\n return;\n }\n throw e;\n }\n },\n get closed() {\n return isClosed;\n },\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA,gCAAkC;AAS3B,SAAS,sBAA2C;AACzD,QAAM,YAAY,IAAI,4CAAqB;AAC3C,QAAM,SAAS,UAAU,SAAS,UAAU;AAC5C,MAAI,WAAW;AAEf,SAAO;AAAA,IACL,OAAO,CAAC,UAAa,OAAO,MAAM,KAAK;AAAA,IACvC,QAAQ,MAAM,UAAU;AAAA,IACxB,OAAO,YAAY;AACjB,UAAI;AACF,cAAM,SAAS,MAAM,OAAO,MAAM;AAClC,mBAAW;AACX,eAAO;AAAA,MACT,SAAS,GAAG;AACV,YAAI,aAAa,SAAS,EAAE,SAAS,aAAa;AAEhD,qBAAW;AACX;AAAA,QACF;AACA,cAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,IAAI,SAAS;AACX,aAAO;AAAA,IACT;AAAA,EACF;AACF;","names":[]}
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
/// <reference types="node" resolution-mode="require"/>
|
|
2
2
|
import type { ReadableStream } from 'node:stream/web';
|
|
3
|
-
export interface StreamChannel<T
|
|
3
|
+
export interface StreamChannel<T> {
|
|
4
4
|
write(chunk: T): Promise<void>;
|
|
5
5
|
close(): Promise<void>;
|
|
6
6
|
stream(): ReadableStream<T>;
|
|
7
|
-
abort(error: E): Promise<void>;
|
|
8
7
|
readonly closed: boolean;
|
|
9
8
|
}
|
|
10
|
-
export declare function createStreamChannel<T
|
|
9
|
+
export declare function createStreamChannel<T>(): StreamChannel<T>;
|
|
11
10
|
//# sourceMappingURL=stream_channel.d.ts.map
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
/// <reference types="node" resolution-mode="require"/>
|
|
2
2
|
import type { ReadableStream } from 'node:stream/web';
|
|
3
|
-
export interface StreamChannel<T
|
|
3
|
+
export interface StreamChannel<T> {
|
|
4
4
|
write(chunk: T): Promise<void>;
|
|
5
5
|
close(): Promise<void>;
|
|
6
6
|
stream(): ReadableStream<T>;
|
|
7
|
-
abort(error: E): Promise<void>;
|
|
8
7
|
readonly closed: boolean;
|
|
9
8
|
}
|
|
10
|
-
export declare function createStreamChannel<T
|
|
9
|
+
export declare function createStreamChannel<T>(): StreamChannel<T>;
|
|
11
10
|
//# sourceMappingURL=stream_channel.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream_channel.d.ts","sourceRoot":"","sources":["../../src/stream/stream_channel.ts"],"names":[],"mappings":";AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAGtD,MAAM,WAAW,aAAa,CAAC,CAAC
|
|
1
|
+
{"version":3,"file":"stream_channel.d.ts","sourceRoot":"","sources":["../../src/stream/stream_channel.ts"],"names":[],"mappings":";AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAGtD,MAAM,WAAW,aAAa,CAAC,CAAC;IAC9B,KAAK,CAAC,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,MAAM,IAAI,cAAc,CAAC,CAAC,CAAC,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;CAC1B;AAED,wBAAgB,mBAAmB,CAAC,CAAC,KAAK,aAAa,CAAC,CAAC,CAAC,CA0BzD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/stream/stream_channel.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2025 LiveKit, Inc.\n//\n// SPDX-License-Identifier: Apache-2.0\nimport type { ReadableStream } from 'node:stream/web';\nimport { IdentityTransform } from './identity_transform.js';\n\nexport interface StreamChannel<T
|
|
1
|
+
{"version":3,"sources":["../../src/stream/stream_channel.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2025 LiveKit, Inc.\n//\n// SPDX-License-Identifier: Apache-2.0\nimport type { ReadableStream } from 'node:stream/web';\nimport { IdentityTransform } from './identity_transform.js';\n\nexport interface StreamChannel<T> {\n write(chunk: T): Promise<void>;\n close(): Promise<void>;\n stream(): ReadableStream<T>;\n readonly closed: boolean;\n}\n\nexport function createStreamChannel<T>(): StreamChannel<T> {\n const transform = new IdentityTransform<T>();\n const writer = transform.writable.getWriter();\n let isClosed = false;\n\n return {\n write: (chunk: T) => writer.write(chunk),\n stream: () => transform.readable,\n close: async () => {\n try {\n const result = await writer.close();\n isClosed = true;\n return result;\n } catch (e) {\n if (e instanceof Error && e.name === 'TypeError') {\n // Ignore error if the stream is already closed\n isClosed = true;\n return;\n }\n throw e;\n }\n },\n get closed() {\n return isClosed;\n },\n };\n}\n"],"mappings":"AAIA,SAAS,yBAAyB;AAS3B,SAAS,sBAA2C;AACzD,QAAM,YAAY,IAAI,kBAAqB;AAC3C,QAAM,SAAS,UAAU,SAAS,UAAU;AAC5C,MAAI,WAAW;AAEf,SAAO;AAAA,IACL,OAAO,CAAC,UAAa,OAAO,MAAM,KAAK;AAAA,IACvC,QAAQ,MAAM,UAAU;AAAA,IACxB,OAAO,YAAY;AACjB,UAAI;AACF,cAAM,SAAS,MAAM,OAAO,MAAM;AAClC,mBAAW;AACX,eAAO;AAAA,MACT,SAAS,GAAG;AACV,YAAI,aAAa,SAAS,EAAE,SAAS,aAAa;AAEhD,qBAAW;AACX;AAAA,QACF;AACA,cAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,IAAI,SAAS;AACX,aAAO;AAAA,IACT;AAAA,EACF;AACF;","names":[]}
|
|
@@ -45,11 +45,6 @@ __export(trace_types_exports, {
|
|
|
45
45
|
ATTR_GEN_AI_USAGE_OUTPUT_TEXT_TOKENS: () => ATTR_GEN_AI_USAGE_OUTPUT_TEXT_TOKENS,
|
|
46
46
|
ATTR_GEN_AI_USAGE_OUTPUT_TOKENS: () => ATTR_GEN_AI_USAGE_OUTPUT_TOKENS,
|
|
47
47
|
ATTR_INSTRUCTIONS: () => ATTR_INSTRUCTIONS,
|
|
48
|
-
ATTR_INTERRUPTION_DETECTION_DELAY: () => ATTR_INTERRUPTION_DETECTION_DELAY,
|
|
49
|
-
ATTR_INTERRUPTION_PREDICTION_DURATION: () => ATTR_INTERRUPTION_PREDICTION_DURATION,
|
|
50
|
-
ATTR_INTERRUPTION_PROBABILITY: () => ATTR_INTERRUPTION_PROBABILITY,
|
|
51
|
-
ATTR_INTERRUPTION_TOTAL_DURATION: () => ATTR_INTERRUPTION_TOTAL_DURATION,
|
|
52
|
-
ATTR_IS_INTERRUPTION: () => ATTR_IS_INTERRUPTION,
|
|
53
48
|
ATTR_JOB_ID: () => ATTR_JOB_ID,
|
|
54
49
|
ATTR_LANGFUSE_COMPLETION_START_TIME: () => ATTR_LANGFUSE_COMPLETION_START_TIME,
|
|
55
50
|
ATTR_LLM_METRICS: () => ATTR_LLM_METRICS,
|
|
@@ -114,11 +109,6 @@ const ATTR_USER_TRANSCRIPT = "lk.user_transcript";
|
|
|
114
109
|
const ATTR_TRANSCRIPT_CONFIDENCE = "lk.transcript_confidence";
|
|
115
110
|
const ATTR_TRANSCRIPTION_DELAY = "lk.transcription_delay";
|
|
116
111
|
const ATTR_END_OF_TURN_DELAY = "lk.end_of_turn_delay";
|
|
117
|
-
const ATTR_IS_INTERRUPTION = "lk.is_interruption";
|
|
118
|
-
const ATTR_INTERRUPTION_PROBABILITY = "lk.interruption.probability";
|
|
119
|
-
const ATTR_INTERRUPTION_TOTAL_DURATION = "lk.interruption.total_duration";
|
|
120
|
-
const ATTR_INTERRUPTION_PREDICTION_DURATION = "lk.interruption.prediction_duration";
|
|
121
|
-
const ATTR_INTERRUPTION_DETECTION_DELAY = "lk.interruption.detection_delay";
|
|
122
112
|
const ATTR_LLM_METRICS = "lk.llm_metrics";
|
|
123
113
|
const ATTR_TTS_METRICS = "lk.tts_metrics";
|
|
124
114
|
const ATTR_REALTIME_MODEL_METRICS = "lk.realtime_model_metrics";
|
|
@@ -169,11 +159,6 @@ const ATTR_LANGFUSE_COMPLETION_START_TIME = "langfuse.observation.completion_sta
|
|
|
169
159
|
ATTR_GEN_AI_USAGE_OUTPUT_TEXT_TOKENS,
|
|
170
160
|
ATTR_GEN_AI_USAGE_OUTPUT_TOKENS,
|
|
171
161
|
ATTR_INSTRUCTIONS,
|
|
172
|
-
ATTR_INTERRUPTION_DETECTION_DELAY,
|
|
173
|
-
ATTR_INTERRUPTION_PREDICTION_DURATION,
|
|
174
|
-
ATTR_INTERRUPTION_PROBABILITY,
|
|
175
|
-
ATTR_INTERRUPTION_TOTAL_DURATION,
|
|
176
|
-
ATTR_IS_INTERRUPTION,
|
|
177
162
|
ATTR_JOB_ID,
|
|
178
163
|
ATTR_LANGFUSE_COMPLETION_START_TIME,
|
|
179
164
|
ATTR_LLM_METRICS,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/telemetry/trace_types.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2025 LiveKit, Inc.\n//\n// SPDX-License-Identifier: Apache-2.0\n\n// LiveKit custom attributes\nexport const ATTR_SPEECH_ID = 'lk.speech_id';\nexport const ATTR_AGENT_LABEL = 'lk.agent_label';\nexport const ATTR_START_TIME = 'lk.start_time';\nexport const ATTR_END_TIME = 'lk.end_time';\nexport const ATTR_RETRY_COUNT = 'lk.retry_count';\n\nexport const ATTR_PARTICIPANT_ID = 'lk.participant_id';\nexport const ATTR_PARTICIPANT_IDENTITY = 'lk.participant_identity';\nexport const ATTR_PARTICIPANT_KIND = 'lk.participant_kind';\n\n// session start\nexport const ATTR_JOB_ID = 'lk.job_id';\nexport const ATTR_AGENT_NAME = 'lk.agent_name';\nexport const ATTR_ROOM_NAME = 'lk.room_name';\nexport const ATTR_SESSION_OPTIONS = 'lk.session_options';\n\n// assistant turn\nexport const ATTR_USER_INPUT = 'lk.user_input';\nexport const ATTR_INSTRUCTIONS = 'lk.instructions';\nexport const ATTR_SPEECH_INTERRUPTED = 'lk.interrupted';\n\n// llm node\nexport const ATTR_CHAT_CTX = 'lk.chat_ctx';\nexport const ATTR_FUNCTION_TOOLS = 'lk.function_tools';\nexport const ATTR_RESPONSE_TEXT = 'lk.response.text';\nexport const ATTR_RESPONSE_FUNCTION_CALLS = 'lk.response.function_calls';\n\n// function tool\nexport const ATTR_FUNCTION_TOOL_NAME = 'lk.function_tool.name';\nexport const ATTR_FUNCTION_TOOL_ARGS = 'lk.function_tool.arguments';\nexport const ATTR_FUNCTION_TOOL_IS_ERROR = 'lk.function_tool.is_error';\nexport const ATTR_FUNCTION_TOOL_OUTPUT = 'lk.function_tool.output';\n\n// tts node\nexport const ATTR_TTS_INPUT_TEXT = 'lk.input_text';\nexport const ATTR_TTS_STREAMING = 'lk.tts.streaming';\nexport const ATTR_TTS_LABEL = 'lk.tts.label';\n\n// eou detection\nexport const ATTR_EOU_PROBABILITY = 'lk.eou.probability';\nexport const ATTR_EOU_UNLIKELY_THRESHOLD = 'lk.eou.unlikely_threshold';\nexport const ATTR_EOU_DELAY = 'lk.eou.endpointing_delay';\nexport const ATTR_EOU_LANGUAGE = 'lk.eou.language';\nexport const ATTR_USER_TRANSCRIPT = 'lk.user_transcript';\nexport const ATTR_TRANSCRIPT_CONFIDENCE = 'lk.transcript_confidence';\nexport const ATTR_TRANSCRIPTION_DELAY = 'lk.transcription_delay';\nexport const ATTR_END_OF_TURN_DELAY = 'lk.end_of_turn_delay';\n\n//
|
|
1
|
+
{"version":3,"sources":["../../src/telemetry/trace_types.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2025 LiveKit, Inc.\n//\n// SPDX-License-Identifier: Apache-2.0\n\n// LiveKit custom attributes\nexport const ATTR_SPEECH_ID = 'lk.speech_id';\nexport const ATTR_AGENT_LABEL = 'lk.agent_label';\nexport const ATTR_START_TIME = 'lk.start_time';\nexport const ATTR_END_TIME = 'lk.end_time';\nexport const ATTR_RETRY_COUNT = 'lk.retry_count';\n\nexport const ATTR_PARTICIPANT_ID = 'lk.participant_id';\nexport const ATTR_PARTICIPANT_IDENTITY = 'lk.participant_identity';\nexport const ATTR_PARTICIPANT_KIND = 'lk.participant_kind';\n\n// session start\nexport const ATTR_JOB_ID = 'lk.job_id';\nexport const ATTR_AGENT_NAME = 'lk.agent_name';\nexport const ATTR_ROOM_NAME = 'lk.room_name';\nexport const ATTR_SESSION_OPTIONS = 'lk.session_options';\n\n// assistant turn\nexport const ATTR_USER_INPUT = 'lk.user_input';\nexport const ATTR_INSTRUCTIONS = 'lk.instructions';\nexport const ATTR_SPEECH_INTERRUPTED = 'lk.interrupted';\n\n// llm node\nexport const ATTR_CHAT_CTX = 'lk.chat_ctx';\nexport const ATTR_FUNCTION_TOOLS = 'lk.function_tools';\nexport const ATTR_RESPONSE_TEXT = 'lk.response.text';\nexport const ATTR_RESPONSE_FUNCTION_CALLS = 'lk.response.function_calls';\n\n// function tool\nexport const ATTR_FUNCTION_TOOL_NAME = 'lk.function_tool.name';\nexport const ATTR_FUNCTION_TOOL_ARGS = 'lk.function_tool.arguments';\nexport const ATTR_FUNCTION_TOOL_IS_ERROR = 'lk.function_tool.is_error';\nexport const ATTR_FUNCTION_TOOL_OUTPUT = 'lk.function_tool.output';\n\n// tts node\nexport const ATTR_TTS_INPUT_TEXT = 'lk.input_text';\nexport const ATTR_TTS_STREAMING = 'lk.tts.streaming';\nexport const ATTR_TTS_LABEL = 'lk.tts.label';\n\n// eou detection\nexport const ATTR_EOU_PROBABILITY = 'lk.eou.probability';\nexport const ATTR_EOU_UNLIKELY_THRESHOLD = 'lk.eou.unlikely_threshold';\nexport const ATTR_EOU_DELAY = 'lk.eou.endpointing_delay';\nexport const ATTR_EOU_LANGUAGE = 'lk.eou.language';\nexport const ATTR_USER_TRANSCRIPT = 'lk.user_transcript';\nexport const ATTR_TRANSCRIPT_CONFIDENCE = 'lk.transcript_confidence';\nexport const ATTR_TRANSCRIPTION_DELAY = 'lk.transcription_delay';\nexport const ATTR_END_OF_TURN_DELAY = 'lk.end_of_turn_delay';\n\n// metrics\nexport const ATTR_LLM_METRICS = 'lk.llm_metrics';\nexport const ATTR_TTS_METRICS = 'lk.tts_metrics';\nexport const ATTR_REALTIME_MODEL_METRICS = 'lk.realtime_model_metrics';\n\n// OpenTelemetry GenAI attributes\n// OpenTelemetry specification: https://opentelemetry.io/docs/specs/semconv/registry/attributes/gen-ai/\nexport const ATTR_GEN_AI_OPERATION_NAME = 'gen_ai.operation.name';\nexport const ATTR_GEN_AI_REQUEST_MODEL = 'gen_ai.request.model';\nexport const ATTR_GEN_AI_USAGE_INPUT_TOKENS = 'gen_ai.usage.input_tokens';\nexport const ATTR_GEN_AI_USAGE_OUTPUT_TOKENS = 'gen_ai.usage.output_tokens';\n\n// Unofficial OpenTelemetry GenAI attributes, recognized by LangFuse\n// https://langfuse.com/integrations/native/opentelemetry#usage\n// but not yet in the official OpenTelemetry specification.\nexport const ATTR_GEN_AI_USAGE_INPUT_TEXT_TOKENS = 'gen_ai.usage.input_text_tokens';\nexport const ATTR_GEN_AI_USAGE_INPUT_AUDIO_TOKENS = 'gen_ai.usage.input_audio_tokens';\nexport const ATTR_GEN_AI_USAGE_INPUT_CACHED_TOKENS = 'gen_ai.usage.input_cached_tokens';\nexport const ATTR_GEN_AI_USAGE_OUTPUT_TEXT_TOKENS = 'gen_ai.usage.output_text_tokens';\nexport const ATTR_GEN_AI_USAGE_OUTPUT_AUDIO_TOKENS = 'gen_ai.usage.output_audio_tokens';\n\n// OpenTelemetry GenAI event names (for structured logging)\nexport const EVENT_GEN_AI_SYSTEM_MESSAGE = 'gen_ai.system.message';\nexport const EVENT_GEN_AI_USER_MESSAGE = 'gen_ai.user.message';\nexport const EVENT_GEN_AI_ASSISTANT_MESSAGE = 'gen_ai.assistant.message';\nexport const EVENT_GEN_AI_TOOL_MESSAGE = 'gen_ai.tool.message';\nexport const EVENT_GEN_AI_CHOICE = 'gen_ai.choice';\n\n// Exception attributes\nexport const ATTR_EXCEPTION_TRACE = 'exception.stacktrace';\nexport const ATTR_EXCEPTION_TYPE = 'exception.type';\nexport const ATTR_EXCEPTION_MESSAGE = 'exception.message';\n\n// Platform-specific attributes\nexport const ATTR_LANGFUSE_COMPLETION_START_TIME = 'langfuse.observation.completion_start_time';\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKO,MAAM,iBAAiB;AACvB,MAAM,mBAAmB;AACzB,MAAM,kBAAkB;AACxB,MAAM,gBAAgB;AACtB,MAAM,mBAAmB;AAEzB,MAAM,sBAAsB;AAC5B,MAAM,4BAA4B;AAClC,MAAM,wBAAwB;AAG9B,MAAM,cAAc;AACpB,MAAM,kBAAkB;AACxB,MAAM,iBAAiB;AACvB,MAAM,uBAAuB;AAG7B,MAAM,kBAAkB;AACxB,MAAM,oBAAoB;AAC1B,MAAM,0BAA0B;AAGhC,MAAM,gBAAgB;AACtB,MAAM,sBAAsB;AAC5B,MAAM,qBAAqB;AAC3B,MAAM,+BAA+B;AAGrC,MAAM,0BAA0B;AAChC,MAAM,0BAA0B;AAChC,MAAM,8BAA8B;AACpC,MAAM,4BAA4B;AAGlC,MAAM,sBAAsB;AAC5B,MAAM,qBAAqB;AAC3B,MAAM,iBAAiB;AAGvB,MAAM,uBAAuB;AAC7B,MAAM,8BAA8B;AACpC,MAAM,iBAAiB;AACvB,MAAM,oBAAoB;AAC1B,MAAM,uBAAuB;AAC7B,MAAM,6BAA6B;AACnC,MAAM,2BAA2B;AACjC,MAAM,yBAAyB;AAG/B,MAAM,mBAAmB;AACzB,MAAM,mBAAmB;AACzB,MAAM,8BAA8B;AAIpC,MAAM,6BAA6B;AACnC,MAAM,4BAA4B;AAClC,MAAM,iCAAiC;AACvC,MAAM,kCAAkC;AAKxC,MAAM,sCAAsC;AAC5C,MAAM,uCAAuC;AAC7C,MAAM,wCAAwC;AAC9C,MAAM,uCAAuC;AAC7C,MAAM,wCAAwC;AAG9C,MAAM,8BAA8B;AACpC,MAAM,4BAA4B;AAClC,MAAM,iCAAiC;AACvC,MAAM,4BAA4B;AAClC,MAAM,sBAAsB;AAG5B,MAAM,uBAAuB;AAC7B,MAAM,sBAAsB;AAC5B,MAAM,yBAAyB;AAG/B,MAAM,sCAAsC;","names":[]}
|
|
@@ -32,11 +32,6 @@ export declare const ATTR_USER_TRANSCRIPT = "lk.user_transcript";
|
|
|
32
32
|
export declare const ATTR_TRANSCRIPT_CONFIDENCE = "lk.transcript_confidence";
|
|
33
33
|
export declare const ATTR_TRANSCRIPTION_DELAY = "lk.transcription_delay";
|
|
34
34
|
export declare const ATTR_END_OF_TURN_DELAY = "lk.end_of_turn_delay";
|
|
35
|
-
export declare const ATTR_IS_INTERRUPTION = "lk.is_interruption";
|
|
36
|
-
export declare const ATTR_INTERRUPTION_PROBABILITY = "lk.interruption.probability";
|
|
37
|
-
export declare const ATTR_INTERRUPTION_TOTAL_DURATION = "lk.interruption.total_duration";
|
|
38
|
-
export declare const ATTR_INTERRUPTION_PREDICTION_DURATION = "lk.interruption.prediction_duration";
|
|
39
|
-
export declare const ATTR_INTERRUPTION_DETECTION_DELAY = "lk.interruption.detection_delay";
|
|
40
35
|
export declare const ATTR_LLM_METRICS = "lk.llm_metrics";
|
|
41
36
|
export declare const ATTR_TTS_METRICS = "lk.tts_metrics";
|
|
42
37
|
export declare const ATTR_REALTIME_MODEL_METRICS = "lk.realtime_model_metrics";
|
|
@@ -32,11 +32,6 @@ export declare const ATTR_USER_TRANSCRIPT = "lk.user_transcript";
|
|
|
32
32
|
export declare const ATTR_TRANSCRIPT_CONFIDENCE = "lk.transcript_confidence";
|
|
33
33
|
export declare const ATTR_TRANSCRIPTION_DELAY = "lk.transcription_delay";
|
|
34
34
|
export declare const ATTR_END_OF_TURN_DELAY = "lk.end_of_turn_delay";
|
|
35
|
-
export declare const ATTR_IS_INTERRUPTION = "lk.is_interruption";
|
|
36
|
-
export declare const ATTR_INTERRUPTION_PROBABILITY = "lk.interruption.probability";
|
|
37
|
-
export declare const ATTR_INTERRUPTION_TOTAL_DURATION = "lk.interruption.total_duration";
|
|
38
|
-
export declare const ATTR_INTERRUPTION_PREDICTION_DURATION = "lk.interruption.prediction_duration";
|
|
39
|
-
export declare const ATTR_INTERRUPTION_DETECTION_DELAY = "lk.interruption.detection_delay";
|
|
40
35
|
export declare const ATTR_LLM_METRICS = "lk.llm_metrics";
|
|
41
36
|
export declare const ATTR_TTS_METRICS = "lk.tts_metrics";
|
|
42
37
|
export declare const ATTR_REALTIME_MODEL_METRICS = "lk.realtime_model_metrics";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trace_types.d.ts","sourceRoot":"","sources":["../../src/telemetry/trace_types.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,cAAc,iBAAiB,CAAC;AAC7C,eAAO,MAAM,gBAAgB,mBAAmB,CAAC;AACjD,eAAO,MAAM,eAAe,kBAAkB,CAAC;AAC/C,eAAO,MAAM,aAAa,gBAAgB,CAAC;AAC3C,eAAO,MAAM,gBAAgB,mBAAmB,CAAC;AAEjD,eAAO,MAAM,mBAAmB,sBAAsB,CAAC;AACvD,eAAO,MAAM,yBAAyB,4BAA4B,CAAC;AACnE,eAAO,MAAM,qBAAqB,wBAAwB,CAAC;AAG3D,eAAO,MAAM,WAAW,cAAc,CAAC;AACvC,eAAO,MAAM,eAAe,kBAAkB,CAAC;AAC/C,eAAO,MAAM,cAAc,iBAAiB,CAAC;AAC7C,eAAO,MAAM,oBAAoB,uBAAuB,CAAC;AAGzD,eAAO,MAAM,eAAe,kBAAkB,CAAC;AAC/C,eAAO,MAAM,iBAAiB,oBAAoB,CAAC;AACnD,eAAO,MAAM,uBAAuB,mBAAmB,CAAC;AAGxD,eAAO,MAAM,aAAa,gBAAgB,CAAC;AAC3C,eAAO,MAAM,mBAAmB,sBAAsB,CAAC;AACvD,eAAO,MAAM,kBAAkB,qBAAqB,CAAC;AACrD,eAAO,MAAM,4BAA4B,+BAA+B,CAAC;AAGzE,eAAO,MAAM,uBAAuB,0BAA0B,CAAC;AAC/D,eAAO,MAAM,uBAAuB,+BAA+B,CAAC;AACpE,eAAO,MAAM,2BAA2B,8BAA8B,CAAC;AACvE,eAAO,MAAM,yBAAyB,4BAA4B,CAAC;AAGnE,eAAO,MAAM,mBAAmB,kBAAkB,CAAC;AACnD,eAAO,MAAM,kBAAkB,qBAAqB,CAAC;AACrD,eAAO,MAAM,cAAc,iBAAiB,CAAC;AAG7C,eAAO,MAAM,oBAAoB,uBAAuB,CAAC;AACzD,eAAO,MAAM,2BAA2B,8BAA8B,CAAC;AACvE,eAAO,MAAM,cAAc,6BAA6B,CAAC;AACzD,eAAO,MAAM,iBAAiB,oBAAoB,CAAC;AACnD,eAAO,MAAM,oBAAoB,uBAAuB,CAAC;AACzD,eAAO,MAAM,0BAA0B,6BAA6B,CAAC;AACrE,eAAO,MAAM,wBAAwB,2BAA2B,CAAC;AACjE,eAAO,MAAM,sBAAsB,yBAAyB,CAAC;AAG7D,eAAO,MAAM,
|
|
1
|
+
{"version":3,"file":"trace_types.d.ts","sourceRoot":"","sources":["../../src/telemetry/trace_types.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,cAAc,iBAAiB,CAAC;AAC7C,eAAO,MAAM,gBAAgB,mBAAmB,CAAC;AACjD,eAAO,MAAM,eAAe,kBAAkB,CAAC;AAC/C,eAAO,MAAM,aAAa,gBAAgB,CAAC;AAC3C,eAAO,MAAM,gBAAgB,mBAAmB,CAAC;AAEjD,eAAO,MAAM,mBAAmB,sBAAsB,CAAC;AACvD,eAAO,MAAM,yBAAyB,4BAA4B,CAAC;AACnE,eAAO,MAAM,qBAAqB,wBAAwB,CAAC;AAG3D,eAAO,MAAM,WAAW,cAAc,CAAC;AACvC,eAAO,MAAM,eAAe,kBAAkB,CAAC;AAC/C,eAAO,MAAM,cAAc,iBAAiB,CAAC;AAC7C,eAAO,MAAM,oBAAoB,uBAAuB,CAAC;AAGzD,eAAO,MAAM,eAAe,kBAAkB,CAAC;AAC/C,eAAO,MAAM,iBAAiB,oBAAoB,CAAC;AACnD,eAAO,MAAM,uBAAuB,mBAAmB,CAAC;AAGxD,eAAO,MAAM,aAAa,gBAAgB,CAAC;AAC3C,eAAO,MAAM,mBAAmB,sBAAsB,CAAC;AACvD,eAAO,MAAM,kBAAkB,qBAAqB,CAAC;AACrD,eAAO,MAAM,4BAA4B,+BAA+B,CAAC;AAGzE,eAAO,MAAM,uBAAuB,0BAA0B,CAAC;AAC/D,eAAO,MAAM,uBAAuB,+BAA+B,CAAC;AACpE,eAAO,MAAM,2BAA2B,8BAA8B,CAAC;AACvE,eAAO,MAAM,yBAAyB,4BAA4B,CAAC;AAGnE,eAAO,MAAM,mBAAmB,kBAAkB,CAAC;AACnD,eAAO,MAAM,kBAAkB,qBAAqB,CAAC;AACrD,eAAO,MAAM,cAAc,iBAAiB,CAAC;AAG7C,eAAO,MAAM,oBAAoB,uBAAuB,CAAC;AACzD,eAAO,MAAM,2BAA2B,8BAA8B,CAAC;AACvE,eAAO,MAAM,cAAc,6BAA6B,CAAC;AACzD,eAAO,MAAM,iBAAiB,oBAAoB,CAAC;AACnD,eAAO,MAAM,oBAAoB,uBAAuB,CAAC;AACzD,eAAO,MAAM,0BAA0B,6BAA6B,CAAC;AACrE,eAAO,MAAM,wBAAwB,2BAA2B,CAAC;AACjE,eAAO,MAAM,sBAAsB,yBAAyB,CAAC;AAG7D,eAAO,MAAM,gBAAgB,mBAAmB,CAAC;AACjD,eAAO,MAAM,gBAAgB,mBAAmB,CAAC;AACjD,eAAO,MAAM,2BAA2B,8BAA8B,CAAC;AAIvE,eAAO,MAAM,0BAA0B,0BAA0B,CAAC;AAClE,eAAO,MAAM,yBAAyB,yBAAyB,CAAC;AAChE,eAAO,MAAM,8BAA8B,8BAA8B,CAAC;AAC1E,eAAO,MAAM,+BAA+B,+BAA+B,CAAC;AAK5E,eAAO,MAAM,mCAAmC,mCAAmC,CAAC;AACpF,eAAO,MAAM,oCAAoC,oCAAoC,CAAC;AACtF,eAAO,MAAM,qCAAqC,qCAAqC,CAAC;AACxF,eAAO,MAAM,oCAAoC,oCAAoC,CAAC;AACtF,eAAO,MAAM,qCAAqC,qCAAqC,CAAC;AAGxF,eAAO,MAAM,2BAA2B,0BAA0B,CAAC;AACnE,eAAO,MAAM,yBAAyB,wBAAwB,CAAC;AAC/D,eAAO,MAAM,8BAA8B,6BAA6B,CAAC;AACzE,eAAO,MAAM,yBAAyB,wBAAwB,CAAC;AAC/D,eAAO,MAAM,mBAAmB,kBAAkB,CAAC;AAGnD,eAAO,MAAM,oBAAoB,yBAAyB,CAAC;AAC3D,eAAO,MAAM,mBAAmB,mBAAmB,CAAC;AACpD,eAAO,MAAM,sBAAsB,sBAAsB,CAAC;AAG1D,eAAO,MAAM,mCAAmC,+CAA+C,CAAC"}
|
|
@@ -32,11 +32,6 @@ const ATTR_USER_TRANSCRIPT = "lk.user_transcript";
|
|
|
32
32
|
const ATTR_TRANSCRIPT_CONFIDENCE = "lk.transcript_confidence";
|
|
33
33
|
const ATTR_TRANSCRIPTION_DELAY = "lk.transcription_delay";
|
|
34
34
|
const ATTR_END_OF_TURN_DELAY = "lk.end_of_turn_delay";
|
|
35
|
-
const ATTR_IS_INTERRUPTION = "lk.is_interruption";
|
|
36
|
-
const ATTR_INTERRUPTION_PROBABILITY = "lk.interruption.probability";
|
|
37
|
-
const ATTR_INTERRUPTION_TOTAL_DURATION = "lk.interruption.total_duration";
|
|
38
|
-
const ATTR_INTERRUPTION_PREDICTION_DURATION = "lk.interruption.prediction_duration";
|
|
39
|
-
const ATTR_INTERRUPTION_DETECTION_DELAY = "lk.interruption.detection_delay";
|
|
40
35
|
const ATTR_LLM_METRICS = "lk.llm_metrics";
|
|
41
36
|
const ATTR_TTS_METRICS = "lk.tts_metrics";
|
|
42
37
|
const ATTR_REALTIME_MODEL_METRICS = "lk.realtime_model_metrics";
|
|
@@ -86,11 +81,6 @@ export {
|
|
|
86
81
|
ATTR_GEN_AI_USAGE_OUTPUT_TEXT_TOKENS,
|
|
87
82
|
ATTR_GEN_AI_USAGE_OUTPUT_TOKENS,
|
|
88
83
|
ATTR_INSTRUCTIONS,
|
|
89
|
-
ATTR_INTERRUPTION_DETECTION_DELAY,
|
|
90
|
-
ATTR_INTERRUPTION_PREDICTION_DURATION,
|
|
91
|
-
ATTR_INTERRUPTION_PROBABILITY,
|
|
92
|
-
ATTR_INTERRUPTION_TOTAL_DURATION,
|
|
93
|
-
ATTR_IS_INTERRUPTION,
|
|
94
84
|
ATTR_JOB_ID,
|
|
95
85
|
ATTR_LANGFUSE_COMPLETION_START_TIME,
|
|
96
86
|
ATTR_LLM_METRICS,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/telemetry/trace_types.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2025 LiveKit, Inc.\n//\n// SPDX-License-Identifier: Apache-2.0\n\n// LiveKit custom attributes\nexport const ATTR_SPEECH_ID = 'lk.speech_id';\nexport const ATTR_AGENT_LABEL = 'lk.agent_label';\nexport const ATTR_START_TIME = 'lk.start_time';\nexport const ATTR_END_TIME = 'lk.end_time';\nexport const ATTR_RETRY_COUNT = 'lk.retry_count';\n\nexport const ATTR_PARTICIPANT_ID = 'lk.participant_id';\nexport const ATTR_PARTICIPANT_IDENTITY = 'lk.participant_identity';\nexport const ATTR_PARTICIPANT_KIND = 'lk.participant_kind';\n\n// session start\nexport const ATTR_JOB_ID = 'lk.job_id';\nexport const ATTR_AGENT_NAME = 'lk.agent_name';\nexport const ATTR_ROOM_NAME = 'lk.room_name';\nexport const ATTR_SESSION_OPTIONS = 'lk.session_options';\n\n// assistant turn\nexport const ATTR_USER_INPUT = 'lk.user_input';\nexport const ATTR_INSTRUCTIONS = 'lk.instructions';\nexport const ATTR_SPEECH_INTERRUPTED = 'lk.interrupted';\n\n// llm node\nexport const ATTR_CHAT_CTX = 'lk.chat_ctx';\nexport const ATTR_FUNCTION_TOOLS = 'lk.function_tools';\nexport const ATTR_RESPONSE_TEXT = 'lk.response.text';\nexport const ATTR_RESPONSE_FUNCTION_CALLS = 'lk.response.function_calls';\n\n// function tool\nexport const ATTR_FUNCTION_TOOL_NAME = 'lk.function_tool.name';\nexport const ATTR_FUNCTION_TOOL_ARGS = 'lk.function_tool.arguments';\nexport const ATTR_FUNCTION_TOOL_IS_ERROR = 'lk.function_tool.is_error';\nexport const ATTR_FUNCTION_TOOL_OUTPUT = 'lk.function_tool.output';\n\n// tts node\nexport const ATTR_TTS_INPUT_TEXT = 'lk.input_text';\nexport const ATTR_TTS_STREAMING = 'lk.tts.streaming';\nexport const ATTR_TTS_LABEL = 'lk.tts.label';\n\n// eou detection\nexport const ATTR_EOU_PROBABILITY = 'lk.eou.probability';\nexport const ATTR_EOU_UNLIKELY_THRESHOLD = 'lk.eou.unlikely_threshold';\nexport const ATTR_EOU_DELAY = 'lk.eou.endpointing_delay';\nexport const ATTR_EOU_LANGUAGE = 'lk.eou.language';\nexport const ATTR_USER_TRANSCRIPT = 'lk.user_transcript';\nexport const ATTR_TRANSCRIPT_CONFIDENCE = 'lk.transcript_confidence';\nexport const ATTR_TRANSCRIPTION_DELAY = 'lk.transcription_delay';\nexport const ATTR_END_OF_TURN_DELAY = 'lk.end_of_turn_delay';\n\n//
|
|
1
|
+
{"version":3,"sources":["../../src/telemetry/trace_types.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2025 LiveKit, Inc.\n//\n// SPDX-License-Identifier: Apache-2.0\n\n// LiveKit custom attributes\nexport const ATTR_SPEECH_ID = 'lk.speech_id';\nexport const ATTR_AGENT_LABEL = 'lk.agent_label';\nexport const ATTR_START_TIME = 'lk.start_time';\nexport const ATTR_END_TIME = 'lk.end_time';\nexport const ATTR_RETRY_COUNT = 'lk.retry_count';\n\nexport const ATTR_PARTICIPANT_ID = 'lk.participant_id';\nexport const ATTR_PARTICIPANT_IDENTITY = 'lk.participant_identity';\nexport const ATTR_PARTICIPANT_KIND = 'lk.participant_kind';\n\n// session start\nexport const ATTR_JOB_ID = 'lk.job_id';\nexport const ATTR_AGENT_NAME = 'lk.agent_name';\nexport const ATTR_ROOM_NAME = 'lk.room_name';\nexport const ATTR_SESSION_OPTIONS = 'lk.session_options';\n\n// assistant turn\nexport const ATTR_USER_INPUT = 'lk.user_input';\nexport const ATTR_INSTRUCTIONS = 'lk.instructions';\nexport const ATTR_SPEECH_INTERRUPTED = 'lk.interrupted';\n\n// llm node\nexport const ATTR_CHAT_CTX = 'lk.chat_ctx';\nexport const ATTR_FUNCTION_TOOLS = 'lk.function_tools';\nexport const ATTR_RESPONSE_TEXT = 'lk.response.text';\nexport const ATTR_RESPONSE_FUNCTION_CALLS = 'lk.response.function_calls';\n\n// function tool\nexport const ATTR_FUNCTION_TOOL_NAME = 'lk.function_tool.name';\nexport const ATTR_FUNCTION_TOOL_ARGS = 'lk.function_tool.arguments';\nexport const ATTR_FUNCTION_TOOL_IS_ERROR = 'lk.function_tool.is_error';\nexport const ATTR_FUNCTION_TOOL_OUTPUT = 'lk.function_tool.output';\n\n// tts node\nexport const ATTR_TTS_INPUT_TEXT = 'lk.input_text';\nexport const ATTR_TTS_STREAMING = 'lk.tts.streaming';\nexport const ATTR_TTS_LABEL = 'lk.tts.label';\n\n// eou detection\nexport const ATTR_EOU_PROBABILITY = 'lk.eou.probability';\nexport const ATTR_EOU_UNLIKELY_THRESHOLD = 'lk.eou.unlikely_threshold';\nexport const ATTR_EOU_DELAY = 'lk.eou.endpointing_delay';\nexport const ATTR_EOU_LANGUAGE = 'lk.eou.language';\nexport const ATTR_USER_TRANSCRIPT = 'lk.user_transcript';\nexport const ATTR_TRANSCRIPT_CONFIDENCE = 'lk.transcript_confidence';\nexport const ATTR_TRANSCRIPTION_DELAY = 'lk.transcription_delay';\nexport const ATTR_END_OF_TURN_DELAY = 'lk.end_of_turn_delay';\n\n// metrics\nexport const ATTR_LLM_METRICS = 'lk.llm_metrics';\nexport const ATTR_TTS_METRICS = 'lk.tts_metrics';\nexport const ATTR_REALTIME_MODEL_METRICS = 'lk.realtime_model_metrics';\n\n// OpenTelemetry GenAI attributes\n// OpenTelemetry specification: https://opentelemetry.io/docs/specs/semconv/registry/attributes/gen-ai/\nexport const ATTR_GEN_AI_OPERATION_NAME = 'gen_ai.operation.name';\nexport const ATTR_GEN_AI_REQUEST_MODEL = 'gen_ai.request.model';\nexport const ATTR_GEN_AI_USAGE_INPUT_TOKENS = 'gen_ai.usage.input_tokens';\nexport const ATTR_GEN_AI_USAGE_OUTPUT_TOKENS = 'gen_ai.usage.output_tokens';\n\n// Unofficial OpenTelemetry GenAI attributes, recognized by LangFuse\n// https://langfuse.com/integrations/native/opentelemetry#usage\n// but not yet in the official OpenTelemetry specification.\nexport const ATTR_GEN_AI_USAGE_INPUT_TEXT_TOKENS = 'gen_ai.usage.input_text_tokens';\nexport const ATTR_GEN_AI_USAGE_INPUT_AUDIO_TOKENS = 'gen_ai.usage.input_audio_tokens';\nexport const ATTR_GEN_AI_USAGE_INPUT_CACHED_TOKENS = 'gen_ai.usage.input_cached_tokens';\nexport const ATTR_GEN_AI_USAGE_OUTPUT_TEXT_TOKENS = 'gen_ai.usage.output_text_tokens';\nexport const ATTR_GEN_AI_USAGE_OUTPUT_AUDIO_TOKENS = 'gen_ai.usage.output_audio_tokens';\n\n// OpenTelemetry GenAI event names (for structured logging)\nexport const EVENT_GEN_AI_SYSTEM_MESSAGE = 'gen_ai.system.message';\nexport const EVENT_GEN_AI_USER_MESSAGE = 'gen_ai.user.message';\nexport const EVENT_GEN_AI_ASSISTANT_MESSAGE = 'gen_ai.assistant.message';\nexport const EVENT_GEN_AI_TOOL_MESSAGE = 'gen_ai.tool.message';\nexport const EVENT_GEN_AI_CHOICE = 'gen_ai.choice';\n\n// Exception attributes\nexport const ATTR_EXCEPTION_TRACE = 'exception.stacktrace';\nexport const ATTR_EXCEPTION_TYPE = 'exception.type';\nexport const ATTR_EXCEPTION_MESSAGE = 'exception.message';\n\n// Platform-specific attributes\nexport const ATTR_LANGFUSE_COMPLETION_START_TIME = 'langfuse.observation.completion_start_time';\n"],"mappings":"AAKO,MAAM,iBAAiB;AACvB,MAAM,mBAAmB;AACzB,MAAM,kBAAkB;AACxB,MAAM,gBAAgB;AACtB,MAAM,mBAAmB;AAEzB,MAAM,sBAAsB;AAC5B,MAAM,4BAA4B;AAClC,MAAM,wBAAwB;AAG9B,MAAM,cAAc;AACpB,MAAM,kBAAkB;AACxB,MAAM,iBAAiB;AACvB,MAAM,uBAAuB;AAG7B,MAAM,kBAAkB;AACxB,MAAM,oBAAoB;AAC1B,MAAM,0BAA0B;AAGhC,MAAM,gBAAgB;AACtB,MAAM,sBAAsB;AAC5B,MAAM,qBAAqB;AAC3B,MAAM,+BAA+B;AAGrC,MAAM,0BAA0B;AAChC,MAAM,0BAA0B;AAChC,MAAM,8BAA8B;AACpC,MAAM,4BAA4B;AAGlC,MAAM,sBAAsB;AAC5B,MAAM,qBAAqB;AAC3B,MAAM,iBAAiB;AAGvB,MAAM,uBAAuB;AAC7B,MAAM,8BAA8B;AACpC,MAAM,iBAAiB;AACvB,MAAM,oBAAoB;AAC1B,MAAM,uBAAuB;AAC7B,MAAM,6BAA6B;AACnC,MAAM,2BAA2B;AACjC,MAAM,yBAAyB;AAG/B,MAAM,mBAAmB;AACzB,MAAM,mBAAmB;AACzB,MAAM,8BAA8B;AAIpC,MAAM,6BAA6B;AACnC,MAAM,4BAA4B;AAClC,MAAM,iCAAiC;AACvC,MAAM,kCAAkC;AAKxC,MAAM,sCAAsC;AAC5C,MAAM,uCAAuC;AAC7C,MAAM,wCAAwC;AAC9C,MAAM,uCAAuC;AAC7C,MAAM,wCAAwC;AAG9C,MAAM,8BAA8B;AACpC,MAAM,4BAA4B;AAClC,MAAM,iCAAiC;AACvC,MAAM,4BAA4B;AAClC,MAAM,sBAAsB;AAG5B,MAAM,uBAAuB;AAC7B,MAAM,sBAAsB;AAC5B,MAAM,yBAAyB;AAG/B,MAAM,sCAAsC;","names":[]}
|
|
@@ -36,7 +36,6 @@ var import_telemetry = require("../telemetry/index.cjs");
|
|
|
36
36
|
var import_word = require("../tokenize/basic/word.cjs");
|
|
37
37
|
var import_tts = require("../tts/tts.cjs");
|
|
38
38
|
var import_utils = require("../utils.cjs");
|
|
39
|
-
var import_interruption = require("../inference/interruption/interruption.cjs");
|
|
40
39
|
var import_vad = require("../vad.cjs");
|
|
41
40
|
var import_agent = require("./agent.cjs");
|
|
42
41
|
var import_agent_session = require("./agent_session.cjs");
|
|
@@ -70,24 +69,6 @@ class AgentActivity {
|
|
|
70
69
|
/** @internal */
|
|
71
70
|
_mainTask;
|
|
72
71
|
_userTurnCompletedTask;
|
|
73
|
-
/**
|
|
74
|
-
* Notify that agent started speaking.
|
|
75
|
-
* This enables interruption detection in AudioRecognition.
|
|
76
|
-
* @internal
|
|
77
|
-
*/
|
|
78
|
-
notifyAgentSpeechStarted() {
|
|
79
|
-
var _a;
|
|
80
|
-
(_a = this.audioRecognition) == null ? void 0 : _a.onStartOfAgentSpeech();
|
|
81
|
-
}
|
|
82
|
-
/**
|
|
83
|
-
* Notify that agent stopped speaking.
|
|
84
|
-
* This disables interruption detection in AudioRecognition.
|
|
85
|
-
* @internal
|
|
86
|
-
*/
|
|
87
|
-
notifyAgentSpeechEnded() {
|
|
88
|
-
var _a;
|
|
89
|
-
(_a = this.audioRecognition) == null ? void 0 : _a.onEndOfAgentSpeech();
|
|
90
|
-
}
|
|
91
72
|
constructor(agent, agentSession) {
|
|
92
73
|
this.agent = agent;
|
|
93
74
|
this.agentSession = agentSession;
|
|
@@ -220,7 +201,6 @@ class AgentActivity {
|
|
|
220
201
|
// Disable stt node if stt is not provided
|
|
221
202
|
stt: this.stt ? (...args) => this.agent.sttNode(...args) : void 0,
|
|
222
203
|
vad: this.vad,
|
|
223
|
-
interruptionDetector: this.agentSession.interruptionDetector,
|
|
224
204
|
turnDetector: typeof this.turnDetection === "string" ? void 0 : this.turnDetection,
|
|
225
205
|
turnDetectionMode: this.turnDetectionMode,
|
|
226
206
|
minEndpointingDelay: this.agentSession.options.minEndpointingDelay,
|
|
@@ -514,35 +494,6 @@ class AgentActivity {
|
|
|
514
494
|
this._currentSpeech.interrupt();
|
|
515
495
|
}
|
|
516
496
|
}
|
|
517
|
-
onInterruption(ev) {
|
|
518
|
-
var _a, _b;
|
|
519
|
-
if (ev.type !== import_interruption.InterruptionEventType.INTERRUPTION) {
|
|
520
|
-
return;
|
|
521
|
-
}
|
|
522
|
-
this.logger.info(
|
|
523
|
-
{
|
|
524
|
-
probability: ev.probability,
|
|
525
|
-
detectionDelay: ev.detectionDelay,
|
|
526
|
-
totalDuration: ev.totalDuration
|
|
527
|
-
},
|
|
528
|
-
"adaptive interruption detected"
|
|
529
|
-
);
|
|
530
|
-
if (this.turnDetection === "manual" || this.turnDetection === "realtime_llm") {
|
|
531
|
-
return;
|
|
532
|
-
}
|
|
533
|
-
if (this.llm instanceof import_llm.RealtimeModel && this.llm.capabilities.turnDetection) {
|
|
534
|
-
return;
|
|
535
|
-
}
|
|
536
|
-
(_a = this.realtimeSession) == null ? void 0 : _a.startUserActivity();
|
|
537
|
-
if (this._currentSpeech && !this._currentSpeech.interrupted && this._currentSpeech.allowInterruptions) {
|
|
538
|
-
this.logger.info(
|
|
539
|
-
{ "speech id": this._currentSpeech.id },
|
|
540
|
-
"speech interrupted by adaptive interruption detector"
|
|
541
|
-
);
|
|
542
|
-
(_b = this.realtimeSession) == null ? void 0 : _b.interrupt();
|
|
543
|
-
this._currentSpeech.interrupt();
|
|
544
|
-
}
|
|
545
|
-
}
|
|
546
497
|
onInterimTranscript(ev) {
|
|
547
498
|
if (this.llm instanceof import_llm.RealtimeModel && this.llm.capabilities.userTranscription) {
|
|
548
499
|
return;
|
|
@@ -1023,10 +974,12 @@ ${instructions}` : instructions,
|
|
|
1023
974
|
replyAbortController
|
|
1024
975
|
);
|
|
1025
976
|
tasks.push(llmTask);
|
|
1026
|
-
const [ttsTextInput, llmOutput] = llmGenData.textStream.tee();
|
|
1027
977
|
let ttsTask = null;
|
|
1028
978
|
let ttsStream = null;
|
|
979
|
+
let llmOutput;
|
|
1029
980
|
if (audioOutput) {
|
|
981
|
+
const [ttsTextInput, textOutput] = llmGenData.textStream.tee();
|
|
982
|
+
llmOutput = textOutput;
|
|
1030
983
|
[ttsTask, ttsStream] = (0, import_generation.performTTSInference)(
|
|
1031
984
|
(...args) => this.agent.ttsNode(...args),
|
|
1032
985
|
ttsTextInput,
|
|
@@ -1034,6 +987,8 @@ ${instructions}` : instructions,
|
|
|
1034
987
|
replyAbortController
|
|
1035
988
|
);
|
|
1036
989
|
tasks.push(ttsTask);
|
|
990
|
+
} else {
|
|
991
|
+
llmOutput = llmGenData.textStream;
|
|
1037
992
|
}
|
|
1038
993
|
await speechHandle.waitIfNotInterrupted([speechHandle._waitForScheduled()]);
|
|
1039
994
|
if (newMessage && speechHandle.scheduled) {
|
|
@@ -1080,9 +1035,15 @@ ${instructions}` : instructions,
|
|
|
1080
1035
|
} else {
|
|
1081
1036
|
textOut == null ? void 0 : textOut.firstTextFut.await.finally(onFirstFrame);
|
|
1082
1037
|
}
|
|
1083
|
-
const onToolExecutionStarted = (
|
|
1038
|
+
const onToolExecutionStarted = (f) => {
|
|
1039
|
+
speechHandle._itemAdded([f]);
|
|
1040
|
+
this.agent._chatCtx.items.push(f);
|
|
1041
|
+
this.agentSession._toolItemsAdded([f]);
|
|
1084
1042
|
};
|
|
1085
|
-
const onToolExecutionCompleted = (
|
|
1043
|
+
const onToolExecutionCompleted = (out) => {
|
|
1044
|
+
if (out.toolCallOutput) {
|
|
1045
|
+
speechHandle._itemAdded([out.toolCallOutput]);
|
|
1046
|
+
}
|
|
1086
1047
|
};
|
|
1087
1048
|
const [executeToolsTask, toolOutput] = (0, import_generation.performToolExecutions)({
|
|
1088
1049
|
session: this.agentSession,
|
|
@@ -1142,6 +1103,7 @@ ${instructions}` : instructions,
|
|
|
1142
1103
|
});
|
|
1143
1104
|
chatCtx.insert(message);
|
|
1144
1105
|
this.agent._chatCtx.insert(message);
|
|
1106
|
+
speechHandle._itemAdded([message]);
|
|
1145
1107
|
this.agentSession._conversationItemAdded(message);
|
|
1146
1108
|
}
|
|
1147
1109
|
if (this.agentSession.agentState === "speaking") {
|
|
@@ -1165,6 +1127,7 @@ ${instructions}` : instructions,
|
|
|
1165
1127
|
});
|
|
1166
1128
|
chatCtx.insert(message);
|
|
1167
1129
|
this.agent._chatCtx.insert(message);
|
|
1130
|
+
speechHandle._itemAdded([message]);
|
|
1168
1131
|
this.agentSession._conversationItemAdded(message);
|
|
1169
1132
|
this.logger.info(
|
|
1170
1133
|
{ speech_id: speechHandle.id, message: textOut.text },
|
|
@@ -1233,24 +1196,12 @@ ${instructions}` : instructions,
|
|
|
1233
1196
|
];
|
|
1234
1197
|
if (shouldGenerateToolReply) {
|
|
1235
1198
|
chatCtx.insert(toolMessages);
|
|
1236
|
-
|
|
1237
|
-
allowInterruptions: speechHandle.allowInterruptions,
|
|
1238
|
-
stepIndex: speechHandle._stepIndex + 1,
|
|
1239
|
-
parent: speechHandle
|
|
1240
|
-
});
|
|
1241
|
-
this.agentSession.emit(
|
|
1242
|
-
import_events.AgentSessionEventTypes.SpeechCreated,
|
|
1243
|
-
(0, import_events.createSpeechCreatedEvent)({
|
|
1244
|
-
userInitiated: false,
|
|
1245
|
-
source: "tool_response",
|
|
1246
|
-
speechHandle: handle
|
|
1247
|
-
})
|
|
1248
|
-
);
|
|
1199
|
+
speechHandle._numSteps += 1;
|
|
1249
1200
|
const respondToolChoice = draining || modelSettings.toolChoice === "none" ? "none" : "auto";
|
|
1250
1201
|
const toolResponseTask = this.createSpeechTask({
|
|
1251
1202
|
task: import_utils.Task.from(
|
|
1252
1203
|
() => this.pipelineReplyTask(
|
|
1253
|
-
|
|
1204
|
+
speechHandle,
|
|
1254
1205
|
chatCtx,
|
|
1255
1206
|
toolCtx,
|
|
1256
1207
|
{ toolChoice: respondToolChoice },
|
|
@@ -1260,11 +1211,11 @@ ${instructions}` : instructions,
|
|
|
1260
1211
|
toolMessages
|
|
1261
1212
|
)
|
|
1262
1213
|
),
|
|
1263
|
-
ownedSpeechHandle:
|
|
1214
|
+
ownedSpeechHandle: speechHandle,
|
|
1264
1215
|
name: "AgentActivity.pipelineReply"
|
|
1265
1216
|
});
|
|
1266
1217
|
toolResponseTask.finally(() => this.onPipelineReplyDone());
|
|
1267
|
-
this.scheduleSpeech(
|
|
1218
|
+
this.scheduleSpeech(speechHandle, import_speech_handle.SpeechHandle.SPEECH_PRIORITY_NORMAL, true);
|
|
1268
1219
|
} else if (functionToolsExecutedEvent.functionCallOutputs.length > 0) {
|
|
1269
1220
|
for (const msg of toolMessages) {
|
|
1270
1221
|
msg.createdAt = replyStartedAt;
|