@livekit/agents 0.1.0 → 0.2.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 +21 -0
- package/LICENSE +201 -0
- package/dist/audio.d.ts +12 -0
- package/dist/audio.d.ts.map +1 -0
- package/dist/audio.js +37 -0
- package/dist/audio.js.map +1 -0
- package/dist/cli.d.ts +11 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +68 -8
- package/dist/cli.js.map +1 -1
- package/dist/generator.d.ts +12 -6
- package/dist/generator.d.ts.map +1 -1
- package/dist/generator.js +9 -3
- package/dist/generator.js.map +1 -1
- package/dist/http_server.d.ts +1 -1
- package/dist/http_server.js +0 -3
- package/dist/http_server.js.map +1 -1
- package/dist/index.d.ts +12 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -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 +96 -61
- 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 +82 -0
- package/dist/ipc/proc_pool.js.map +1 -0
- package/dist/job.d.ts +99 -0
- package/dist/job.d.ts.map +1 -0
- package/dist/job.js +197 -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/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/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 +32 -0
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +114 -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 +67 -50
- package/dist/worker.d.ts.map +1 -1
- package/dist/worker.js +379 -214
- package/dist/worker.js.map +1 -1
- package/package.json +9 -9
- package/src/audio.ts +62 -0
- package/src/cli.ts +72 -8
- package/src/generator.ts +13 -7
- package/src/index.ts +13 -3
- package/src/ipc/job_executor.ts +25 -0
- package/src/ipc/job_main.ts +134 -61
- package/src/ipc/message.ts +39 -0
- package/src/ipc/proc_job_executor.ts +162 -0
- package/src/ipc/proc_pool.ts +108 -0
- package/src/job.ts +258 -0
- package/src/llm/function_context.ts +61 -0
- package/src/llm/index.ts +11 -0
- package/src/log.ts +40 -8
- package/src/stt/index.ts +1 -1
- package/src/stt/stream_adapter.ts +32 -32
- package/src/stt/stt.ts +27 -0
- package/src/tts/stream_adapter.ts +32 -31
- package/src/tts/tts.ts +10 -0
- package/src/utils.ts +125 -3
- package/src/vad.ts +29 -0
- package/src/worker.ts +419 -170
- package/tsconfig.json +6 -0
- 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
package/dist/utils.js
CHANGED
|
@@ -1,7 +1,25 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
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 _Mutex_locking, _Mutex_locks, _Mutex_limit, _Queue_items, _Queue_limit, _Queue_events, _Future_await;
|
|
13
|
+
import { AudioFrame, TrackSource } from '@livekit/rtc-node';
|
|
14
|
+
import { EventEmitter, once } from 'events';
|
|
15
|
+
/**
|
|
16
|
+
* Merge one or more {@link AudioFrame}s into a single one.
|
|
17
|
+
*
|
|
18
|
+
* @param buffer Either an {@link AudioFrame} or a list thereof
|
|
19
|
+
* @throws
|
|
20
|
+
* {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypeError
|
|
21
|
+
* | TypeError} if sample rate or channel count are mismatched
|
|
22
|
+
*/
|
|
5
23
|
export const mergeFrames = (buffer) => {
|
|
6
24
|
if (Array.isArray(buffer)) {
|
|
7
25
|
buffer = buffer;
|
|
@@ -11,7 +29,7 @@ export const mergeFrames = (buffer) => {
|
|
|
11
29
|
const sampleRate = buffer[0].sampleRate;
|
|
12
30
|
const channels = buffer[0].channels;
|
|
13
31
|
let samplesPerChannel = 0;
|
|
14
|
-
let data = new
|
|
32
|
+
let data = new Int16Array();
|
|
15
33
|
for (const frame of buffer) {
|
|
16
34
|
if (frame.sampleRate !== sampleRate) {
|
|
17
35
|
throw new TypeError('sample rate mismatch');
|
|
@@ -19,11 +37,101 @@ export const mergeFrames = (buffer) => {
|
|
|
19
37
|
if (frame.channels !== channels) {
|
|
20
38
|
throw new TypeError('channel count mismatch');
|
|
21
39
|
}
|
|
22
|
-
data = new
|
|
40
|
+
data = new Int16Array([...data, ...frame.data]);
|
|
23
41
|
samplesPerChannel += frame.samplesPerChannel;
|
|
24
42
|
}
|
|
25
43
|
return new AudioFrame(data, sampleRate, channels, samplesPerChannel);
|
|
26
44
|
}
|
|
27
45
|
return buffer;
|
|
28
46
|
};
|
|
47
|
+
export const findMicroTrackId = (room, identity) => {
|
|
48
|
+
var _a;
|
|
49
|
+
let p = room.remoteParticipants.get(identity);
|
|
50
|
+
if (identity === ((_a = room.localParticipant) === null || _a === void 0 ? void 0 : _a.identity)) {
|
|
51
|
+
p = room.localParticipant;
|
|
52
|
+
}
|
|
53
|
+
if (!p) {
|
|
54
|
+
throw new Error(`participant ${identity} not found`);
|
|
55
|
+
}
|
|
56
|
+
// find first micro track
|
|
57
|
+
let trackId;
|
|
58
|
+
p.trackPublications.forEach((track) => {
|
|
59
|
+
if (track.source === TrackSource.SOURCE_MICROPHONE) {
|
|
60
|
+
trackId = track.sid;
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
if (!trackId) {
|
|
65
|
+
throw new Error(`participant ${identity} does not have a microphone track`);
|
|
66
|
+
}
|
|
67
|
+
return trackId;
|
|
68
|
+
};
|
|
69
|
+
/** @internal */
|
|
70
|
+
export class Mutex {
|
|
71
|
+
constructor(limit = 1) {
|
|
72
|
+
_Mutex_locking.set(this, void 0);
|
|
73
|
+
_Mutex_locks.set(this, void 0);
|
|
74
|
+
_Mutex_limit.set(this, void 0);
|
|
75
|
+
__classPrivateFieldSet(this, _Mutex_locking, Promise.resolve(), "f");
|
|
76
|
+
__classPrivateFieldSet(this, _Mutex_locks, 0, "f");
|
|
77
|
+
__classPrivateFieldSet(this, _Mutex_limit, limit, "f");
|
|
78
|
+
}
|
|
79
|
+
isLocked() {
|
|
80
|
+
return __classPrivateFieldGet(this, _Mutex_locks, "f") >= __classPrivateFieldGet(this, _Mutex_limit, "f");
|
|
81
|
+
}
|
|
82
|
+
async lock() {
|
|
83
|
+
__classPrivateFieldSet(this, _Mutex_locks, __classPrivateFieldGet(this, _Mutex_locks, "f") + 1, "f");
|
|
84
|
+
let unlockNext;
|
|
85
|
+
const willLock = new Promise((resolve) => (unlockNext = () => {
|
|
86
|
+
__classPrivateFieldSet(this, _Mutex_locks, __classPrivateFieldGet(this, _Mutex_locks, "f") - 1, "f");
|
|
87
|
+
resolve();
|
|
88
|
+
}));
|
|
89
|
+
const willUnlock = __classPrivateFieldGet(this, _Mutex_locking, "f").then(() => unlockNext);
|
|
90
|
+
__classPrivateFieldSet(this, _Mutex_locking, __classPrivateFieldGet(this, _Mutex_locking, "f").then(() => willLock), "f");
|
|
91
|
+
return willUnlock;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
_Mutex_locking = new WeakMap(), _Mutex_locks = new WeakMap(), _Mutex_limit = new WeakMap();
|
|
95
|
+
/** @internal */
|
|
96
|
+
export class Queue {
|
|
97
|
+
constructor(limit) {
|
|
98
|
+
_Queue_items.set(this, []);
|
|
99
|
+
_Queue_limit.set(this, void 0);
|
|
100
|
+
_Queue_events.set(this, new EventEmitter());
|
|
101
|
+
__classPrivateFieldSet(this, _Queue_limit, limit, "f");
|
|
102
|
+
}
|
|
103
|
+
async get() {
|
|
104
|
+
if (__classPrivateFieldGet(this, _Queue_items, "f").length === 0) {
|
|
105
|
+
await once(__classPrivateFieldGet(this, _Queue_events, "f"), 'put');
|
|
106
|
+
}
|
|
107
|
+
const item = __classPrivateFieldGet(this, _Queue_items, "f").shift();
|
|
108
|
+
__classPrivateFieldGet(this, _Queue_events, "f").emit('get');
|
|
109
|
+
return item;
|
|
110
|
+
}
|
|
111
|
+
async put(item) {
|
|
112
|
+
if (__classPrivateFieldGet(this, _Queue_limit, "f") && __classPrivateFieldGet(this, _Queue_items, "f").length >= __classPrivateFieldGet(this, _Queue_limit, "f")) {
|
|
113
|
+
await once(__classPrivateFieldGet(this, _Queue_events, "f"), 'get');
|
|
114
|
+
}
|
|
115
|
+
__classPrivateFieldGet(this, _Queue_items, "f").push(item);
|
|
116
|
+
__classPrivateFieldGet(this, _Queue_events, "f").emit('put');
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
_Queue_items = new WeakMap(), _Queue_limit = new WeakMap(), _Queue_events = new WeakMap();
|
|
120
|
+
/** @internal */
|
|
121
|
+
export class Future {
|
|
122
|
+
constructor() {
|
|
123
|
+
_Future_await.set(this, new Promise((resolve, reject) => {
|
|
124
|
+
this.resolve = resolve;
|
|
125
|
+
this.reject = reject;
|
|
126
|
+
}));
|
|
127
|
+
}
|
|
128
|
+
get await() {
|
|
129
|
+
return __classPrivateFieldGet(this, _Future_await, "f");
|
|
130
|
+
}
|
|
131
|
+
resolve() { }
|
|
132
|
+
reject(_) {
|
|
133
|
+
_;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
_Future_await = new WeakMap();
|
|
29
137
|
//# sourceMappingURL=utils.js.map
|
package/dist/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;;;;;;;;;;;AASA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAK5C;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,MAAmB,EAAc,EAAE;IAC7D,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,MAAM,GAAG,MAAsB,CAAC;QAChC,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,SAAS,CAAC,iBAAiB,CAAC,CAAC;QACzC,CAAC;QAED,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;QACxC,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;QACpC,IAAI,iBAAiB,GAAG,CAAC,CAAC;QAC1B,IAAI,IAAI,GAAG,IAAI,UAAU,EAAE,CAAC;QAE5B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,IAAI,KAAK,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;gBACpC,MAAM,IAAI,SAAS,CAAC,sBAAsB,CAAC,CAAC;YAC9C,CAAC;YAED,IAAI,KAAK,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;gBAChC,MAAM,IAAI,SAAS,CAAC,wBAAwB,CAAC,CAAC;YAChD,CAAC;YAED,IAAI,GAAG,IAAI,UAAU,CAAC,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;YAChD,iBAAiB,IAAI,KAAK,CAAC,iBAAiB,CAAC;QAC/C,CAAC;QAED,OAAO,IAAI,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,iBAAiB,CAAC,CAAC;IACvE,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,IAAU,EAAE,QAAgB,EAAU,EAAE;;IACvE,IAAI,CAAC,GAAqD,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAEhG,IAAI,QAAQ,MAAK,MAAA,IAAI,CAAC,gBAAgB,0CAAE,QAAQ,CAAA,EAAE,CAAC;QACjD,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC;IAC5B,CAAC;IAED,IAAI,CAAC,CAAC,EAAE,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,eAAe,QAAQ,YAAY,CAAC,CAAC;IACvD,CAAC;IAED,yBAAyB;IACzB,IAAI,OAA2B,CAAC;IAChC,CAAC,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,KAAuB,EAAE,EAAE;QACtD,IAAI,KAAK,CAAC,MAAM,KAAK,WAAW,CAAC,iBAAiB,EAAE,CAAC;YACnD,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC;YACpB,OAAO;QACT,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,eAAe,QAAQ,mCAAmC,CAAC,CAAC;IAC9E,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF,gBAAgB;AAChB,MAAM,OAAO,KAAK;IAKhB,YAAY,KAAK,GAAG,CAAC;QAJrB,iCAAwB;QACxB,+BAAe;QACf,+BAAe;QAGb,uBAAA,IAAI,kBAAY,OAAO,CAAC,OAAO,EAAE,MAAA,CAAC;QAClC,uBAAA,IAAI,gBAAU,CAAC,MAAA,CAAC;QAChB,uBAAA,IAAI,gBAAU,KAAK,MAAA,CAAC;IACtB,CAAC;IAED,QAAQ;QACN,OAAO,uBAAA,IAAI,oBAAO,IAAI,uBAAA,IAAI,oBAAO,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,IAAI;QACR,6FAAe,CAAC,MAAA,CAAC;QAEjB,IAAI,UAAsB,CAAC;QAE3B,MAAM,QAAQ,GAAG,IAAI,OAAO,CAC1B,CAAC,OAAO,EAAE,EAAE,CACV,CAAC,UAAU,GAAG,GAAG,EAAE;YACjB,6FAAe,CAAC,MAAA,CAAC;YACjB,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC,CACL,CAAC;QAEF,MAAM,UAAU,GAAG,uBAAA,IAAI,sBAAS,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC;QACxD,uBAAA,IAAI,kBAAY,uBAAA,IAAI,sBAAS,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAA,CAAC;QACnD,OAAO,UAAU,CAAC;IACpB,CAAC;CACF;;AAED,gBAAgB;AAChB,MAAM,OAAO,KAAK;IAKhB,YAAY,KAAc;QAJ1B,uBAAc,EAAE,EAAC;QACjB,+BAAgB;QAChB,wBAAU,IAAI,YAAY,EAAE,EAAC;QAG3B,uBAAA,IAAI,gBAAU,KAAK,MAAA,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,GAAG;QACP,IAAI,uBAAA,IAAI,oBAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,CAAC,uBAAA,IAAI,qBAAQ,EAAE,KAAK,CAAC,CAAC;QAClC,CAAC;QACD,MAAM,IAAI,GAAG,uBAAA,IAAI,oBAAO,CAAC,KAAK,EAAG,CAAC;QAClC,uBAAA,IAAI,qBAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,IAAO;QACf,IAAI,uBAAA,IAAI,oBAAO,IAAI,uBAAA,IAAI,oBAAO,CAAC,MAAM,IAAI,uBAAA,IAAI,oBAAO,EAAE,CAAC;YACrD,MAAM,IAAI,CAAC,uBAAA,IAAI,qBAAQ,EAAE,KAAK,CAAC,CAAC;QAClC,CAAC;QACD,uBAAA,IAAI,oBAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvB,uBAAA,IAAI,qBAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;CACF;;AAED,gBAAgB;AAChB,MAAM,OAAO,MAAM;IAAnB;QACE,wBAAS,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAA0B,EAAE,EAAE;YACjE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;YACvB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACvB,CAAC,CAAC,EAAC;IASL,CAAC;IAPC,IAAI,KAAK;QACP,OAAO,uBAAA,IAAI,qBAAO,CAAC;IACrB,CAAC;IACD,OAAO,KAAI,CAAC;IACZ,MAAM,CAAC,CAAQ;QACb,CAAC,CAAC;IACJ,CAAC;CACF"}
|
package/dist/vad.d.ts
CHANGED
|
@@ -6,16 +6,45 @@ export declare enum VADEventType {
|
|
|
6
6
|
}
|
|
7
7
|
export interface VADEvent {
|
|
8
8
|
type: VADEventType;
|
|
9
|
+
/**
|
|
10
|
+
* Index of the samples of the event (when the event was fired)
|
|
11
|
+
*/
|
|
9
12
|
samplesIndex: number;
|
|
13
|
+
/**
|
|
14
|
+
* Duration of speech, in seconds
|
|
15
|
+
*/
|
|
10
16
|
duration: number;
|
|
11
17
|
speech: AudioFrame[];
|
|
12
18
|
}
|
|
13
19
|
export declare abstract class VAD {
|
|
20
|
+
/**
|
|
21
|
+
* Returns a {@link VADStream} that can be used to push audio frames and receive VAD events.
|
|
22
|
+
*
|
|
23
|
+
* @param options
|
|
24
|
+
*/
|
|
14
25
|
abstract stream({ minSpeakingDuration, minSilenceDuration, paddingDuration, sampleRate, maxBufferedSpeech, }: {
|
|
26
|
+
/**
|
|
27
|
+
* Minimum duration of speech required to trigger a {@link VADEventType.START_OF_SPEECH} event
|
|
28
|
+
*/
|
|
15
29
|
minSpeakingDuration: number;
|
|
30
|
+
/**
|
|
31
|
+
* Milliseconds to wait before separating speech chunk.
|
|
32
|
+
* Not always precise, generally rounded to the nearest 40ms depending on VAD implementation
|
|
33
|
+
*/
|
|
16
34
|
minSilenceDuration: number;
|
|
35
|
+
/**
|
|
36
|
+
* Number of frames to pad the start and end of speech with
|
|
37
|
+
*/
|
|
17
38
|
paddingDuration: number;
|
|
39
|
+
/**
|
|
40
|
+
* Sample rate of inference/processing
|
|
41
|
+
*/
|
|
18
42
|
sampleRate: number;
|
|
43
|
+
/**
|
|
44
|
+
* Number of seconds the buffer may keep until {@link VADEventType.END_OF_SPEECH} is triggered.
|
|
45
|
+
* It is recommended to set this to a positive value, as zero may OOM if the user doesn't stop
|
|
46
|
+
* speaking.
|
|
47
|
+
*/
|
|
19
48
|
maxBufferedSpeech: number;
|
|
20
49
|
}): VADStream;
|
|
21
50
|
}
|
package/dist/vad.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vad.d.ts","sourceRoot":"","sources":["../src/vad.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,oBAAY,YAAY;IACtB,eAAe,IAAI;IACnB,QAAQ,IAAI;IACZ,aAAa,IAAI;CAClB;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,YAAY,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,UAAU,EAAE,CAAC;CACtB;AAED,8BAAsB,GAAG;IACvB,QAAQ,CAAC,MAAM,CAAC,EACd,mBAAmB,EACnB,kBAAkB,EAClB,eAAe,EACf,UAAU,EACV,iBAAiB,GAClB,EAAE;QACD,mBAAmB,EAAE,MAAM,CAAC;QAC5B,kBAAkB,EAAE,MAAM,CAAC;QAC3B,eAAe,EAAE,MAAM,CAAC;QACxB,UAAU,EAAE,MAAM,CAAC;QACnB,iBAAiB,EAAE,MAAM,CAAC;KAC3B,GAAG,SAAS;CACd;AAED,8BAAsB,SAAU,YAAW,gBAAgB,CAAC,QAAQ,CAAC;IACnE,QAAQ,CAAC,SAAS,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAC3C,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAC5C,QAAQ,CAAC,IAAI,IAAI,cAAc,CAAC,QAAQ,CAAC;IACzC,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,SAAS;CAG/B"}
|
|
1
|
+
{"version":3,"file":"vad.d.ts","sourceRoot":"","sources":["../src/vad.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,oBAAY,YAAY;IACtB,eAAe,IAAI;IACnB,QAAQ,IAAI;IACZ,aAAa,IAAI;CAClB;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,YAAY,CAAC;IACnB;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,UAAU,EAAE,CAAC;CACtB;AAED,8BAAsB,GAAG;IACvB;;;;OAIG;IACH,QAAQ,CAAC,MAAM,CAAC,EACd,mBAAmB,EACnB,kBAAkB,EAClB,eAAe,EACf,UAAU,EACV,iBAAiB,GAClB,EAAE;QACD;;WAEG;QACH,mBAAmB,EAAE,MAAM,CAAC;QAC5B;;;WAGG;QACH,kBAAkB,EAAE,MAAM,CAAC;QAC3B;;WAEG;QACH,eAAe,EAAE,MAAM,CAAC;QACxB;;WAEG;QACH,UAAU,EAAE,MAAM,CAAC;QACnB;;;;WAIG;QACH,iBAAiB,EAAE,MAAM,CAAC;KAC3B,GAAG,SAAS;CACd;AAED,8BAAsB,SAAU,YAAW,gBAAgB,CAAC,QAAQ,CAAC;IACnE,QAAQ,CAAC,SAAS,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAC3C,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAC5C,QAAQ,CAAC,IAAI,IAAI,cAAc,CAAC,QAAQ,CAAC;IACzC,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,SAAS;CAG/B"}
|
package/dist/vad.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vad.js","sourceRoot":"","sources":["../src/vad.ts"],"names":[],"mappings":"AAKA,MAAM,CAAN,IAAY,YAIX;AAJD,WAAY,YAAY;IACtB,qEAAmB,CAAA;IACnB,uDAAY,CAAA;IACZ,iEAAiB,CAAA;AACnB,CAAC,EAJW,YAAY,KAAZ,YAAY,QAIvB;
|
|
1
|
+
{"version":3,"file":"vad.js","sourceRoot":"","sources":["../src/vad.ts"],"names":[],"mappings":"AAKA,MAAM,CAAN,IAAY,YAIX;AAJD,WAAY,YAAY;IACtB,qEAAmB,CAAA;IACnB,uDAAY,CAAA;IACZ,iEAAiB,CAAA;AACnB,CAAC,EAJW,YAAY,KAAZ,YAAY,QAIvB;AAeD,MAAM,OAAgB,GAAG;CAqCxB;AAED,MAAM,OAAgB,SAAS;IAI7B,CAAC,MAAM,CAAC,QAAQ,CAAC;QACf,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
|
package/dist/worker.d.ts
CHANGED
|
@@ -1,24 +1,48 @@
|
|
|
1
|
-
/// <reference types="node"
|
|
2
|
-
import
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import type { TrackSource } from '@livekit/protocol';
|
|
3
|
+
import { JobType } from '@livekit/protocol';
|
|
3
4
|
import { EventEmitter } from 'events';
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
5
|
+
import type { JobProcess, RunningJobInfo } from './job.js';
|
|
6
|
+
import { JobRequest } from './job.js';
|
|
7
|
+
/** Necessary credentials not provided and not found in an appropriate environmental variable. */
|
|
8
|
+
export declare class MissingCredentialsError extends Error {
|
|
9
|
+
constructor(msg?: string);
|
|
10
|
+
}
|
|
11
|
+
/** Worker did not run as expected. */
|
|
12
|
+
export declare class WorkerError extends Error {
|
|
13
|
+
constructor(msg?: string);
|
|
14
|
+
}
|
|
15
|
+
/** @internal */
|
|
16
|
+
export declare const defaultInitializeProcessFunc: (_: JobProcess) => JobProcess;
|
|
17
|
+
/** Participant permissions to pass to every agent spun up by this worker. */
|
|
18
|
+
export declare class WorkerPermissions {
|
|
10
19
|
canPublish: boolean;
|
|
11
20
|
canSubscribe: boolean;
|
|
12
21
|
canPublishData: boolean;
|
|
13
22
|
canUpdateMetadata: boolean;
|
|
23
|
+
canPublishSources: TrackSource[];
|
|
14
24
|
hidden: boolean;
|
|
15
|
-
constructor(canPublish?: boolean, canSubscribe?: boolean, canPublishData?: boolean, canUpdateMetadata?: boolean, hidden?: boolean);
|
|
25
|
+
constructor(canPublish?: boolean, canSubscribe?: boolean, canPublishData?: boolean, canUpdateMetadata?: boolean, canPublishSources?: TrackSource[], hidden?: boolean);
|
|
16
26
|
}
|
|
27
|
+
/**
|
|
28
|
+
* Data class describing worker behaviour.
|
|
29
|
+
*
|
|
30
|
+
* @remarks
|
|
31
|
+
* The Agents framework provides sane worker defaults, and works out-of-the-box with no tweaking
|
|
32
|
+
* necessary. The only mandatory parameter is `agent`, which points to the entry function.
|
|
33
|
+
*
|
|
34
|
+
* This class is mostly useful in conjunction with {@link cli.runApp}.
|
|
35
|
+
*/
|
|
17
36
|
export declare class WorkerOptions {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
37
|
+
agent: string;
|
|
38
|
+
requestFunc: (job: JobRequest) => Promise<void>;
|
|
39
|
+
loadFunc: () => Promise<number>;
|
|
40
|
+
loadThreshold: number;
|
|
41
|
+
numIdleProcesses: number;
|
|
42
|
+
shutdownProcessTimeout: number;
|
|
43
|
+
initializeProcessTimeout: number;
|
|
21
44
|
permissions: WorkerPermissions;
|
|
45
|
+
agentName: string;
|
|
22
46
|
workerType: JobType;
|
|
23
47
|
maxRetry: number;
|
|
24
48
|
wsURL: string;
|
|
@@ -26,11 +50,24 @@ export declare class WorkerOptions {
|
|
|
26
50
|
apiSecret?: string;
|
|
27
51
|
host: string;
|
|
28
52
|
port: number;
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
53
|
+
logLevel: string;
|
|
54
|
+
/** @param options */
|
|
55
|
+
constructor({ agent, requestFunc, loadFunc, loadThreshold, numIdleProcesses, shutdownProcessTimeout, initializeProcessTimeout, permissions, agentName, workerType, maxRetry, wsURL, apiKey, apiSecret, host, port, logLevel, }: {
|
|
56
|
+
/**
|
|
57
|
+
* Path to a file that has {@link Agent} as a default export, dynamically imported later for
|
|
58
|
+
* entrypoint and prewarm functions
|
|
59
|
+
*/
|
|
60
|
+
agent: string;
|
|
61
|
+
requestFunc?: (job: JobRequest) => Promise<void>;
|
|
62
|
+
/** Called to determine the current load of the worker. Should return a value between 0 and 1. */
|
|
63
|
+
loadFunc?: () => Promise<number>;
|
|
64
|
+
/** When the load exceeds this threshold, the worker will be marked as unavailable. */
|
|
65
|
+
loadThreshold?: number;
|
|
66
|
+
numIdleProcesses?: number;
|
|
67
|
+
shutdownProcessTimeout?: number;
|
|
68
|
+
initializeProcessTimeout?: number;
|
|
33
69
|
permissions?: WorkerPermissions;
|
|
70
|
+
agentName?: string;
|
|
34
71
|
workerType?: JobType;
|
|
35
72
|
maxRetry?: number;
|
|
36
73
|
wsURL?: string;
|
|
@@ -38,47 +75,27 @@ export declare class WorkerOptions {
|
|
|
38
75
|
apiSecret?: string;
|
|
39
76
|
host?: string;
|
|
40
77
|
port?: number;
|
|
78
|
+
logLevel?: string;
|
|
41
79
|
});
|
|
42
80
|
}
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
declare class PendingAssignment {
|
|
53
|
-
promise: Promise<AssignmentPair>;
|
|
54
|
-
resolve(arg: AssignmentPair): void;
|
|
55
|
-
}
|
|
81
|
+
/**
|
|
82
|
+
* Central orchestrator for all processes and job requests.
|
|
83
|
+
*
|
|
84
|
+
* @remarks
|
|
85
|
+
* For most usecases, Worker should not be initialized or handled directly; you should instead call
|
|
86
|
+
* for its creation through {@link cli.runApp}. This could, however, be useful in situations where
|
|
87
|
+
* you don't have access to a command line, such as a headless program, or one that uses Agents
|
|
88
|
+
* behind a wrapper.
|
|
89
|
+
*/
|
|
56
90
|
export declare class Worker {
|
|
57
91
|
#private;
|
|
58
|
-
opts: WorkerOptions;
|
|
59
|
-
session: WebSocket | undefined;
|
|
60
|
-
closed: boolean;
|
|
61
|
-
httpServer: HTTPServer;
|
|
62
|
-
logger: import("pino").default.Logger<never>;
|
|
63
92
|
event: EventEmitter<[never]>;
|
|
64
|
-
pending: {
|
|
65
|
-
[id: string]: {
|
|
66
|
-
value: PendingAssignment;
|
|
67
|
-
};
|
|
68
|
-
};
|
|
69
|
-
processes: {
|
|
70
|
-
[id: string]: {
|
|
71
|
-
proc: JobProcess;
|
|
72
|
-
activeJob: ActiveJob;
|
|
73
|
-
};
|
|
74
|
-
};
|
|
75
93
|
constructor(opts: WorkerOptions);
|
|
76
|
-
get id(): string;
|
|
77
94
|
run(): Promise<void>;
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
95
|
+
get id(): string;
|
|
96
|
+
get activeJobs(): RunningJobInfo[];
|
|
97
|
+
drain(timeout?: number): Promise<void>;
|
|
98
|
+
simulateJob(roomName: string, participantIdentity?: string): Promise<void>;
|
|
81
99
|
close(): Promise<void>;
|
|
82
100
|
}
|
|
83
|
-
export {};
|
|
84
101
|
//# sourceMappingURL=worker.d.ts.map
|
package/dist/worker.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../src/worker.ts"],"names":[],"mappings":";AAGA,OAAO,
|
|
1
|
+
{"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../src/worker.ts"],"names":[],"mappings":";AAGA,OAAO,KAAK,EAIV,WAAW,EACZ,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAEL,OAAO,EAKR,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAMtC,OAAO,KAAK,EAAsB,UAAU,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC/E,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAStC,iGAAiG;AACjG,qBAAa,uBAAwB,SAAQ,KAAK;gBACpC,GAAG,CAAC,EAAE,MAAM;CAIzB;AAED,sCAAsC;AACtC,qBAAa,WAAY,SAAQ,KAAK;gBACxB,GAAG,CAAC,EAAE,MAAM;CAIzB;AAED,gBAAgB;AAChB,eAAO,MAAM,4BAA4B,MAAO,UAAU,eAAM,CAAC;AA+BjE,6EAA6E;AAC7E,qBAAa,iBAAiB;IAC5B,UAAU,EAAE,OAAO,CAAC;IACpB,YAAY,EAAE,OAAO,CAAC;IACtB,cAAc,EAAE,OAAO,CAAC;IACxB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,iBAAiB,EAAE,WAAW,EAAE,CAAC;IACjC,MAAM,EAAE,OAAO,CAAC;gBAGd,UAAU,UAAO,EACjB,YAAY,UAAO,EACnB,cAAc,UAAO,EACrB,iBAAiB,UAAO,EACxB,iBAAiB,GAAE,WAAW,EAAO,EACrC,MAAM,UAAQ;CASjB;AAED;;;;;;;;GAQG;AACH,qBAAa,aAAa;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,QAAQ,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IAChC,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,wBAAwB,EAAE,MAAM,CAAC;IACjC,WAAW,EAAE,iBAAiB,CAAC;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IAEjB,qBAAqB;gBACT,EACV,KAAK,EACL,WAAgC,EAChC,QAAyB,EACzB,aAAoB,EACpB,gBAAoB,EACpB,sBAAkC,EAClC,wBAAoC,EACpC,WAAqC,EACrC,SAAc,EACd,UAA4B,EAC5B,QAAiC,EACjC,KAA6B,EAC7B,MAAkB,EAClB,SAAqB,EACrB,IAAkB,EAClB,IAAW,EACX,QAAiB,GAClB,EAAE;QACD;;;WAGG;QACH,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;QACjD,iGAAiG;QACjG,QAAQ,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;QACjC,sFAAsF;QACtF,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,sBAAsB,CAAC,EAAE,MAAM,CAAC;QAChC,wBAAwB,CAAC,EAAE,MAAM,CAAC;QAClC,WAAW,CAAC,EAAE,iBAAiB,CAAC;QAChC,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB;CAmBF;AAWD;;;;;;;;GAQG;AACH,qBAAa,MAAM;;IAYjB,KAAK,wBAAsB;gBAMf,IAAI,EAAE,aAAa;IA0BzB,GAAG;IA0DT,IAAI,EAAE,IAAI,MAAM,CAEf;IAED,IAAI,UAAU,IAAI,cAAc,EAAE,CAIjC;IAGK,KAAK,CAAC,OAAO,CAAC,EAAE,MAAM;IAwCtB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,mBAAmB,CAAC,EAAE,MAAM;IAqP1D,KAAK;CAiBZ"}
|