@livekit/agents 0.3.4 → 0.4.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/.turbo/turbo-build.log +1 -1
- package/CHANGELOG.md +40 -0
- package/dist/audio.js +17 -30
- package/dist/audio.js.map +1 -1
- package/dist/cli.js +3 -14
- package/dist/cli.js.map +1 -1
- package/dist/http_server.d.ts +1 -1
- package/dist/http_server.js +5 -9
- package/dist/http_server.js.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -2
- package/dist/index.js.map +1 -1
- package/dist/ipc/job_executor.js +3 -5
- package/dist/ipc/job_executor.js.map +1 -1
- package/dist/ipc/job_main.d.ts +1 -1
- package/dist/ipc/proc_job_executor.js +66 -80
- package/dist/ipc/proc_job_executor.js.map +1 -1
- package/dist/ipc/proc_pool.d.ts +3 -3
- package/dist/ipc/proc_pool.d.ts.map +1 -1
- package/dist/ipc/proc_pool.js +16 -11
- package/dist/ipc/proc_pool.js.map +1 -1
- package/dist/job.js +56 -73
- package/dist/job.js.map +1 -1
- package/dist/llm/chat_context.d.ts +66 -0
- package/dist/llm/chat_context.d.ts.map +1 -0
- package/dist/llm/chat_context.js +93 -0
- package/dist/llm/chat_context.js.map +1 -0
- package/dist/llm/function_context.d.ts +19 -1
- package/dist/llm/function_context.d.ts.map +1 -1
- package/dist/llm/function_context.js +54 -18
- package/dist/llm/function_context.js.map +1 -1
- package/dist/llm/function_context.test.d.ts +2 -0
- package/dist/llm/function_context.test.d.ts.map +1 -0
- package/dist/llm/function_context.test.js +218 -0
- package/dist/llm/function_context.test.js.map +1 -0
- package/dist/llm/index.d.ts +3 -2
- package/dist/llm/index.d.ts.map +1 -1
- package/dist/llm/index.js +3 -2
- package/dist/llm/index.js.map +1 -1
- package/dist/llm/llm.d.ts +53 -0
- package/dist/llm/llm.d.ts.map +1 -0
- package/dist/llm/llm.js +45 -0
- package/dist/llm/llm.js.map +1 -0
- package/dist/multimodal/agent_playout.d.ts +1 -1
- package/dist/multimodal/agent_playout.js +116 -153
- package/dist/multimodal/agent_playout.js.map +1 -1
- package/dist/multimodal/multimodal_agent.d.ts +4 -3
- package/dist/multimodal/multimodal_agent.d.ts.map +1 -1
- package/dist/multimodal/multimodal_agent.js +214 -237
- package/dist/multimodal/multimodal_agent.js.map +1 -1
- package/dist/pipeline/agent_output.d.ts +30 -0
- package/dist/pipeline/agent_output.d.ts.map +1 -0
- package/dist/pipeline/agent_output.js +155 -0
- package/dist/pipeline/agent_output.js.map +1 -0
- package/dist/pipeline/agent_playout.d.ts +38 -0
- package/dist/pipeline/agent_playout.d.ts.map +1 -0
- package/dist/pipeline/agent_playout.js +142 -0
- package/dist/pipeline/agent_playout.js.map +1 -0
- package/dist/pipeline/human_input.d.ts +28 -0
- package/dist/pipeline/human_input.d.ts.map +1 -0
- package/dist/pipeline/human_input.js +134 -0
- package/dist/pipeline/human_input.js.map +1 -0
- package/dist/pipeline/index.d.ts +2 -0
- package/dist/pipeline/index.d.ts.map +1 -0
- package/dist/pipeline/index.js +5 -0
- package/dist/pipeline/index.js.map +1 -0
- package/dist/pipeline/pipeline_agent.d.ts +134 -0
- package/dist/pipeline/pipeline_agent.d.ts.map +1 -0
- package/dist/pipeline/pipeline_agent.js +661 -0
- package/dist/pipeline/pipeline_agent.js.map +1 -0
- package/dist/pipeline/speech_handle.d.ts +27 -0
- package/dist/pipeline/speech_handle.d.ts.map +1 -0
- package/dist/pipeline/speech_handle.js +102 -0
- package/dist/pipeline/speech_handle.js.map +1 -0
- package/dist/plugin.js +7 -20
- package/dist/plugin.js.map +1 -1
- package/dist/stt/index.d.ts +1 -2
- package/dist/stt/index.d.ts.map +1 -1
- package/dist/stt/index.js +1 -2
- package/dist/stt/index.js.map +1 -1
- package/dist/stt/stt.d.ts +62 -24
- package/dist/stt/stt.d.ts.map +1 -1
- package/dist/stt/stt.js +77 -27
- package/dist/stt/stt.js.map +1 -1
- package/dist/tokenize/basic/basic.d.ts +16 -0
- package/dist/tokenize/basic/basic.d.ts.map +1 -0
- package/dist/tokenize/basic/basic.js +50 -0
- package/dist/tokenize/basic/basic.js.map +1 -0
- package/dist/tokenize/basic/hyphenator.d.ts +17 -0
- package/dist/tokenize/basic/hyphenator.d.ts.map +1 -0
- package/dist/tokenize/basic/hyphenator.js +420 -0
- package/dist/tokenize/basic/hyphenator.js.map +1 -0
- package/dist/tokenize/basic/index.d.ts +2 -0
- package/dist/tokenize/basic/index.d.ts.map +1 -0
- package/dist/tokenize/basic/index.js +5 -0
- package/dist/tokenize/basic/index.js.map +1 -0
- package/dist/tokenize/basic/paragraph.d.ts +5 -0
- package/dist/tokenize/basic/paragraph.d.ts.map +1 -0
- package/dist/tokenize/basic/paragraph.js +38 -0
- package/dist/tokenize/basic/paragraph.js.map +1 -0
- package/dist/tokenize/basic/sentence.d.ts +5 -0
- package/dist/tokenize/basic/sentence.d.ts.map +1 -0
- package/dist/tokenize/basic/sentence.js +60 -0
- package/dist/tokenize/basic/sentence.js.map +1 -0
- package/dist/tokenize/basic/word.d.ts +5 -0
- package/dist/tokenize/basic/word.d.ts.map +1 -0
- package/dist/tokenize/basic/word.js +23 -0
- package/dist/tokenize/basic/word.js.map +1 -0
- package/dist/tokenize/index.d.ts +5 -0
- package/dist/tokenize/index.d.ts.map +1 -0
- package/dist/tokenize/index.js +8 -0
- package/dist/tokenize/index.js.map +1 -0
- package/dist/tokenize/token_stream.d.ts +36 -0
- package/dist/tokenize/token_stream.d.ts.map +1 -0
- package/dist/tokenize/token_stream.js +136 -0
- package/dist/tokenize/token_stream.js.map +1 -0
- package/dist/tokenize/tokenizer.d.ts +55 -0
- package/dist/tokenize/tokenizer.d.ts.map +1 -0
- package/dist/tokenize/tokenizer.js +117 -0
- package/dist/tokenize/tokenizer.js.map +1 -0
- package/dist/transcription.js +78 -89
- package/dist/transcription.js.map +1 -1
- package/dist/tts/index.d.ts +1 -3
- package/dist/tts/index.d.ts.map +1 -1
- package/dist/tts/index.js +1 -3
- package/dist/tts/index.js.map +1 -1
- package/dist/tts/tts.d.ts +66 -37
- package/dist/tts/tts.d.ts.map +1 -1
- package/dist/tts/tts.js +79 -74
- package/dist/tts/tts.js.map +1 -1
- package/dist/utils.d.ts +21 -6
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +120 -76
- package/dist/utils.js.map +1 -1
- package/dist/vad.d.ts +43 -39
- package/dist/vad.d.ts.map +1 -1
- package/dist/vad.js +51 -4
- package/dist/vad.js.map +1 -1
- package/dist/worker.d.ts +1 -1
- package/dist/worker.js +257 -247
- package/dist/worker.js.map +1 -1
- package/package.json +4 -3
- package/src/index.ts +16 -2
- package/src/ipc/proc_pool.ts +4 -4
- package/src/llm/chat_context.ts +147 -0
- package/src/llm/function_context.test.ts +248 -0
- package/src/llm/function_context.ts +77 -18
- package/src/llm/index.ts +21 -2
- package/src/llm/llm.ts +102 -0
- package/src/multimodal/multimodal_agent.ts +19 -6
- package/src/pipeline/agent_output.ts +185 -0
- package/src/pipeline/agent_playout.ts +187 -0
- package/src/pipeline/human_input.ts +166 -0
- package/src/pipeline/index.ts +15 -0
- package/src/pipeline/pipeline_agent.ts +917 -0
- package/src/pipeline/speech_handle.ts +136 -0
- package/src/stt/index.ts +8 -2
- package/src/stt/stt.ts +98 -31
- package/src/tokenize/basic/basic.ts +73 -0
- package/src/tokenize/basic/hyphenator.ts +436 -0
- package/src/tokenize/basic/index.ts +5 -0
- package/src/tokenize/basic/paragraph.ts +43 -0
- package/src/tokenize/basic/sentence.ts +69 -0
- package/src/tokenize/basic/word.ts +27 -0
- package/src/tokenize/index.ts +16 -0
- package/src/tokenize/token_stream.ts +163 -0
- package/src/tokenize/tokenizer.ts +152 -0
- package/src/tts/index.ts +1 -20
- package/src/tts/tts.ts +110 -57
- package/src/utils.ts +95 -25
- package/src/vad.ts +86 -45
- package/tsconfig.tsbuildinfo +1 -1
- package/dist/stt/stream_adapter.d.ts +0 -19
- package/dist/stt/stream_adapter.d.ts.map +0 -1
- package/dist/stt/stream_adapter.js +0 -96
- package/dist/stt/stream_adapter.js.map +0 -1
- package/dist/tokenize.d.ts +0 -15
- package/dist/tokenize.d.ts.map +0 -1
- package/dist/tokenize.js +0 -12
- package/dist/tokenize.js.map +0 -1
- package/dist/tts/stream_adapter.d.ts +0 -19
- package/dist/tts/stream_adapter.d.ts.map +0 -1
- package/dist/tts/stream_adapter.js +0 -111
- package/dist/tts/stream_adapter.js.map +0 -1
- package/src/stt/stream_adapter.ts +0 -104
- package/src/tokenize.ts +0 -22
- package/src/tts/stream_adapter.ts +0 -93
|
@@ -1,22 +1,3 @@
|
|
|
1
|
-
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
2
|
-
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
3
|
-
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
4
|
-
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
5
|
-
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
6
|
-
};
|
|
7
|
-
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
8
|
-
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
9
|
-
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
10
|
-
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
11
|
-
};
|
|
12
|
-
var __asyncValues = (this && this.__asyncValues) || function (o) {
|
|
13
|
-
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
|
|
14
|
-
var m = o[Symbol.asyncIterator], i;
|
|
15
|
-
return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
|
|
16
|
-
function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
|
|
17
|
-
function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
|
|
18
|
-
};
|
|
19
|
-
var _MultimodalAgent_instances, _MultimodalAgent_participant, _MultimodalAgent_agentPublication, _MultimodalAgent_localTrackSid, _MultimodalAgent_localSource, _MultimodalAgent_agentPlayout, _MultimodalAgent_playingHandle, _MultimodalAgent_logger, _MultimodalAgent_session, _MultimodalAgent_fncCtx, _MultimodalAgent__started, _MultimodalAgent__pendingFunctionCalls, _MultimodalAgent__speaking, _MultimodalAgent_pendingFunctionCalls_get, _MultimodalAgent_pendingFunctionCalls_set, _MultimodalAgent_speaking_get, _MultimodalAgent_speaking_set, _MultimodalAgent_started_get, _MultimodalAgent_started_set, _MultimodalAgent_linkParticipant, _MultimodalAgent_subscribeToMicrophone, _MultimodalAgent_handleTrackSubscription, _MultimodalAgent_getLocalTrackSid, _MultimodalAgent_publishTranscription, _MultimodalAgent_updateState, _MultimodalAgent_setState;
|
|
20
1
|
import { AudioSource, AudioStream, LocalAudioTrack, RoomEvent, TrackPublishOptions, TrackSource, } from '@livekit/rtc-node';
|
|
21
2
|
import { EventEmitter } from 'node:events';
|
|
22
3
|
import { AudioByteStream } from '../audio.js';
|
|
@@ -39,311 +20,307 @@ export class RealtimeModel {
|
|
|
39
20
|
export const AGENT_STATE_ATTRIBUTE = 'lk.agent.state';
|
|
40
21
|
/** @beta */
|
|
41
22
|
export class MultimodalAgent extends EventEmitter {
|
|
42
|
-
|
|
23
|
+
model;
|
|
24
|
+
room = null;
|
|
25
|
+
linkedParticipant = null;
|
|
26
|
+
subscribedTrack = null;
|
|
27
|
+
readMicroTask = null;
|
|
28
|
+
constructor({ model, chatCtx, fncCtx, }) {
|
|
43
29
|
super();
|
|
44
|
-
_MultimodalAgent_instances.add(this);
|
|
45
|
-
this.room = null;
|
|
46
|
-
this.linkedParticipant = null;
|
|
47
|
-
this.subscribedTrack = null;
|
|
48
|
-
this.readMicroTask = null;
|
|
49
|
-
_MultimodalAgent_participant.set(this, null);
|
|
50
|
-
_MultimodalAgent_agentPublication.set(this, null);
|
|
51
|
-
_MultimodalAgent_localTrackSid.set(this, null);
|
|
52
|
-
_MultimodalAgent_localSource.set(this, null);
|
|
53
|
-
_MultimodalAgent_agentPlayout.set(this, null);
|
|
54
|
-
_MultimodalAgent_playingHandle.set(this, undefined);
|
|
55
|
-
_MultimodalAgent_logger.set(this, log());
|
|
56
|
-
_MultimodalAgent_session.set(this, null);
|
|
57
|
-
_MultimodalAgent_fncCtx.set(this, undefined);
|
|
58
|
-
_MultimodalAgent__started.set(this, false);
|
|
59
|
-
_MultimodalAgent__pendingFunctionCalls.set(this, new Set());
|
|
60
|
-
_MultimodalAgent__speaking.set(this, false);
|
|
61
30
|
this.model = model;
|
|
62
|
-
|
|
31
|
+
this.#chatCtx = chatCtx;
|
|
32
|
+
this.#fncCtx = fncCtx;
|
|
63
33
|
}
|
|
34
|
+
#participant = null;
|
|
35
|
+
#agentPublication = null;
|
|
36
|
+
#localTrackSid = null;
|
|
37
|
+
#localSource = null;
|
|
38
|
+
#agentPlayout = null;
|
|
39
|
+
#playingHandle = undefined;
|
|
40
|
+
#logger = log();
|
|
41
|
+
#session = null;
|
|
42
|
+
#fncCtx = undefined;
|
|
43
|
+
#chatCtx = undefined;
|
|
44
|
+
#_started = false;
|
|
45
|
+
#_pendingFunctionCalls = new Set();
|
|
46
|
+
#_speaking = false;
|
|
64
47
|
get fncCtx() {
|
|
65
|
-
return
|
|
48
|
+
return this.#fncCtx;
|
|
66
49
|
}
|
|
67
50
|
set fncCtx(ctx) {
|
|
68
|
-
|
|
69
|
-
if (
|
|
70
|
-
|
|
51
|
+
this.#fncCtx = ctx;
|
|
52
|
+
if (this.#session) {
|
|
53
|
+
this.#session.fncCtx = ctx;
|
|
71
54
|
}
|
|
72
55
|
}
|
|
56
|
+
get #pendingFunctionCalls() {
|
|
57
|
+
return this.#_pendingFunctionCalls;
|
|
58
|
+
}
|
|
59
|
+
set #pendingFunctionCalls(calls) {
|
|
60
|
+
this.#_pendingFunctionCalls = calls;
|
|
61
|
+
this.#updateState();
|
|
62
|
+
}
|
|
63
|
+
get #speaking() {
|
|
64
|
+
return this.#_speaking;
|
|
65
|
+
}
|
|
66
|
+
set #speaking(isSpeaking) {
|
|
67
|
+
this.#_speaking = isSpeaking;
|
|
68
|
+
this.#updateState();
|
|
69
|
+
}
|
|
70
|
+
get #started() {
|
|
71
|
+
return this.#_started;
|
|
72
|
+
}
|
|
73
|
+
set #started(started) {
|
|
74
|
+
this.#_started = started;
|
|
75
|
+
this.#updateState();
|
|
76
|
+
}
|
|
73
77
|
start(room, participant = null) {
|
|
74
78
|
return new Promise(async (resolve, reject) => {
|
|
75
|
-
|
|
76
|
-
if (__classPrivateFieldGet(this, _MultimodalAgent_instances, "a", _MultimodalAgent_started_get)) {
|
|
79
|
+
if (this.#started) {
|
|
77
80
|
reject(new Error('MultimodalAgent already started'));
|
|
78
81
|
}
|
|
79
|
-
|
|
82
|
+
this.#updateState();
|
|
80
83
|
room.on(RoomEvent.ParticipantConnected, (participant) => {
|
|
81
84
|
// automatically link to the first participant that connects, if not already linked
|
|
82
85
|
if (this.linkedParticipant) {
|
|
83
86
|
return;
|
|
84
87
|
}
|
|
85
|
-
|
|
88
|
+
this.#linkParticipant(participant.identity);
|
|
86
89
|
});
|
|
87
|
-
room.on(RoomEvent.TrackPublished, () => {
|
|
88
|
-
|
|
89
|
-
|
|
90
|
+
room.on(RoomEvent.TrackPublished, (trackPublication, participant) => {
|
|
91
|
+
if (this.linkedParticipant &&
|
|
92
|
+
participant.identity === this.linkedParticipant.identity &&
|
|
93
|
+
trackPublication.source === TrackSource.SOURCE_MICROPHONE &&
|
|
94
|
+
!trackPublication.subscribed) {
|
|
95
|
+
trackPublication.setSubscribed(true);
|
|
96
|
+
}
|
|
90
97
|
});
|
|
91
|
-
room.on(RoomEvent.TrackSubscribed,
|
|
98
|
+
room.on(RoomEvent.TrackSubscribed, this.#handleTrackSubscription.bind(this));
|
|
92
99
|
this.room = room;
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
100
|
+
this.#participant = participant;
|
|
101
|
+
this.#localSource = new AudioSource(this.model.sampleRate, this.model.numChannels);
|
|
102
|
+
this.#agentPlayout = new AgentPlayout(this.#localSource, this.model.sampleRate, this.model.numChannels, this.model.inFrameSize, this.model.outFrameSize);
|
|
96
103
|
const onPlayoutStarted = () => {
|
|
97
104
|
this.emit('agent_started_speaking');
|
|
98
|
-
|
|
105
|
+
this.#speaking = true;
|
|
99
106
|
};
|
|
100
107
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
101
108
|
const onPlayoutStopped = (interrupted) => {
|
|
102
109
|
this.emit('agent_stopped_speaking');
|
|
103
|
-
|
|
110
|
+
this.#speaking = false;
|
|
104
111
|
};
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
const track = LocalAudioTrack.createAudioTrack('assistant_voice',
|
|
112
|
+
this.#agentPlayout.on('playout_started', onPlayoutStarted);
|
|
113
|
+
this.#agentPlayout.on('playout_stopped', onPlayoutStopped);
|
|
114
|
+
const track = LocalAudioTrack.createAudioTrack('assistant_voice', this.#localSource);
|
|
108
115
|
const options = new TrackPublishOptions();
|
|
109
116
|
options.source = TrackSource.SOURCE_MICROPHONE;
|
|
110
|
-
|
|
111
|
-
if (!
|
|
112
|
-
|
|
117
|
+
this.#agentPublication = (await room.localParticipant?.publishTrack(track, options)) || null;
|
|
118
|
+
if (!this.#agentPublication) {
|
|
119
|
+
this.#logger.error('Failed to publish track');
|
|
113
120
|
reject(new Error('Failed to publish track'));
|
|
114
121
|
return;
|
|
115
122
|
}
|
|
116
|
-
await
|
|
123
|
+
await this.#agentPublication.waitForSubscription();
|
|
117
124
|
if (participant) {
|
|
118
125
|
if (typeof participant === 'string') {
|
|
119
|
-
|
|
126
|
+
this.#linkParticipant(participant);
|
|
120
127
|
}
|
|
121
128
|
else {
|
|
122
|
-
|
|
129
|
+
this.#linkParticipant(participant.identity);
|
|
123
130
|
}
|
|
124
131
|
}
|
|
125
132
|
else {
|
|
126
133
|
// No participant specified, try to find the first participant in the room
|
|
127
134
|
for (const participant of room.remoteParticipants.values()) {
|
|
128
|
-
|
|
135
|
+
this.#linkParticipant(participant.identity);
|
|
129
136
|
break;
|
|
130
137
|
}
|
|
131
138
|
}
|
|
132
|
-
|
|
133
|
-
|
|
139
|
+
this.#session = this.model.session({ fncCtx: this.#fncCtx, chatCtx: this.#chatCtx });
|
|
140
|
+
this.#started = true;
|
|
134
141
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
135
|
-
|
|
136
|
-
var _a;
|
|
142
|
+
this.#session.on('response_content_added', (message) => {
|
|
137
143
|
// openai.realtime.RealtimeContent
|
|
138
|
-
const trFwd = new BasicTranscriptionForwarder(this.room, this.room.localParticipant.identity,
|
|
139
|
-
const handle =
|
|
140
|
-
|
|
144
|
+
const trFwd = new BasicTranscriptionForwarder(this.room, this.room.localParticipant.identity, this.#getLocalTrackSid(), message.responseId);
|
|
145
|
+
const handle = this.#agentPlayout?.play(message.itemId, message.contentIndex, trFwd, message.textStream, message.audioStream);
|
|
146
|
+
this.#playingHandle = handle;
|
|
141
147
|
});
|
|
142
148
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
143
|
-
|
|
144
|
-
var _a, _b;
|
|
149
|
+
this.#session.on('input_speech_committed', (ev) => {
|
|
145
150
|
// openai.realtime.InputSpeechCommittedEvent
|
|
146
|
-
const participantIdentity =
|
|
147
|
-
const trackSid =
|
|
151
|
+
const participantIdentity = this.linkedParticipant?.identity;
|
|
152
|
+
const trackSid = this.subscribedTrack?.sid;
|
|
148
153
|
if (participantIdentity && trackSid) {
|
|
149
|
-
|
|
154
|
+
this.#publishTranscription(participantIdentity, trackSid, '…', false, ev.itemId);
|
|
150
155
|
}
|
|
151
156
|
else {
|
|
152
|
-
|
|
157
|
+
this.#logger.error('Participant or track not set');
|
|
153
158
|
}
|
|
154
159
|
});
|
|
155
160
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
156
|
-
|
|
157
|
-
var _a, _b;
|
|
161
|
+
this.#session.on('input_speech_transcription_completed', (ev) => {
|
|
158
162
|
// openai.realtime.InputSpeechTranscriptionCompletedEvent
|
|
159
163
|
const transcription = ev.transcript;
|
|
160
|
-
const participantIdentity =
|
|
161
|
-
const trackSid =
|
|
164
|
+
const participantIdentity = this.linkedParticipant?.identity;
|
|
165
|
+
const trackSid = this.subscribedTrack?.sid;
|
|
162
166
|
if (participantIdentity && trackSid) {
|
|
163
|
-
|
|
167
|
+
this.#publishTranscription(participantIdentity, trackSid, transcription, true, ev.itemId);
|
|
164
168
|
}
|
|
165
169
|
else {
|
|
166
|
-
|
|
170
|
+
this.#logger.error('Participant or track not set');
|
|
167
171
|
}
|
|
168
172
|
});
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
__classPrivateFieldSet(this, _MultimodalAgent_playingHandle, undefined, "f");
|
|
173
|
+
this.#session.on('input_speech_started', (ev) => {
|
|
174
|
+
if (this.#playingHandle && !this.#playingHandle.done) {
|
|
175
|
+
this.#playingHandle.interrupt();
|
|
176
|
+
this.#session.conversation.item.truncate(this.#playingHandle.itemId, this.#playingHandle.contentIndex, Math.floor((this.#playingHandle.audioSamples / 24000) * 1000));
|
|
177
|
+
this.#playingHandle = undefined;
|
|
175
178
|
}
|
|
176
|
-
const participantIdentity =
|
|
177
|
-
const trackSid =
|
|
179
|
+
const participantIdentity = this.linkedParticipant?.identity;
|
|
180
|
+
const trackSid = this.subscribedTrack?.sid;
|
|
178
181
|
if (participantIdentity && trackSid) {
|
|
179
|
-
|
|
182
|
+
this.#publishTranscription(participantIdentity, trackSid, '…', false, ev.itemId);
|
|
180
183
|
}
|
|
181
184
|
});
|
|
182
185
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
+
this.#session.on('function_call_started', (ev) => {
|
|
187
|
+
this.#pendingFunctionCalls.add(ev.callId);
|
|
188
|
+
this.#updateState();
|
|
186
189
|
});
|
|
187
190
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
+
this.#session.on('function_call_completed', (ev) => {
|
|
192
|
+
this.#pendingFunctionCalls.delete(ev.callId);
|
|
193
|
+
this.#updateState();
|
|
191
194
|
});
|
|
192
195
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
+
this.#session.on('function_call_failed', (ev) => {
|
|
197
|
+
this.#pendingFunctionCalls.delete(ev.callId);
|
|
198
|
+
this.#updateState();
|
|
196
199
|
});
|
|
197
|
-
resolve(
|
|
200
|
+
resolve(this.#session);
|
|
198
201
|
});
|
|
199
202
|
}
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
__classPrivateFieldSet(this, _MultimodalAgent__pendingFunctionCalls, calls, "f");
|
|
205
|
-
__classPrivateFieldGet(this, _MultimodalAgent_instances, "m", _MultimodalAgent_updateState).call(this);
|
|
206
|
-
}, _MultimodalAgent_speaking_get = function _MultimodalAgent_speaking_get() {
|
|
207
|
-
return __classPrivateFieldGet(this, _MultimodalAgent__speaking, "f");
|
|
208
|
-
}, _MultimodalAgent_speaking_set = function _MultimodalAgent_speaking_set(isSpeaking) {
|
|
209
|
-
__classPrivateFieldSet(this, _MultimodalAgent__speaking, isSpeaking, "f");
|
|
210
|
-
__classPrivateFieldGet(this, _MultimodalAgent_instances, "m", _MultimodalAgent_updateState).call(this);
|
|
211
|
-
}, _MultimodalAgent_started_get = function _MultimodalAgent_started_get() {
|
|
212
|
-
return __classPrivateFieldGet(this, _MultimodalAgent__started, "f");
|
|
213
|
-
}, _MultimodalAgent_started_set = function _MultimodalAgent_started_set(started) {
|
|
214
|
-
__classPrivateFieldSet(this, _MultimodalAgent__started, started, "f");
|
|
215
|
-
__classPrivateFieldGet(this, _MultimodalAgent_instances, "m", _MultimodalAgent_updateState).call(this);
|
|
216
|
-
}, _MultimodalAgent_linkParticipant = function _MultimodalAgent_linkParticipant(participantIdentity) {
|
|
217
|
-
if (!this.room) {
|
|
218
|
-
__classPrivateFieldGet(this, _MultimodalAgent_logger, "f").error('Room is not set');
|
|
219
|
-
return;
|
|
220
|
-
}
|
|
221
|
-
this.linkedParticipant = this.room.remoteParticipants.get(participantIdentity) || null;
|
|
222
|
-
if (!this.linkedParticipant) {
|
|
223
|
-
__classPrivateFieldGet(this, _MultimodalAgent_logger, "f").error(`Participant with identity ${participantIdentity} not found`);
|
|
224
|
-
return;
|
|
225
|
-
}
|
|
226
|
-
if (this.linkedParticipant.trackPublications.size > 0) {
|
|
227
|
-
__classPrivateFieldGet(this, _MultimodalAgent_instances, "m", _MultimodalAgent_subscribeToMicrophone).call(this);
|
|
228
|
-
}
|
|
229
|
-
// also check if already subscribed
|
|
230
|
-
for (const publication of this.linkedParticipant.trackPublications.values()) {
|
|
231
|
-
if (publication.source === TrackSource.SOURCE_MICROPHONE && publication.track) {
|
|
232
|
-
__classPrivateFieldGet(this, _MultimodalAgent_instances, "m", _MultimodalAgent_handleTrackSubscription).call(this, publication.track, publication, this.linkedParticipant);
|
|
233
|
-
break;
|
|
203
|
+
#linkParticipant(participantIdentity) {
|
|
204
|
+
if (!this.room) {
|
|
205
|
+
this.#logger.error('Room is not set');
|
|
206
|
+
return;
|
|
234
207
|
}
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
208
|
+
this.linkedParticipant = this.room.remoteParticipants.get(participantIdentity) || null;
|
|
209
|
+
if (!this.linkedParticipant) {
|
|
210
|
+
this.#logger.error(`Participant with identity ${participantIdentity} not found`);
|
|
211
|
+
return;
|
|
212
|
+
}
|
|
213
|
+
if (this.linkedParticipant.trackPublications.size > 0) {
|
|
214
|
+
this.#subscribeToMicrophone();
|
|
215
|
+
}
|
|
216
|
+
// also check if already subscribed
|
|
217
|
+
for (const publication of this.linkedParticipant.trackPublications.values()) {
|
|
218
|
+
if (publication.source === TrackSource.SOURCE_MICROPHONE && publication.track) {
|
|
219
|
+
this.#handleTrackSubscription(publication.track, publication, this.linkedParticipant);
|
|
220
|
+
break;
|
|
221
|
+
}
|
|
246
222
|
}
|
|
247
223
|
}
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
224
|
+
#subscribeToMicrophone() {
|
|
225
|
+
if (!this.linkedParticipant) {
|
|
226
|
+
this.#logger.error('Participant is not set');
|
|
227
|
+
return;
|
|
228
|
+
}
|
|
229
|
+
let microphonePublication = undefined;
|
|
230
|
+
for (const publication of this.linkedParticipant.trackPublications.values()) {
|
|
231
|
+
if (publication.source === TrackSource.SOURCE_MICROPHONE) {
|
|
232
|
+
microphonePublication = publication;
|
|
233
|
+
break;
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
if (!microphonePublication) {
|
|
237
|
+
return;
|
|
238
|
+
}
|
|
239
|
+
if (!microphonePublication.subscribed) {
|
|
240
|
+
microphonePublication.setSubscribed(true);
|
|
241
|
+
}
|
|
259
242
|
}
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
243
|
+
#handleTrackSubscription(track, publication, participant) {
|
|
244
|
+
if (publication.source !== TrackSource.SOURCE_MICROPHONE ||
|
|
245
|
+
participant.identity !== this.linkedParticipant?.identity) {
|
|
246
|
+
return;
|
|
247
|
+
}
|
|
248
|
+
const readAudioStreamTask = async (audioStream) => {
|
|
249
|
+
const bstream = new AudioByteStream(this.model.sampleRate, this.model.numChannels, this.model.inFrameSize);
|
|
250
|
+
for await (const frame of audioStream) {
|
|
268
251
|
const audioData = frame.data;
|
|
269
252
|
for (const frame of bstream.write(audioData.buffer)) {
|
|
270
|
-
|
|
253
|
+
this.#session.inputAudioBuffer.append(frame);
|
|
271
254
|
}
|
|
272
255
|
}
|
|
256
|
+
};
|
|
257
|
+
this.subscribedTrack = track;
|
|
258
|
+
if (this.readMicroTask) {
|
|
259
|
+
this.readMicroTask.cancel();
|
|
273
260
|
}
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
let cancel;
|
|
287
|
-
this.readMicroTask = {
|
|
288
|
-
promise: new Promise((resolve, reject) => {
|
|
289
|
-
cancel = () => {
|
|
290
|
-
reject(new Error('Task cancelled'));
|
|
291
|
-
};
|
|
292
|
-
readAudioStreamTask(new AudioStream(track, this.model.sampleRate, this.model.numChannels))
|
|
293
|
-
.then(resolve)
|
|
294
|
-
.catch(reject);
|
|
295
|
-
}),
|
|
296
|
-
cancel: () => cancel(),
|
|
297
|
-
};
|
|
298
|
-
}, _MultimodalAgent_getLocalTrackSid = function _MultimodalAgent_getLocalTrackSid() {
|
|
299
|
-
var _a;
|
|
300
|
-
if (!__classPrivateFieldGet(this, _MultimodalAgent_localTrackSid, "f") && this.room && this.room.localParticipant) {
|
|
301
|
-
__classPrivateFieldSet(this, _MultimodalAgent_localTrackSid, findMicroTrackId(this.room, (_a = this.room.localParticipant) === null || _a === void 0 ? void 0 : _a.identity), "f");
|
|
302
|
-
}
|
|
303
|
-
return __classPrivateFieldGet(this, _MultimodalAgent_localTrackSid, "f");
|
|
304
|
-
}, _MultimodalAgent_publishTranscription = function _MultimodalAgent_publishTranscription(participantIdentity, trackSid, text, isFinal, id) {
|
|
305
|
-
var _a;
|
|
306
|
-
__classPrivateFieldGet(this, _MultimodalAgent_logger, "f").debug(`Publishing transcription ${participantIdentity} ${trackSid} ${text} ${isFinal} ${id}`);
|
|
307
|
-
if (!((_a = this.room) === null || _a === void 0 ? void 0 : _a.localParticipant)) {
|
|
308
|
-
__classPrivateFieldGet(this, _MultimodalAgent_logger, "f").error('Room or local participant not set');
|
|
309
|
-
return;
|
|
261
|
+
let cancel;
|
|
262
|
+
this.readMicroTask = {
|
|
263
|
+
promise: new Promise((resolve, reject) => {
|
|
264
|
+
cancel = () => {
|
|
265
|
+
reject(new Error('Task cancelled'));
|
|
266
|
+
};
|
|
267
|
+
readAudioStreamTask(new AudioStream(track, this.model.sampleRate, this.model.numChannels))
|
|
268
|
+
.then(resolve)
|
|
269
|
+
.catch(reject);
|
|
270
|
+
}),
|
|
271
|
+
cancel: () => cancel(),
|
|
272
|
+
};
|
|
310
273
|
}
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
text,
|
|
317
|
-
final: isFinal,
|
|
318
|
-
id,
|
|
319
|
-
startTime: BigInt(0),
|
|
320
|
-
endTime: BigInt(0),
|
|
321
|
-
language: '',
|
|
322
|
-
},
|
|
323
|
-
],
|
|
324
|
-
});
|
|
325
|
-
}, _MultimodalAgent_updateState = function _MultimodalAgent_updateState() {
|
|
326
|
-
let newState = 'initializing';
|
|
327
|
-
if (__classPrivateFieldGet(this, _MultimodalAgent_instances, "a", _MultimodalAgent_pendingFunctionCalls_get).size > 0) {
|
|
328
|
-
newState = 'thinking';
|
|
274
|
+
#getLocalTrackSid() {
|
|
275
|
+
if (!this.#localTrackSid && this.room && this.room.localParticipant) {
|
|
276
|
+
this.#localTrackSid = findMicroTrackId(this.room, this.room.localParticipant?.identity);
|
|
277
|
+
}
|
|
278
|
+
return this.#localTrackSid;
|
|
329
279
|
}
|
|
330
|
-
|
|
331
|
-
|
|
280
|
+
#publishTranscription(participantIdentity, trackSid, text, isFinal, id) {
|
|
281
|
+
this.#logger.debug(`Publishing transcription ${participantIdentity} ${trackSid} ${text} ${isFinal} ${id}`);
|
|
282
|
+
if (!this.room?.localParticipant) {
|
|
283
|
+
this.#logger.error('Room or local participant not set');
|
|
284
|
+
return;
|
|
285
|
+
}
|
|
286
|
+
this.room.localParticipant.publishTranscription({
|
|
287
|
+
participantIdentity,
|
|
288
|
+
trackSid,
|
|
289
|
+
segments: [
|
|
290
|
+
{
|
|
291
|
+
text,
|
|
292
|
+
final: isFinal,
|
|
293
|
+
id,
|
|
294
|
+
startTime: BigInt(0),
|
|
295
|
+
endTime: BigInt(0),
|
|
296
|
+
language: '',
|
|
297
|
+
},
|
|
298
|
+
],
|
|
299
|
+
});
|
|
332
300
|
}
|
|
333
|
-
|
|
334
|
-
newState = '
|
|
301
|
+
#updateState() {
|
|
302
|
+
let newState = 'initializing';
|
|
303
|
+
if (this.#pendingFunctionCalls.size > 0) {
|
|
304
|
+
newState = 'thinking';
|
|
305
|
+
}
|
|
306
|
+
else if (this.#speaking) {
|
|
307
|
+
newState = 'speaking';
|
|
308
|
+
}
|
|
309
|
+
else if (this.#started) {
|
|
310
|
+
newState = 'listening';
|
|
311
|
+
}
|
|
312
|
+
this.#setState(newState);
|
|
335
313
|
}
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
}
|
|
345
|
-
__classPrivateFieldGet(this, _MultimodalAgent_logger, "f").debug(`${AGENT_STATE_ATTRIBUTE}: ${currentState} ->${state}`);
|
|
314
|
+
#setState(state) {
|
|
315
|
+
if (this.room?.isConnected && this.room.localParticipant) {
|
|
316
|
+
const currentState = this.room.localParticipant.attributes[AGENT_STATE_ATTRIBUTE];
|
|
317
|
+
if (currentState !== state) {
|
|
318
|
+
this.room.localParticipant.setAttributes({
|
|
319
|
+
[AGENT_STATE_ATTRIBUTE]: state,
|
|
320
|
+
});
|
|
321
|
+
this.#logger.debug(`${AGENT_STATE_ATTRIBUTE}: ${currentState} ->${state}`);
|
|
322
|
+
}
|
|
346
323
|
}
|
|
347
324
|
}
|
|
348
|
-
}
|
|
325
|
+
}
|
|
349
326
|
//# sourceMappingURL=multimodal_agent.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"multimodal_agent.js","sourceRoot":"","sources":["../../src/multimodal/multimodal_agent.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"multimodal_agent.js","sourceRoot":"","sources":["../../src/multimodal/multimodal_agent.ts"],"names":[],"mappings":"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"}
|