@livekit/agents 0.1.0 → 0.3.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 +47 -0
- package/LICENSE +201 -0
- package/dist/audio.d.ts +9 -0
- package/dist/audio.d.ts.map +1 -0
- package/dist/audio.js +54 -0
- package/dist/audio.js.map +1 -0
- package/dist/cli.d.ts +12 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +102 -19
- package/dist/cli.js.map +1 -1
- package/dist/generator.d.ts +17 -6
- package/dist/generator.d.ts.map +1 -1
- package/dist/generator.js +20 -3
- package/dist/generator.js.map +1 -1
- package/dist/http_server.d.ts +1 -1
- package/dist/http_server.d.ts.map +1 -1
- package/dist/http_server.js +5 -3
- package/dist/http_server.js.map +1 -1
- package/dist/index.d.ts +14 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -3
- package/dist/index.js.map +1 -1
- package/dist/ipc/job_executor.d.ts +19 -0
- package/dist/ipc/job_executor.d.ts.map +1 -0
- package/dist/ipc/job_executor.js +8 -0
- package/dist/ipc/job_executor.js.map +1 -0
- package/dist/ipc/job_main.d.ts +7 -4
- package/dist/ipc/job_main.d.ts.map +1 -1
- package/dist/ipc/job_main.js +102 -59
- package/dist/ipc/job_main.js.map +1 -1
- package/dist/ipc/message.d.ts +41 -0
- package/dist/ipc/message.d.ts.map +1 -0
- package/dist/ipc/message.js +2 -0
- package/dist/ipc/message.js.map +1 -0
- package/dist/ipc/proc_job_executor.d.ts +15 -0
- package/dist/ipc/proc_job_executor.d.ts.map +1 -0
- package/dist/ipc/proc_job_executor.js +150 -0
- package/dist/ipc/proc_job_executor.js.map +1 -0
- package/dist/ipc/proc_pool.d.ts +26 -0
- package/dist/ipc/proc_pool.d.ts.map +1 -0
- package/dist/ipc/proc_pool.js +83 -0
- package/dist/ipc/proc_pool.js.map +1 -0
- package/dist/job.d.ts +100 -0
- package/dist/job.d.ts.map +1 -0
- package/dist/job.js +213 -0
- package/dist/job.js.map +1 -0
- package/dist/llm/function_context.d.ts +20 -0
- package/dist/llm/function_context.d.ts.map +1 -0
- package/dist/llm/function_context.js +37 -0
- package/dist/llm/function_context.js.map +1 -0
- package/dist/llm/index.d.ts +3 -0
- package/dist/llm/index.d.ts.map +1 -0
- package/dist/llm/index.js +6 -0
- package/dist/llm/index.js.map +1 -0
- package/dist/log.d.ts +12 -1
- package/dist/log.d.ts.map +1 -1
- package/dist/log.js +28 -11
- package/dist/log.js.map +1 -1
- package/dist/multimodal/agent_playout.d.ts +34 -0
- package/dist/multimodal/agent_playout.d.ts.map +1 -0
- package/dist/multimodal/agent_playout.js +221 -0
- package/dist/multimodal/agent_playout.js.map +1 -0
- package/dist/multimodal/index.d.ts +3 -0
- package/dist/multimodal/index.d.ts.map +1 -0
- package/dist/multimodal/index.js +6 -0
- package/dist/multimodal/index.js.map +1 -0
- package/dist/multimodal/multimodal_agent.d.ts +47 -0
- package/dist/multimodal/multimodal_agent.d.ts.map +1 -0
- package/dist/multimodal/multimodal_agent.js +331 -0
- package/dist/multimodal/multimodal_agent.js.map +1 -0
- package/dist/plugin.js +20 -7
- package/dist/plugin.js.map +1 -1
- package/dist/stt/index.d.ts +1 -1
- package/dist/stt/index.d.ts.map +1 -1
- package/dist/stt/index.js.map +1 -1
- package/dist/stt/stream_adapter.d.ts +2 -11
- package/dist/stt/stream_adapter.d.ts.map +1 -1
- package/dist/stt/stream_adapter.js +47 -33
- package/dist/stt/stream_adapter.js.map +1 -1
- package/dist/stt/stt.d.ts +27 -0
- package/dist/stt/stt.d.ts.map +1 -1
- package/dist/stt/stt.js +32 -5
- package/dist/stt/stt.js.map +1 -1
- package/dist/transcription.d.ts +22 -0
- package/dist/transcription.d.ts.map +1 -0
- package/dist/transcription.js +111 -0
- package/dist/transcription.js.map +1 -0
- package/dist/tts/stream_adapter.d.ts +4 -11
- package/dist/tts/stream_adapter.d.ts.map +1 -1
- package/dist/tts/stream_adapter.js +66 -32
- package/dist/tts/stream_adapter.js.map +1 -1
- package/dist/tts/tts.d.ts +10 -0
- package/dist/tts/tts.d.ts.map +1 -1
- package/dist/tts/tts.js +48 -7
- package/dist/tts/tts.js.map +1 -1
- package/dist/utils.d.ts +59 -0
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +212 -6
- package/dist/utils.js.map +1 -1
- package/dist/vad.d.ts +29 -0
- package/dist/vad.d.ts.map +1 -1
- package/dist/vad.js.map +1 -1
- package/dist/worker.d.ts +69 -50
- package/dist/worker.d.ts.map +1 -1
- package/dist/worker.js +414 -213
- package/dist/worker.js.map +1 -1
- package/package.json +12 -10
- package/src/audio.ts +62 -0
- package/src/cli.ts +108 -20
- package/src/generator.ts +27 -7
- package/src/http_server.ts +5 -0
- package/src/index.ts +15 -3
- package/src/ipc/job_executor.ts +25 -0
- package/src/ipc/job_main.ts +141 -61
- package/src/ipc/message.ts +39 -0
- package/src/ipc/proc_job_executor.ts +162 -0
- package/src/ipc/proc_pool.ts +109 -0
- package/src/job.ts +278 -0
- package/src/llm/function_context.ts +61 -0
- package/src/llm/index.ts +11 -0
- package/src/log.ts +40 -8
- package/src/multimodal/agent_playout.ts +254 -0
- package/src/multimodal/index.ts +5 -0
- package/src/multimodal/multimodal_agent.ts +428 -0
- package/src/stt/index.ts +1 -1
- package/src/stt/stream_adapter.ts +32 -32
- package/src/stt/stt.ts +27 -0
- package/src/transcription.ts +128 -0
- package/src/tts/stream_adapter.ts +32 -31
- package/src/tts/tts.ts +10 -0
- package/src/utils.ts +257 -3
- package/src/vad.ts +29 -0
- package/src/worker.ts +465 -172
- package/tsconfig.json +7 -1
- package/dist/ipc/job_process.d.ts +0 -22
- package/dist/ipc/job_process.d.ts.map +0 -1
- package/dist/ipc/job_process.js +0 -73
- package/dist/ipc/job_process.js.map +0 -1
- package/dist/ipc/protocol.d.ts +0 -40
- package/dist/ipc/protocol.d.ts.map +0 -1
- package/dist/ipc/protocol.js +0 -14
- package/dist/ipc/protocol.js.map +0 -1
- package/dist/job_context.d.ts +0 -16
- package/dist/job_context.d.ts.map +0 -1
- package/dist/job_context.js +0 -31
- package/dist/job_context.js.map +0 -1
- package/dist/job_request.d.ts +0 -42
- package/dist/job_request.d.ts.map +0 -1
- package/dist/job_request.js +0 -79
- package/dist/job_request.js.map +0 -1
- package/src/ipc/job_process.ts +0 -96
- package/src/ipc/protocol.ts +0 -51
- package/src/job_context.ts +0 -49
- package/src/job_request.ts +0 -118
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { Mutex, Queue } from '../utils.js';
|
|
2
|
+
import { ProcJobExecutor } from './proc_job_executor.js';
|
|
3
|
+
export class ProcPool {
|
|
4
|
+
constructor(agent, numIdleProcesses, initializeTimeout, closeTimeout) {
|
|
5
|
+
this.executors = [];
|
|
6
|
+
this.tasks = [];
|
|
7
|
+
this.started = false;
|
|
8
|
+
this.closed = false;
|
|
9
|
+
this.controller = new AbortController();
|
|
10
|
+
this.initMutex = new Mutex();
|
|
11
|
+
this.warmedProcQueue = new Queue();
|
|
12
|
+
this.agent = agent;
|
|
13
|
+
this.procMutex = new Mutex(numIdleProcesses);
|
|
14
|
+
this.initializeTimeout = initializeTimeout;
|
|
15
|
+
this.closeTimeout = closeTimeout;
|
|
16
|
+
}
|
|
17
|
+
get processes() {
|
|
18
|
+
return this.executors;
|
|
19
|
+
}
|
|
20
|
+
getByJobId(id) {
|
|
21
|
+
return this.executors.find((x) => x.runningJob && x.runningJob.job.id === id) || null;
|
|
22
|
+
}
|
|
23
|
+
async launchJob(info) {
|
|
24
|
+
const proc = await this.warmedProcQueue.get();
|
|
25
|
+
if (this.procUnlock) {
|
|
26
|
+
this.procUnlock();
|
|
27
|
+
this.procUnlock = undefined;
|
|
28
|
+
}
|
|
29
|
+
await proc.launchJob(info);
|
|
30
|
+
}
|
|
31
|
+
async procWatchTask() {
|
|
32
|
+
const proc = new ProcJobExecutor(this.agent, this.initializeTimeout, this.closeTimeout);
|
|
33
|
+
try {
|
|
34
|
+
this.executors.push(proc);
|
|
35
|
+
const unlock = await this.initMutex.lock();
|
|
36
|
+
if (this.closed) {
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
await proc.start();
|
|
40
|
+
try {
|
|
41
|
+
await proc.initialize();
|
|
42
|
+
await this.warmedProcQueue.put(proc);
|
|
43
|
+
}
|
|
44
|
+
catch (_a) {
|
|
45
|
+
if (this.procUnlock) {
|
|
46
|
+
this.procUnlock();
|
|
47
|
+
this.procUnlock = undefined;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
unlock();
|
|
51
|
+
await proc.join();
|
|
52
|
+
}
|
|
53
|
+
finally {
|
|
54
|
+
this.executors.splice(this.executors.indexOf(proc));
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
start() {
|
|
58
|
+
if (this.started) {
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
this.started = true;
|
|
62
|
+
this.run(this.controller.signal);
|
|
63
|
+
}
|
|
64
|
+
async run(signal) {
|
|
65
|
+
while (!signal.aborted) {
|
|
66
|
+
this.procUnlock = await this.procMutex.lock();
|
|
67
|
+
const task = this.procWatchTask();
|
|
68
|
+
this.tasks.push(task);
|
|
69
|
+
task.finally(() => this.tasks.splice(this.tasks.indexOf(task)));
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
async close() {
|
|
73
|
+
if (!this.started) {
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
this.closed = true;
|
|
77
|
+
this.controller.abort();
|
|
78
|
+
this.warmedProcQueue.items.forEach((e) => e.close());
|
|
79
|
+
this.executors.forEach((e) => e.close());
|
|
80
|
+
await Promise.allSettled(this.tasks);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=proc_pool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proc_pool.js","sourceRoot":"","sources":["../../src/ipc/proc_pool.ts"],"names":[],"mappings":"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"}
|
package/dist/job.d.ts
ADDED
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import type * as proto from '@livekit/protocol';
|
|
2
|
+
import type { E2EEOptions, LocalParticipant, RemoteParticipant, Room, RtcConfiguration } from '@livekit/rtc-node';
|
|
3
|
+
/** Which tracks, if any, should the agent automatically subscribe to? */
|
|
4
|
+
export declare enum AutoSubscribe {
|
|
5
|
+
SUBSCRIBE_ALL = 0,
|
|
6
|
+
SUBSCRIBE_NONE = 1,
|
|
7
|
+
VIDEO_ONLY = 2,
|
|
8
|
+
AUDIO_ONLY = 3
|
|
9
|
+
}
|
|
10
|
+
export type JobAcceptArguments = {
|
|
11
|
+
name: string;
|
|
12
|
+
identity: string;
|
|
13
|
+
metadata: string;
|
|
14
|
+
};
|
|
15
|
+
export type RunningJobInfo = {
|
|
16
|
+
acceptArguments: JobAcceptArguments;
|
|
17
|
+
job: proto.Job;
|
|
18
|
+
url: string;
|
|
19
|
+
token: string;
|
|
20
|
+
};
|
|
21
|
+
/** Attempted to add a function callback, but the function already exists. */
|
|
22
|
+
export declare class FunctionExistsError extends Error {
|
|
23
|
+
constructor(msg?: string);
|
|
24
|
+
}
|
|
25
|
+
/** The job and environment context as seen by the agent, accessible by the entrypoint function. */
|
|
26
|
+
export declare class JobContext {
|
|
27
|
+
#private;
|
|
28
|
+
/** @internal */
|
|
29
|
+
shutdownCallbacks: (() => Promise<void>)[];
|
|
30
|
+
constructor(proc: JobProcess, info: RunningJobInfo, room: Room, onConnect: () => void, onShutdown: (s: string) => void);
|
|
31
|
+
get proc(): JobProcess;
|
|
32
|
+
get job(): proto.Job;
|
|
33
|
+
/** @returns The room the agent was called into */
|
|
34
|
+
get room(): Room;
|
|
35
|
+
/** @returns The agent's participant if connected to the room, otherwise `undefined` */
|
|
36
|
+
get agent(): LocalParticipant | undefined;
|
|
37
|
+
/** Adds a promise to be awaited when {@link JobContext.shutdown | shutdown} is called. */
|
|
38
|
+
addShutdownCallback(callback: () => Promise<void>): void;
|
|
39
|
+
waitForParticipant(identity?: string): Promise<RemoteParticipant>;
|
|
40
|
+
/**
|
|
41
|
+
* Connects the agent to the room.
|
|
42
|
+
*
|
|
43
|
+
* @remarks
|
|
44
|
+
* It is recommended to run this command as early in the function as possible, as executing it
|
|
45
|
+
* later may cause noticeable delay between user and agent joins.
|
|
46
|
+
*
|
|
47
|
+
* @see {@link https://github.com/livekit/node-sdks/tree/main/packages/livekit-rtc#readme |
|
|
48
|
+
* @livekit/rtc-node} for more information about the parameters.
|
|
49
|
+
*/
|
|
50
|
+
connect(e2ee?: E2EEOptions, autoSubscribe?: AutoSubscribe, rtcConfig?: RtcConfiguration): Promise<void>;
|
|
51
|
+
/**
|
|
52
|
+
* Gracefully shuts down the job, and runs all shutdown promises.
|
|
53
|
+
*
|
|
54
|
+
* @param reason - Optional reason for shutdown
|
|
55
|
+
*/
|
|
56
|
+
shutdown(reason?: string): void;
|
|
57
|
+
/** @internal */
|
|
58
|
+
onParticipantConnected(p: RemoteParticipant): void;
|
|
59
|
+
/**
|
|
60
|
+
* Adds a promise to be awaited whenever a new participant joins the room.
|
|
61
|
+
*
|
|
62
|
+
* @throws {@link FunctionExistsError} if an entrypoint already exists
|
|
63
|
+
*/
|
|
64
|
+
addParticipantEntrypoint(callback: (job: JobContext, p: RemoteParticipant) => Promise<void>): void;
|
|
65
|
+
}
|
|
66
|
+
export declare class JobProcess {
|
|
67
|
+
#private;
|
|
68
|
+
get pid(): number;
|
|
69
|
+
get userData(): {
|
|
70
|
+
[id: string]: unknown;
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* A request sent by the server to spawn a new agent job.
|
|
75
|
+
*
|
|
76
|
+
* @remarks
|
|
77
|
+
* For most applications, this is best left to the default, which simply accepts the job and
|
|
78
|
+
* handles the logic inside the entrypoint function. This class is useful for vetting which
|
|
79
|
+
* requests should fill idle processes and which should be outright rejected.
|
|
80
|
+
*/
|
|
81
|
+
export declare class JobRequest {
|
|
82
|
+
#private;
|
|
83
|
+
/** @internal */
|
|
84
|
+
constructor(job: proto.Job, onReject: () => Promise<void>, onAccept: (args: JobAcceptArguments) => Promise<void>);
|
|
85
|
+
/** @returns The ID of the job, set by the LiveKit server */
|
|
86
|
+
get id(): string;
|
|
87
|
+
/** @see {@link https://www.npmjs.com/package/@livekit/protocol | @livekit/protocol} */
|
|
88
|
+
get job(): proto.Job;
|
|
89
|
+
/** @see {@link https://www.npmjs.com/package/@livekit/protocol | @livekit/protocol} */
|
|
90
|
+
get room(): proto.Room | undefined;
|
|
91
|
+
/** @see {@link https://www.npmjs.com/package/@livekit/protocol | @livekit/protocol} */
|
|
92
|
+
get publisher(): proto.ParticipantInfo | undefined;
|
|
93
|
+
/** @returns The agent's name, as set in {@link WorkerOptions} */
|
|
94
|
+
get agentName(): string;
|
|
95
|
+
/** Rejects the job. */
|
|
96
|
+
reject(): Promise<void>;
|
|
97
|
+
/** Accepts the job, launching it on an idle child process. */
|
|
98
|
+
accept(name?: string, identity?: string, metadata?: string): Promise<void>;
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=job.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"job.d.ts","sourceRoot":"","sources":["../src/job.ts"],"names":[],"mappings":"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"}
|
package/dist/job.js
ADDED
|
@@ -0,0 +1,213 @@
|
|
|
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 _JobContext_proc, _JobContext_info, _JobContext_room, _JobContext_onConnect, _JobContext_onShutdown, _JobContext_participantEntrypoints, _JobContext_participantTasks, _JobContext_logger, _JobProcess_pid, _JobProcess_userData, _JobRequest_job, _JobRequest_onReject, _JobRequest_onAccept;
|
|
13
|
+
import { ParticipantKind, RoomEvent, TrackKind } from '@livekit/rtc-node';
|
|
14
|
+
import { log } from './log.js';
|
|
15
|
+
/** Which tracks, if any, should the agent automatically subscribe to? */
|
|
16
|
+
export var AutoSubscribe;
|
|
17
|
+
(function (AutoSubscribe) {
|
|
18
|
+
AutoSubscribe[AutoSubscribe["SUBSCRIBE_ALL"] = 0] = "SUBSCRIBE_ALL";
|
|
19
|
+
AutoSubscribe[AutoSubscribe["SUBSCRIBE_NONE"] = 1] = "SUBSCRIBE_NONE";
|
|
20
|
+
AutoSubscribe[AutoSubscribe["VIDEO_ONLY"] = 2] = "VIDEO_ONLY";
|
|
21
|
+
AutoSubscribe[AutoSubscribe["AUDIO_ONLY"] = 3] = "AUDIO_ONLY";
|
|
22
|
+
})(AutoSubscribe || (AutoSubscribe = {}));
|
|
23
|
+
/** Attempted to add a function callback, but the function already exists. */
|
|
24
|
+
export class FunctionExistsError extends Error {
|
|
25
|
+
constructor(msg) {
|
|
26
|
+
super(msg);
|
|
27
|
+
Object.setPrototypeOf(this, new.target.prototype);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
/** The job and environment context as seen by the agent, accessible by the entrypoint function. */
|
|
31
|
+
export class JobContext {
|
|
32
|
+
constructor(proc, info, room, onConnect, onShutdown) {
|
|
33
|
+
_JobContext_proc.set(this, void 0);
|
|
34
|
+
_JobContext_info.set(this, void 0);
|
|
35
|
+
_JobContext_room.set(this, void 0);
|
|
36
|
+
_JobContext_onConnect.set(this, void 0);
|
|
37
|
+
_JobContext_onShutdown.set(this, void 0);
|
|
38
|
+
/** @internal */
|
|
39
|
+
this.shutdownCallbacks = [];
|
|
40
|
+
_JobContext_participantEntrypoints.set(this, []);
|
|
41
|
+
_JobContext_participantTasks.set(this, {});
|
|
42
|
+
_JobContext_logger.set(this, void 0);
|
|
43
|
+
__classPrivateFieldSet(this, _JobContext_proc, proc, "f");
|
|
44
|
+
__classPrivateFieldSet(this, _JobContext_info, info, "f");
|
|
45
|
+
__classPrivateFieldSet(this, _JobContext_room, room, "f");
|
|
46
|
+
__classPrivateFieldSet(this, _JobContext_onConnect, onConnect, "f");
|
|
47
|
+
__classPrivateFieldSet(this, _JobContext_onShutdown, onShutdown, "f");
|
|
48
|
+
this.onParticipantConnected = this.onParticipantConnected.bind(this);
|
|
49
|
+
__classPrivateFieldGet(this, _JobContext_room, "f").on(RoomEvent.ParticipantConnected, this.onParticipantConnected);
|
|
50
|
+
__classPrivateFieldSet(this, _JobContext_logger, log().child({ info: __classPrivateFieldGet(this, _JobContext_info, "f") }), "f");
|
|
51
|
+
}
|
|
52
|
+
get proc() {
|
|
53
|
+
return __classPrivateFieldGet(this, _JobContext_proc, "f");
|
|
54
|
+
}
|
|
55
|
+
get job() {
|
|
56
|
+
return __classPrivateFieldGet(this, _JobContext_info, "f").job;
|
|
57
|
+
}
|
|
58
|
+
/** @returns The room the agent was called into */
|
|
59
|
+
get room() {
|
|
60
|
+
return __classPrivateFieldGet(this, _JobContext_room, "f");
|
|
61
|
+
}
|
|
62
|
+
/** @returns The agent's participant if connected to the room, otherwise `undefined` */
|
|
63
|
+
get agent() {
|
|
64
|
+
return __classPrivateFieldGet(this, _JobContext_room, "f").localParticipant;
|
|
65
|
+
}
|
|
66
|
+
/** Adds a promise to be awaited when {@link JobContext.shutdown | shutdown} is called. */
|
|
67
|
+
addShutdownCallback(callback) {
|
|
68
|
+
this.shutdownCallbacks.push(callback);
|
|
69
|
+
}
|
|
70
|
+
async waitForParticipant(identity) {
|
|
71
|
+
if (!__classPrivateFieldGet(this, _JobContext_room, "f").isConnected) {
|
|
72
|
+
throw new Error('room is not connected');
|
|
73
|
+
}
|
|
74
|
+
console.log(__classPrivateFieldGet(this, _JobContext_room, "f").remoteParticipants.values());
|
|
75
|
+
for (const p of __classPrivateFieldGet(this, _JobContext_room, "f").remoteParticipants.values()) {
|
|
76
|
+
if ((!identity || p.identity === identity) && p.info.kind != ParticipantKind.AGENT) {
|
|
77
|
+
return p;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
return new Promise((resolve) => {
|
|
81
|
+
__classPrivateFieldGet(this, _JobContext_room, "f").once(RoomEvent.ParticipantConnected, () => {
|
|
82
|
+
resolve(__classPrivateFieldGet(this, _JobContext_room, "f").remoteParticipants.values().next().value);
|
|
83
|
+
});
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Connects the agent to the room.
|
|
88
|
+
*
|
|
89
|
+
* @remarks
|
|
90
|
+
* It is recommended to run this command as early in the function as possible, as executing it
|
|
91
|
+
* later may cause noticeable delay between user and agent joins.
|
|
92
|
+
*
|
|
93
|
+
* @see {@link https://github.com/livekit/node-sdks/tree/main/packages/livekit-rtc#readme |
|
|
94
|
+
* @livekit/rtc-node} for more information about the parameters.
|
|
95
|
+
*/
|
|
96
|
+
async connect(e2ee, autoSubscribe = AutoSubscribe.SUBSCRIBE_ALL, rtcConfig) {
|
|
97
|
+
const opts = {
|
|
98
|
+
e2ee,
|
|
99
|
+
autoSubscribe: autoSubscribe == AutoSubscribe.SUBSCRIBE_ALL,
|
|
100
|
+
rtcConfig,
|
|
101
|
+
dynacast: false,
|
|
102
|
+
};
|
|
103
|
+
await __classPrivateFieldGet(this, _JobContext_room, "f").connect(__classPrivateFieldGet(this, _JobContext_info, "f").url, __classPrivateFieldGet(this, _JobContext_info, "f").token, opts);
|
|
104
|
+
__classPrivateFieldGet(this, _JobContext_onConnect, "f").call(this);
|
|
105
|
+
__classPrivateFieldGet(this, _JobContext_room, "f").remoteParticipants.forEach(this.onParticipantConnected);
|
|
106
|
+
if ([AutoSubscribe.AUDIO_ONLY, AutoSubscribe.VIDEO_ONLY].includes(autoSubscribe)) {
|
|
107
|
+
__classPrivateFieldGet(this, _JobContext_room, "f").remoteParticipants.forEach((p) => {
|
|
108
|
+
p.trackPublications.forEach((pub) => {
|
|
109
|
+
if ((autoSubscribe === AutoSubscribe.AUDIO_ONLY && pub.kind === TrackKind.KIND_AUDIO) ||
|
|
110
|
+
(autoSubscribe === AutoSubscribe.VIDEO_ONLY && pub.kind === TrackKind.KIND_VIDEO)) {
|
|
111
|
+
pub.setSubscribed(true);
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Gracefully shuts down the job, and runs all shutdown promises.
|
|
119
|
+
*
|
|
120
|
+
* @param reason - Optional reason for shutdown
|
|
121
|
+
*/
|
|
122
|
+
shutdown(reason = '') {
|
|
123
|
+
__classPrivateFieldGet(this, _JobContext_onShutdown, "f").call(this, reason);
|
|
124
|
+
}
|
|
125
|
+
/** @internal */
|
|
126
|
+
onParticipantConnected(p) {
|
|
127
|
+
for (const callback of __classPrivateFieldGet(this, _JobContext_participantEntrypoints, "f")) {
|
|
128
|
+
if (p.identity in __classPrivateFieldGet(this, _JobContext_participantTasks, "f") &&
|
|
129
|
+
__classPrivateFieldGet(this, _JobContext_participantTasks, "f")[p.identity].callback == callback) {
|
|
130
|
+
__classPrivateFieldGet(this, _JobContext_logger, "f").warn('a participant has joined before a prior prticipant task matching the same identity has finished:', p.identity);
|
|
131
|
+
}
|
|
132
|
+
const result = callback(this, p);
|
|
133
|
+
result.finally(() => delete __classPrivateFieldGet(this, _JobContext_participantTasks, "f")[p.identity]);
|
|
134
|
+
__classPrivateFieldGet(this, _JobContext_participantTasks, "f")[p.identity] = { callback, result };
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Adds a promise to be awaited whenever a new participant joins the room.
|
|
139
|
+
*
|
|
140
|
+
* @throws {@link FunctionExistsError} if an entrypoint already exists
|
|
141
|
+
*/
|
|
142
|
+
addParticipantEntrypoint(callback) {
|
|
143
|
+
if (__classPrivateFieldGet(this, _JobContext_participantEntrypoints, "f").includes(callback)) {
|
|
144
|
+
throw new FunctionExistsError('entrypoints cannot be added more than once');
|
|
145
|
+
}
|
|
146
|
+
__classPrivateFieldGet(this, _JobContext_participantEntrypoints, "f").push(callback);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
_JobContext_proc = new WeakMap(), _JobContext_info = new WeakMap(), _JobContext_room = new WeakMap(), _JobContext_onConnect = new WeakMap(), _JobContext_onShutdown = new WeakMap(), _JobContext_participantEntrypoints = new WeakMap(), _JobContext_participantTasks = new WeakMap(), _JobContext_logger = new WeakMap();
|
|
150
|
+
export class JobProcess {
|
|
151
|
+
constructor() {
|
|
152
|
+
_JobProcess_pid.set(this, process.pid);
|
|
153
|
+
_JobProcess_userData.set(this, {});
|
|
154
|
+
}
|
|
155
|
+
get pid() {
|
|
156
|
+
return __classPrivateFieldGet(this, _JobProcess_pid, "f");
|
|
157
|
+
}
|
|
158
|
+
get userData() {
|
|
159
|
+
return __classPrivateFieldGet(this, _JobProcess_userData, "f");
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
_JobProcess_pid = new WeakMap(), _JobProcess_userData = new WeakMap();
|
|
163
|
+
/**
|
|
164
|
+
* A request sent by the server to spawn a new agent job.
|
|
165
|
+
*
|
|
166
|
+
* @remarks
|
|
167
|
+
* For most applications, this is best left to the default, which simply accepts the job and
|
|
168
|
+
* handles the logic inside the entrypoint function. This class is useful for vetting which
|
|
169
|
+
* requests should fill idle processes and which should be outright rejected.
|
|
170
|
+
*/
|
|
171
|
+
export class JobRequest {
|
|
172
|
+
/** @internal */
|
|
173
|
+
constructor(job, onReject, onAccept) {
|
|
174
|
+
_JobRequest_job.set(this, void 0);
|
|
175
|
+
_JobRequest_onReject.set(this, void 0);
|
|
176
|
+
_JobRequest_onAccept.set(this, void 0);
|
|
177
|
+
__classPrivateFieldSet(this, _JobRequest_job, job, "f");
|
|
178
|
+
__classPrivateFieldSet(this, _JobRequest_onReject, onReject, "f");
|
|
179
|
+
__classPrivateFieldSet(this, _JobRequest_onAccept, onAccept, "f");
|
|
180
|
+
}
|
|
181
|
+
/** @returns The ID of the job, set by the LiveKit server */
|
|
182
|
+
get id() {
|
|
183
|
+
return __classPrivateFieldGet(this, _JobRequest_job, "f").id;
|
|
184
|
+
}
|
|
185
|
+
/** @see {@link https://www.npmjs.com/package/@livekit/protocol | @livekit/protocol} */
|
|
186
|
+
get job() {
|
|
187
|
+
return __classPrivateFieldGet(this, _JobRequest_job, "f");
|
|
188
|
+
}
|
|
189
|
+
/** @see {@link https://www.npmjs.com/package/@livekit/protocol | @livekit/protocol} */
|
|
190
|
+
get room() {
|
|
191
|
+
return __classPrivateFieldGet(this, _JobRequest_job, "f").room;
|
|
192
|
+
}
|
|
193
|
+
/** @see {@link https://www.npmjs.com/package/@livekit/protocol | @livekit/protocol} */
|
|
194
|
+
get publisher() {
|
|
195
|
+
return __classPrivateFieldGet(this, _JobRequest_job, "f").participant;
|
|
196
|
+
}
|
|
197
|
+
/** @returns The agent's name, as set in {@link WorkerOptions} */
|
|
198
|
+
get agentName() {
|
|
199
|
+
return __classPrivateFieldGet(this, _JobRequest_job, "f").agentName;
|
|
200
|
+
}
|
|
201
|
+
/** Rejects the job. */
|
|
202
|
+
async reject() {
|
|
203
|
+
await __classPrivateFieldGet(this, _JobRequest_onReject, "f").call(this);
|
|
204
|
+
}
|
|
205
|
+
/** Accepts the job, launching it on an idle child process. */
|
|
206
|
+
async accept(name = '', identity = '', metadata = '') {
|
|
207
|
+
if (identity === '')
|
|
208
|
+
identity = 'agent-' + this.id;
|
|
209
|
+
__classPrivateFieldGet(this, _JobRequest_onAccept, "f").call(this, { name, identity, metadata });
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
_JobRequest_job = new WeakMap(), _JobRequest_onReject = new WeakMap(), _JobRequest_onAccept = new WeakMap();
|
|
213
|
+
//# sourceMappingURL=job.js.map
|
package/dist/job.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"job.js","sourceRoot":"","sources":["../src/job.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
/** Type reinforcement for the callable function's execute parameters. */
|
|
3
|
+
export type inferParameters<P extends z.ZodTypeAny> = z.infer<P>;
|
|
4
|
+
/** A definition for a function callable by the LLM. */
|
|
5
|
+
export interface CallableFunction<P extends z.ZodTypeAny = any, R = any> {
|
|
6
|
+
description: string;
|
|
7
|
+
parameters: P;
|
|
8
|
+
execute: (args: inferParameters<P>) => PromiseLike<R>;
|
|
9
|
+
}
|
|
10
|
+
/** An object containing callable functions and their names */
|
|
11
|
+
export type FunctionContext = {
|
|
12
|
+
[name: string]: CallableFunction;
|
|
13
|
+
};
|
|
14
|
+
/** @internal */
|
|
15
|
+
export declare const oaiParams: (p: z.AnyZodObject) => {
|
|
16
|
+
type: "object";
|
|
17
|
+
properties: Record<string, any>;
|
|
18
|
+
required_properties: string[];
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=function_context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"function_context.d.ts","sourceRoot":"","sources":["../../src/llm/function_context.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAOxB,yEAAyE;AACzE,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAEjE,uDAAuD;AACvD,MAAM,WAAW,gBAAgB,CAAC,CAAC,SAAS,CAAC,CAAC,UAAU,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG;IACrE,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,CAAC,CAAC;IACd,OAAO,EAAE,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC;CACvD;AAED,8DAA8D;AAC9D,MAAM,MAAM,eAAe,GAAG;IAC5B,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAAC;CAClC,CAAC;AAEF,gBAAgB;AAChB,eAAO,MAAM,SAAS;;;;CAkCrB,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
// SPDX-FileCopyrightText: 2024 LiveKit, Inc.
|
|
2
|
+
//
|
|
3
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
import { z } from 'zod';
|
|
5
|
+
/** @internal */
|
|
6
|
+
export const oaiParams = (p) => {
|
|
7
|
+
const properties = {};
|
|
8
|
+
const required_properties = [];
|
|
9
|
+
for (const key in p.shape) {
|
|
10
|
+
const field = p.shape[key];
|
|
11
|
+
const description = field._def.description || undefined;
|
|
12
|
+
let type;
|
|
13
|
+
let enumValues;
|
|
14
|
+
if (field instanceof z.ZodEnum) {
|
|
15
|
+
enumValues = field._def.values;
|
|
16
|
+
type = typeof enumValues[0];
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
type = field._def.typeName.toLowerCase();
|
|
20
|
+
}
|
|
21
|
+
properties[key] = {
|
|
22
|
+
type: type.includes('zod') ? type.substring(3) : type,
|
|
23
|
+
description,
|
|
24
|
+
enum: enumValues,
|
|
25
|
+
};
|
|
26
|
+
if (!field._def.defaultValue) {
|
|
27
|
+
required_properties.push(key);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
const type = 'object';
|
|
31
|
+
return {
|
|
32
|
+
type,
|
|
33
|
+
properties,
|
|
34
|
+
required_properties,
|
|
35
|
+
};
|
|
36
|
+
};
|
|
37
|
+
//# sourceMappingURL=function_context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"function_context.js","sourceRoot":"","sources":["../../src/llm/function_context.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,EAAE;AACF,sCAAsC;AACtC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAsBxB,gBAAgB;AAChB,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,CAAiB,EAAE,EAAE;IAC7C,MAAM,UAAU,GAAwB,EAAE,CAAC;IAC3C,MAAM,mBAAmB,GAAa,EAAE,CAAC;IAEzC,KAAK,MAAM,GAAG,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;QAC1B,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC3B,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,IAAI,SAAS,CAAC;QACxD,IAAI,IAAY,CAAC;QACjB,IAAI,UAA6B,CAAC;QAElC,IAAI,KAAK,YAAY,CAAC,CAAC,OAAO,EAAE,CAAC;YAC/B,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;YAC/B,IAAI,GAAG,OAAO,UAAW,CAAC,CAAC,CAAC,CAAC;QAC/B,CAAC;aAAM,CAAC;YACN,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;QAC3C,CAAC;QAED,UAAU,CAAC,GAAG,CAAC,GAAG;YAChB,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;YACrD,WAAW;YACX,IAAI,EAAE,UAAU;SACjB,CAAC;QAEF,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YAC7B,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IAED,MAAM,IAAI,GAAG,QAAiB,CAAC;IAC/B,OAAO;QACL,IAAI;QACJ,UAAU;QACV,mBAAmB;KACpB,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/llm/index.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,SAAS,EACV,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,eAAe,EAAE,SAAS,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/llm/index.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,EAAE;AACF,sCAAsC;AACtC,OAAO,EAIL,SAAS,GACV,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAsD,SAAS,EAAE,CAAC"}
|
package/dist/log.d.ts
CHANGED
|
@@ -1,2 +1,13 @@
|
|
|
1
|
-
|
|
1
|
+
import type { Logger } from 'pino';
|
|
2
|
+
/** @internal */
|
|
3
|
+
export type LoggerOptions = {
|
|
4
|
+
pretty: boolean;
|
|
5
|
+
level?: string;
|
|
6
|
+
};
|
|
7
|
+
/** @internal */
|
|
8
|
+
export declare let loggerOptions: LoggerOptions;
|
|
9
|
+
/** @internal */
|
|
10
|
+
export declare const log: () => Logger;
|
|
11
|
+
/** @internal */
|
|
12
|
+
export declare const initializeLogger: ({ pretty, level }: LoggerOptions) => void;
|
|
2
13
|
//# sourceMappingURL=log.d.ts.map
|
package/dist/log.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"log.d.ts","sourceRoot":"","sources":["../src/log.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"log.d.ts","sourceRoot":"","sources":["../src/log.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAGnC,gBAAgB;AAChB,MAAM,MAAM,aAAa,GAAG;IAC1B,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,gBAAgB;AAChB,eAAO,IAAI,aAAa,EAAE,aAAa,CAAC;AAKxC,gBAAgB;AAChB,eAAO,MAAM,GAAG,cAKf,CAAC;AAEF,gBAAgB;AAChB,eAAO,MAAM,gBAAgB,sBAAuB,aAAa,SAiBhE,CAAC"}
|
package/dist/log.js
CHANGED
|
@@ -1,13 +1,30 @@
|
|
|
1
|
-
// SPDX-FileCopyrightText: 2024 LiveKit, Inc.
|
|
2
|
-
//
|
|
3
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
4
1
|
import { pino } from 'pino';
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
2
|
+
/** @internal */
|
|
3
|
+
export let loggerOptions;
|
|
4
|
+
/** @internal */
|
|
5
|
+
let logger = undefined;
|
|
6
|
+
/** @internal */
|
|
7
|
+
export const log = () => {
|
|
8
|
+
if (!logger) {
|
|
9
|
+
throw new TypeError('logger not initialized. did you forget to run initializeLogger()?');
|
|
10
|
+
}
|
|
11
|
+
return logger;
|
|
12
|
+
};
|
|
13
|
+
/** @internal */
|
|
14
|
+
export const initializeLogger = ({ pretty, level }) => {
|
|
15
|
+
loggerOptions = { pretty, level };
|
|
16
|
+
logger = pino(pretty
|
|
17
|
+
? {
|
|
18
|
+
transport: {
|
|
19
|
+
target: 'pino-pretty',
|
|
20
|
+
options: {
|
|
21
|
+
colorize: true,
|
|
22
|
+
},
|
|
23
|
+
},
|
|
24
|
+
}
|
|
25
|
+
: {});
|
|
26
|
+
if (level) {
|
|
27
|
+
logger.level = level;
|
|
28
|
+
}
|
|
29
|
+
};
|
|
13
30
|
//# sourceMappingURL=log.js.map
|
package/dist/log.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"log.js","sourceRoot":"","sources":["../src/log.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"log.js","sourceRoot":"","sources":["../src/log.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAQ5B,gBAAgB;AAChB,MAAM,CAAC,IAAI,aAA4B,CAAC;AAExC,gBAAgB;AAChB,IAAI,MAAM,GAAuB,SAAS,CAAC;AAE3C,gBAAgB;AAChB,MAAM,CAAC,MAAM,GAAG,GAAG,GAAG,EAAE;IACtB,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,SAAS,CAAC,mEAAmE,CAAC,CAAC;IAC3F,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,gBAAgB;AAChB,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,EAAE,MAAM,EAAE,KAAK,EAAiB,EAAE,EAAE;IACnE,aAAa,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IAClC,MAAM,GAAG,IAAI,CACX,MAAM;QACJ,CAAC,CAAC;YACE,SAAS,EAAE;gBACT,MAAM,EAAE,aAAa;gBACrB,OAAO,EAAE;oBACP,QAAQ,EAAE,IAAI;iBACf;aACF;SACF;QACH,CAAC,CAAC,EAAE,CACP,CAAC;IACF,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;IACvB,CAAC;AACH,CAAC,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import type { AudioFrame } from '@livekit/rtc-node';
|
|
3
|
+
import { type AudioSource } from '@livekit/rtc-node';
|
|
4
|
+
import { EventEmitter } from 'events';
|
|
5
|
+
import type { TranscriptionForwarder } from '../transcription.js';
|
|
6
|
+
import { type AsyncIterableQueue, Future } from '../utils.js';
|
|
7
|
+
export declare const proto: {};
|
|
8
|
+
export declare class PlayoutHandle extends EventEmitter {
|
|
9
|
+
#private;
|
|
10
|
+
/** @internal */
|
|
11
|
+
transcriptionFwd: TranscriptionForwarder;
|
|
12
|
+
/** @internal */
|
|
13
|
+
doneFut: Future;
|
|
14
|
+
/** @internal */
|
|
15
|
+
intFut: Future;
|
|
16
|
+
/** @internal */
|
|
17
|
+
pushedDuration: number;
|
|
18
|
+
/** @internal */
|
|
19
|
+
totalPlayedTime: number | undefined;
|
|
20
|
+
constructor(audioSource: AudioSource, sampleRate: number, itemId: string, contentIndex: number, transcriptionFwd: TranscriptionForwarder);
|
|
21
|
+
get itemId(): string;
|
|
22
|
+
get audioSamples(): number;
|
|
23
|
+
get textChars(): number;
|
|
24
|
+
get contentIndex(): number;
|
|
25
|
+
get interrupted(): boolean;
|
|
26
|
+
get done(): boolean;
|
|
27
|
+
interrupt(): void;
|
|
28
|
+
}
|
|
29
|
+
export declare class AgentPlayout {
|
|
30
|
+
#private;
|
|
31
|
+
constructor(audioSource: AudioSource, sampleRate: number, numChannels: number, inFrameSize: number, outFrameSize: number);
|
|
32
|
+
play(itemId: string, contentIndex: number, transcriptionFwd: TranscriptionForwarder, textStream: AsyncIterableQueue<string>, audioStream: AsyncIterableQueue<AudioFrame>): PlayoutHandle;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=agent_playout.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent_playout.d.ts","sourceRoot":"","sources":["../../src/multimodal/agent_playout.ts"],"names":[],"mappings":";AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,KAAK,kBAAkB,EAAsB,MAAM,EAAoB,MAAM,aAAa,CAAC;AAEpG,eAAO,MAAM,KAAK,IAAK,CAAC;AAExB,qBAAa,aAAc,SAAQ,YAAY;;IAK7C,gBAAgB;IAChB,gBAAgB,EAAE,sBAAsB,CAAC;IACzC,gBAAgB;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB;IAChB,MAAM,EAAE,MAAM,CAAC;IAGf,gBAAgB;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB;IAChB,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;gBAGlC,WAAW,EAAE,WAAW,EACxB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,gBAAgB,EAAE,sBAAsB;IAe1C,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,IAAI,YAAY,IAAI,MAAM,CAMzB;IAED,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED,IAAI,IAAI,IAAI,OAAO,CAElB;IAED,SAAS;CAKV;AAED,qBAAa,YAAY;;gBAQrB,WAAW,EAAE,WAAW,EACxB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM;IAUtB,IAAI,CACF,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,gBAAgB,EAAE,sBAAsB,EACxC,UAAU,EAAE,kBAAkB,CAAC,MAAM,CAAC,EACtC,WAAW,EAAE,kBAAkB,CAAC,UAAU,CAAC,GAC1C,aAAa;CA4IjB"}
|