@livekit/agents 0.3.5 → 0.4.1

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.
Files changed (188) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/CHANGELOG.md +36 -0
  3. package/dist/audio.js +17 -30
  4. package/dist/audio.js.map +1 -1
  5. package/dist/cli.js +3 -14
  6. package/dist/cli.js.map +1 -1
  7. package/dist/http_server.d.ts +1 -1
  8. package/dist/http_server.js +5 -9
  9. package/dist/http_server.js.map +1 -1
  10. package/dist/index.d.ts +3 -2
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +14 -2
  13. package/dist/index.js.map +1 -1
  14. package/dist/ipc/job_executor.js +3 -5
  15. package/dist/ipc/job_executor.js.map +1 -1
  16. package/dist/ipc/job_main.d.ts +1 -1
  17. package/dist/ipc/proc_job_executor.js +66 -80
  18. package/dist/ipc/proc_job_executor.js.map +1 -1
  19. package/dist/ipc/proc_pool.d.ts +3 -3
  20. package/dist/ipc/proc_pool.d.ts.map +1 -1
  21. package/dist/ipc/proc_pool.js +38 -20
  22. package/dist/ipc/proc_pool.js.map +1 -1
  23. package/dist/job.js +56 -73
  24. package/dist/job.js.map +1 -1
  25. package/dist/llm/chat_context.d.ts +66 -0
  26. package/dist/llm/chat_context.d.ts.map +1 -0
  27. package/dist/llm/chat_context.js +93 -0
  28. package/dist/llm/chat_context.js.map +1 -0
  29. package/dist/llm/function_context.d.ts +19 -1
  30. package/dist/llm/function_context.d.ts.map +1 -1
  31. package/dist/llm/function_context.js +54 -18
  32. package/dist/llm/function_context.js.map +1 -1
  33. package/dist/llm/function_context.test.d.ts +2 -0
  34. package/dist/llm/function_context.test.d.ts.map +1 -0
  35. package/dist/llm/function_context.test.js +218 -0
  36. package/dist/llm/function_context.test.js.map +1 -0
  37. package/dist/llm/index.d.ts +3 -2
  38. package/dist/llm/index.d.ts.map +1 -1
  39. package/dist/llm/index.js +3 -2
  40. package/dist/llm/index.js.map +1 -1
  41. package/dist/llm/llm.d.ts +53 -0
  42. package/dist/llm/llm.d.ts.map +1 -0
  43. package/dist/llm/llm.js +45 -0
  44. package/dist/llm/llm.js.map +1 -0
  45. package/dist/multimodal/agent_playout.d.ts +1 -1
  46. package/dist/multimodal/agent_playout.js +116 -153
  47. package/dist/multimodal/agent_playout.js.map +1 -1
  48. package/dist/multimodal/multimodal_agent.d.ts +4 -3
  49. package/dist/multimodal/multimodal_agent.d.ts.map +1 -1
  50. package/dist/multimodal/multimodal_agent.js +207 -234
  51. package/dist/multimodal/multimodal_agent.js.map +1 -1
  52. package/dist/pipeline/agent_output.d.ts +30 -0
  53. package/dist/pipeline/agent_output.d.ts.map +1 -0
  54. package/dist/pipeline/agent_output.js +155 -0
  55. package/dist/pipeline/agent_output.js.map +1 -0
  56. package/dist/pipeline/agent_playout.d.ts +38 -0
  57. package/dist/pipeline/agent_playout.d.ts.map +1 -0
  58. package/dist/pipeline/agent_playout.js +142 -0
  59. package/dist/pipeline/agent_playout.js.map +1 -0
  60. package/dist/pipeline/human_input.d.ts +28 -0
  61. package/dist/pipeline/human_input.d.ts.map +1 -0
  62. package/dist/pipeline/human_input.js +134 -0
  63. package/dist/pipeline/human_input.js.map +1 -0
  64. package/dist/pipeline/index.d.ts +2 -0
  65. package/dist/pipeline/index.d.ts.map +1 -0
  66. package/dist/pipeline/index.js +5 -0
  67. package/dist/pipeline/index.js.map +1 -0
  68. package/dist/pipeline/pipeline_agent.d.ts +134 -0
  69. package/dist/pipeline/pipeline_agent.d.ts.map +1 -0
  70. package/dist/pipeline/pipeline_agent.js +661 -0
  71. package/dist/pipeline/pipeline_agent.js.map +1 -0
  72. package/dist/pipeline/speech_handle.d.ts +27 -0
  73. package/dist/pipeline/speech_handle.d.ts.map +1 -0
  74. package/dist/pipeline/speech_handle.js +102 -0
  75. package/dist/pipeline/speech_handle.js.map +1 -0
  76. package/dist/plugin.js +7 -20
  77. package/dist/plugin.js.map +1 -1
  78. package/dist/stt/index.d.ts +1 -2
  79. package/dist/stt/index.d.ts.map +1 -1
  80. package/dist/stt/index.js +1 -2
  81. package/dist/stt/index.js.map +1 -1
  82. package/dist/stt/stt.d.ts +62 -24
  83. package/dist/stt/stt.d.ts.map +1 -1
  84. package/dist/stt/stt.js +77 -27
  85. package/dist/stt/stt.js.map +1 -1
  86. package/dist/tokenize/basic/basic.d.ts +16 -0
  87. package/dist/tokenize/basic/basic.d.ts.map +1 -0
  88. package/dist/tokenize/basic/basic.js +50 -0
  89. package/dist/tokenize/basic/basic.js.map +1 -0
  90. package/dist/tokenize/basic/hyphenator.d.ts +17 -0
  91. package/dist/tokenize/basic/hyphenator.d.ts.map +1 -0
  92. package/dist/tokenize/basic/hyphenator.js +420 -0
  93. package/dist/tokenize/basic/hyphenator.js.map +1 -0
  94. package/dist/tokenize/basic/index.d.ts +2 -0
  95. package/dist/tokenize/basic/index.d.ts.map +1 -0
  96. package/dist/tokenize/basic/index.js +5 -0
  97. package/dist/tokenize/basic/index.js.map +1 -0
  98. package/dist/tokenize/basic/paragraph.d.ts +5 -0
  99. package/dist/tokenize/basic/paragraph.d.ts.map +1 -0
  100. package/dist/tokenize/basic/paragraph.js +38 -0
  101. package/dist/tokenize/basic/paragraph.js.map +1 -0
  102. package/dist/tokenize/basic/sentence.d.ts +5 -0
  103. package/dist/tokenize/basic/sentence.d.ts.map +1 -0
  104. package/dist/tokenize/basic/sentence.js +60 -0
  105. package/dist/tokenize/basic/sentence.js.map +1 -0
  106. package/dist/tokenize/basic/word.d.ts +5 -0
  107. package/dist/tokenize/basic/word.d.ts.map +1 -0
  108. package/dist/tokenize/basic/word.js +23 -0
  109. package/dist/tokenize/basic/word.js.map +1 -0
  110. package/dist/tokenize/index.d.ts +5 -0
  111. package/dist/tokenize/index.d.ts.map +1 -0
  112. package/dist/tokenize/index.js +8 -0
  113. package/dist/tokenize/index.js.map +1 -0
  114. package/dist/tokenize/token_stream.d.ts +36 -0
  115. package/dist/tokenize/token_stream.d.ts.map +1 -0
  116. package/dist/tokenize/token_stream.js +136 -0
  117. package/dist/tokenize/token_stream.js.map +1 -0
  118. package/dist/tokenize/tokenizer.d.ts +55 -0
  119. package/dist/tokenize/tokenizer.d.ts.map +1 -0
  120. package/dist/tokenize/tokenizer.js +117 -0
  121. package/dist/tokenize/tokenizer.js.map +1 -0
  122. package/dist/transcription.js +78 -89
  123. package/dist/transcription.js.map +1 -1
  124. package/dist/tts/index.d.ts +1 -3
  125. package/dist/tts/index.d.ts.map +1 -1
  126. package/dist/tts/index.js +1 -3
  127. package/dist/tts/index.js.map +1 -1
  128. package/dist/tts/tts.d.ts +66 -37
  129. package/dist/tts/tts.d.ts.map +1 -1
  130. package/dist/tts/tts.js +79 -74
  131. package/dist/tts/tts.js.map +1 -1
  132. package/dist/utils.d.ts +21 -6
  133. package/dist/utils.d.ts.map +1 -1
  134. package/dist/utils.js +120 -76
  135. package/dist/utils.js.map +1 -1
  136. package/dist/vad.d.ts +43 -39
  137. package/dist/vad.d.ts.map +1 -1
  138. package/dist/vad.js +51 -4
  139. package/dist/vad.js.map +1 -1
  140. package/dist/worker.d.ts +1 -1
  141. package/dist/worker.js +257 -247
  142. package/dist/worker.js.map +1 -1
  143. package/package.json +4 -3
  144. package/src/index.ts +16 -2
  145. package/src/ipc/proc_pool.ts +25 -13
  146. package/src/llm/chat_context.ts +147 -0
  147. package/src/llm/function_context.test.ts +248 -0
  148. package/src/llm/function_context.ts +77 -18
  149. package/src/llm/index.ts +21 -2
  150. package/src/llm/llm.ts +102 -0
  151. package/src/multimodal/multimodal_agent.ts +6 -2
  152. package/src/pipeline/agent_output.ts +185 -0
  153. package/src/pipeline/agent_playout.ts +187 -0
  154. package/src/pipeline/human_input.ts +166 -0
  155. package/src/pipeline/index.ts +15 -0
  156. package/src/pipeline/pipeline_agent.ts +917 -0
  157. package/src/pipeline/speech_handle.ts +136 -0
  158. package/src/stt/index.ts +8 -2
  159. package/src/stt/stt.ts +98 -31
  160. package/src/tokenize/basic/basic.ts +73 -0
  161. package/src/tokenize/basic/hyphenator.ts +436 -0
  162. package/src/tokenize/basic/index.ts +5 -0
  163. package/src/tokenize/basic/paragraph.ts +43 -0
  164. package/src/tokenize/basic/sentence.ts +69 -0
  165. package/src/tokenize/basic/word.ts +27 -0
  166. package/src/tokenize/index.ts +16 -0
  167. package/src/tokenize/token_stream.ts +163 -0
  168. package/src/tokenize/tokenizer.ts +152 -0
  169. package/src/tts/index.ts +1 -20
  170. package/src/tts/tts.ts +110 -57
  171. package/src/utils.ts +95 -25
  172. package/src/vad.ts +86 -45
  173. package/tsconfig.tsbuildinfo +1 -1
  174. package/dist/stt/stream_adapter.d.ts +0 -19
  175. package/dist/stt/stream_adapter.d.ts.map +0 -1
  176. package/dist/stt/stream_adapter.js +0 -96
  177. package/dist/stt/stream_adapter.js.map +0 -1
  178. package/dist/tokenize.d.ts +0 -15
  179. package/dist/tokenize.d.ts.map +0 -1
  180. package/dist/tokenize.js +0 -12
  181. package/dist/tokenize.js.map +0 -1
  182. package/dist/tts/stream_adapter.d.ts +0 -19
  183. package/dist/tts/stream_adapter.d.ts.map +0 -1
  184. package/dist/tts/stream_adapter.js +0 -111
  185. package/dist/tts/stream_adapter.js.map +0 -1
  186. package/src/stt/stream_adapter.ts +0 -104
  187. package/src/tokenize.ts +0 -22
  188. package/src/tts/stream_adapter.ts +0 -93
@@ -1 +1 @@
1
- {"version":3,"file":"proc_pool.d.ts","sourceRoot":"","sources":["../../src/ipc/proc_pool.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGrD,qBAAa,QAAQ;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,iBAAiB,EAAE,MAAM,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,WAAW,EAAE,CAAM;IAC9B,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAM;IAC5B,OAAO,UAAS;IAChB,MAAM,UAAS;IACf,UAAU,kBAAyB;IACnC,SAAS,QAAe;IACxB,SAAS,EAAE,KAAK,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,eAAe,qBAA4B;gBAGzC,KAAK,EAAE,MAAM,EACb,iBAAiB,EAAE,MAAM,EACzB,iBAAiB,EAAE,MAAM,EACzB,YAAY,EAAE,MAAM;IAQtB,IAAI,SAAS,IAAI,WAAW,EAAE,CAE7B;IAED,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI;IAIpC,SAAS,CAAC,IAAI,EAAE,cAAc;IAS9B,aAAa;IA6BnB,KAAK;IASC,GAAG,CAAC,MAAM,EAAE,WAAW;IASvB,KAAK;CAUZ"}
1
+ {"version":3,"file":"proc_pool.d.ts","sourceRoot":"","sources":["../../src/ipc/proc_pool.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGrD,qBAAa,QAAQ;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,iBAAiB,EAAE,MAAM,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,WAAW,EAAE,CAAM;IAC9B,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAM;IAC5B,OAAO,UAAS;IAChB,MAAM,UAAS;IACf,UAAU,kBAAyB;IACnC,SAAS,QAAe;IACxB,SAAS,CAAC,EAAE,UAAU,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,eAAe,qBAA4B;gBAGzC,KAAK,EAAE,MAAM,EACb,gBAAgB,EAAE,MAAM,EACxB,iBAAiB,EAAE,MAAM,EACzB,YAAY,EAAE,MAAM;IAUtB,IAAI,SAAS,IAAI,WAAW,EAAE,CAE7B;IAED,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI;IAIpC,SAAS,CAAC,IAAI,EAAE,cAAc;IAiB9B,aAAa;IA6BnB,KAAK;IASC,GAAG,CAAC,MAAM,EAAE,WAAW;IAWvB,KAAK;CAUZ"}
@@ -1,20 +1,27 @@
1
1
  // SPDX-FileCopyrightText: 2024 LiveKit, Inc.
2
2
  //
3
3
  // SPDX-License-Identifier: Apache-2.0
4
- import { Mutex } from '@livekit/mutex';
4
+ import { MultiMutex, Mutex } from '@livekit/mutex';
5
5
  import { Queue } from '../utils.js';
6
6
  import { ProcJobExecutor } from './proc_job_executor.js';
7
7
  export class ProcPool {
8
- constructor(agent, _numIdleProcesses, initializeTimeout, closeTimeout) {
9
- this.executors = [];
10
- this.tasks = [];
11
- this.started = false;
12
- this.closed = false;
13
- this.controller = new AbortController();
14
- this.initMutex = new Mutex();
15
- this.warmedProcQueue = new Queue();
8
+ agent;
9
+ initializeTimeout;
10
+ closeTimeout;
11
+ executors = [];
12
+ tasks = [];
13
+ started = false;
14
+ closed = false;
15
+ controller = new AbortController();
16
+ initMutex = new Mutex();
17
+ procMutex;
18
+ procUnlock;
19
+ warmedProcQueue = new Queue();
20
+ constructor(agent, numIdleProcesses, initializeTimeout, closeTimeout) {
16
21
  this.agent = agent;
17
- this.procMutex = new Mutex();
22
+ if (numIdleProcesses > 0) {
23
+ this.procMutex = new MultiMutex(numIdleProcesses);
24
+ }
18
25
  this.initializeTimeout = initializeTimeout;
19
26
  this.closeTimeout = closeTimeout;
20
27
  }
@@ -25,10 +32,19 @@ export class ProcPool {
25
32
  return this.executors.find((x) => x.runningJob && x.runningJob.job.id === id) || null;
26
33
  }
27
34
  async launchJob(info) {
28
- const proc = await this.warmedProcQueue.get();
29
- if (this.procUnlock) {
30
- this.procUnlock();
31
- this.procUnlock = undefined;
35
+ let proc;
36
+ if (this.procMutex) {
37
+ proc = await this.warmedProcQueue.get();
38
+ if (this.procUnlock) {
39
+ this.procUnlock();
40
+ this.procUnlock = undefined;
41
+ }
42
+ }
43
+ else {
44
+ proc = new ProcJobExecutor(this.agent, this.initializeTimeout, this.closeTimeout);
45
+ this.executors.push(proc);
46
+ await proc.start();
47
+ await proc.initialize();
32
48
  }
33
49
  await proc.launchJob(info);
34
50
  }
@@ -45,7 +61,7 @@ export class ProcPool {
45
61
  await proc.initialize();
46
62
  await this.warmedProcQueue.put(proc);
47
63
  }
48
- catch (_a) {
64
+ catch {
49
65
  if (this.procUnlock) {
50
66
  this.procUnlock();
51
67
  this.procUnlock = undefined;
@@ -66,11 +82,13 @@ export class ProcPool {
66
82
  this.run(this.controller.signal);
67
83
  }
68
84
  async run(signal) {
69
- while (!signal.aborted) {
70
- this.procUnlock = await this.procMutex.lock();
71
- const task = this.procWatchTask();
72
- this.tasks.push(task);
73
- task.finally(() => this.tasks.splice(this.tasks.indexOf(task)));
85
+ if (this.procMutex) {
86
+ while (!signal.aborted) {
87
+ this.procUnlock = await this.procMutex.lock();
88
+ const task = this.procWatchTask();
89
+ this.tasks.push(task);
90
+ task.finally(() => this.tasks.splice(this.tasks.indexOf(task)));
91
+ }
74
92
  }
75
93
  }
76
94
  async close() {
@@ -1 +1 @@
1
- {"version":3,"file":"proc_pool.js","sourceRoot":"","sources":["../../src/ipc/proc_pool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"proc_pool.js","sourceRoot":"","sources":["../../src/ipc/proc_pool.ts"],"names":[],"mappings":"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"}
package/dist/job.js CHANGED
@@ -1,15 +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 _JobContext_proc, _JobContext_info, _JobContext_room, _JobContext_onConnect, _JobContext_onShutdown, _JobContext_participantEntrypoints, _JobContext_participantTasks, _JobContext_logger, _JobProcess_pid, _JobRequest_job, _JobRequest_onReject, _JobRequest_onAccept;
13
1
  import { ParticipantKind, RoomEvent, TrackKind } from '@livekit/rtc-node';
14
2
  import { log } from './log.js';
15
3
  /** Which tracks, if any, should the agent automatically subscribe to? */
@@ -29,49 +17,49 @@ export class FunctionExistsError extends Error {
29
17
  }
30
18
  /** The job and environment context as seen by the agent, accessible by the entrypoint function. */
31
19
  export class JobContext {
20
+ #proc;
21
+ #info;
22
+ #room;
23
+ #onConnect;
24
+ #onShutdown;
25
+ /** @internal */
26
+ shutdownCallbacks = [];
27
+ #participantEntrypoints = [];
28
+ #participantTasks = {};
29
+ #logger;
32
30
  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");
31
+ this.#proc = proc;
32
+ this.#info = info;
33
+ this.#room = room;
34
+ this.#onConnect = onConnect;
35
+ this.#onShutdown = onShutdown;
48
36
  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");
37
+ this.#room.on(RoomEvent.ParticipantConnected, this.onParticipantConnected);
38
+ this.#logger = log().child({ info: this.#info });
51
39
  }
52
40
  get proc() {
53
- return __classPrivateFieldGet(this, _JobContext_proc, "f");
41
+ return this.#proc;
54
42
  }
55
43
  get job() {
56
- return __classPrivateFieldGet(this, _JobContext_info, "f").job;
44
+ return this.#info.job;
57
45
  }
58
46
  /** @returns The room the agent was called into */
59
47
  get room() {
60
- return __classPrivateFieldGet(this, _JobContext_room, "f");
48
+ return this.#room;
61
49
  }
62
50
  /** @returns The agent's participant if connected to the room, otherwise `undefined` */
63
51
  get agent() {
64
- return __classPrivateFieldGet(this, _JobContext_room, "f").localParticipant;
52
+ return this.#room.localParticipant;
65
53
  }
66
54
  /** Adds a promise to be awaited when {@link JobContext.shutdown | shutdown} is called. */
67
55
  addShutdownCallback(callback) {
68
56
  this.shutdownCallbacks.push(callback);
69
57
  }
70
58
  async waitForParticipant(identity) {
71
- if (!__classPrivateFieldGet(this, _JobContext_room, "f").isConnected) {
59
+ if (!this.#room.isConnected) {
72
60
  throw new Error('room is not connected');
73
61
  }
74
- for (const p of __classPrivateFieldGet(this, _JobContext_room, "f").remoteParticipants.values()) {
62
+ for (const p of this.#room.remoteParticipants.values()) {
75
63
  if ((!identity || p.identity === identity) && p.info.kind != ParticipantKind.AGENT) {
76
64
  return p;
77
65
  }
@@ -89,11 +77,11 @@ export class JobContext {
89
77
  reject(new Error('Room disconnected while waiting for participant'));
90
78
  };
91
79
  const clearHandlers = () => {
92
- __classPrivateFieldGet(this, _JobContext_room, "f").off(RoomEvent.ParticipantConnected, onParticipantConnected);
93
- __classPrivateFieldGet(this, _JobContext_room, "f").off(RoomEvent.Disconnected, onDisconnected);
80
+ this.#room.off(RoomEvent.ParticipantConnected, onParticipantConnected);
81
+ this.#room.off(RoomEvent.Disconnected, onDisconnected);
94
82
  };
95
- __classPrivateFieldGet(this, _JobContext_room, "f").on(RoomEvent.ParticipantConnected, onParticipantConnected);
96
- __classPrivateFieldGet(this, _JobContext_room, "f").on(RoomEvent.Disconnected, onDisconnected);
83
+ this.#room.on(RoomEvent.ParticipantConnected, onParticipantConnected);
84
+ this.#room.on(RoomEvent.Disconnected, onDisconnected);
97
85
  });
98
86
  }
99
87
  /**
@@ -113,11 +101,11 @@ export class JobContext {
113
101
  rtcConfig,
114
102
  dynacast: false,
115
103
  };
116
- await __classPrivateFieldGet(this, _JobContext_room, "f").connect(__classPrivateFieldGet(this, _JobContext_info, "f").url, __classPrivateFieldGet(this, _JobContext_info, "f").token, opts);
117
- __classPrivateFieldGet(this, _JobContext_onConnect, "f").call(this);
118
- __classPrivateFieldGet(this, _JobContext_room, "f").remoteParticipants.forEach(this.onParticipantConnected);
104
+ await this.#room.connect(this.#info.url, this.#info.token, opts);
105
+ this.#onConnect();
106
+ this.#room.remoteParticipants.forEach(this.onParticipantConnected);
119
107
  if ([AutoSubscribe.AUDIO_ONLY, AutoSubscribe.VIDEO_ONLY].includes(autoSubscribe)) {
120
- __classPrivateFieldGet(this, _JobContext_room, "f").remoteParticipants.forEach((p) => {
108
+ this.#room.remoteParticipants.forEach((p) => {
121
109
  p.trackPublications.forEach((pub) => {
122
110
  if ((autoSubscribe === AutoSubscribe.AUDIO_ONLY && pub.kind === TrackKind.KIND_AUDIO) ||
123
111
  (autoSubscribe === AutoSubscribe.VIDEO_ONLY && pub.kind === TrackKind.KIND_VIDEO)) {
@@ -133,18 +121,18 @@ export class JobContext {
133
121
  * @param reason - Optional reason for shutdown
134
122
  */
135
123
  shutdown(reason = '') {
136
- __classPrivateFieldGet(this, _JobContext_onShutdown, "f").call(this, reason);
124
+ this.#onShutdown(reason);
137
125
  }
138
126
  /** @internal */
139
127
  onParticipantConnected(p) {
140
- for (const callback of __classPrivateFieldGet(this, _JobContext_participantEntrypoints, "f")) {
141
- if (p.identity in __classPrivateFieldGet(this, _JobContext_participantTasks, "f") &&
142
- __classPrivateFieldGet(this, _JobContext_participantTasks, "f")[p.identity].callback == callback) {
143
- __classPrivateFieldGet(this, _JobContext_logger, "f").warn('a participant has joined before a prior prticipant task matching the same identity has finished:', p.identity);
128
+ for (const callback of this.#participantEntrypoints) {
129
+ if (p.identity in this.#participantTasks &&
130
+ this.#participantTasks[p.identity].callback == callback) {
131
+ this.#logger.warn('a participant has joined before a prior prticipant task matching the same identity has finished:', p.identity);
144
132
  }
145
133
  const result = callback(this, p);
146
- result.finally(() => delete __classPrivateFieldGet(this, _JobContext_participantTasks, "f")[p.identity]);
147
- __classPrivateFieldGet(this, _JobContext_participantTasks, "f")[p.identity] = { callback, result };
134
+ result.finally(() => delete this.#participantTasks[p.identity]);
135
+ this.#participantTasks[p.identity] = { callback, result };
148
136
  }
149
137
  }
150
138
  /**
@@ -153,23 +141,19 @@ export class JobContext {
153
141
  * @throws {@link FunctionExistsError} if an entrypoint already exists
154
142
  */
155
143
  addParticipantEntrypoint(callback) {
156
- if (__classPrivateFieldGet(this, _JobContext_participantEntrypoints, "f").includes(callback)) {
144
+ if (this.#participantEntrypoints.includes(callback)) {
157
145
  throw new FunctionExistsError('entrypoints cannot be added more than once');
158
146
  }
159
- __classPrivateFieldGet(this, _JobContext_participantEntrypoints, "f").push(callback);
147
+ this.#participantEntrypoints.push(callback);
160
148
  }
161
149
  }
162
- _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();
163
150
  export class JobProcess {
164
- constructor() {
165
- _JobProcess_pid.set(this, process.pid);
166
- this.userData = {};
167
- }
151
+ #pid = process.pid;
152
+ userData = {};
168
153
  get pid() {
169
- return __classPrivateFieldGet(this, _JobProcess_pid, "f");
154
+ return this.#pid;
170
155
  }
171
156
  }
172
- _JobProcess_pid = new WeakMap();
173
157
  /**
174
158
  * A request sent by the server to spawn a new agent job.
175
159
  *
@@ -179,45 +163,44 @@ _JobProcess_pid = new WeakMap();
179
163
  * requests should fill idle processes and which should be outright rejected.
180
164
  */
181
165
  export class JobRequest {
166
+ #job;
167
+ #onReject;
168
+ #onAccept;
182
169
  /** @internal */
183
170
  constructor(job, onReject, onAccept) {
184
- _JobRequest_job.set(this, void 0);
185
- _JobRequest_onReject.set(this, void 0);
186
- _JobRequest_onAccept.set(this, void 0);
187
- __classPrivateFieldSet(this, _JobRequest_job, job, "f");
188
- __classPrivateFieldSet(this, _JobRequest_onReject, onReject, "f");
189
- __classPrivateFieldSet(this, _JobRequest_onAccept, onAccept, "f");
171
+ this.#job = job;
172
+ this.#onReject = onReject;
173
+ this.#onAccept = onAccept;
190
174
  }
191
175
  /** @returns The ID of the job, set by the LiveKit server */
192
176
  get id() {
193
- return __classPrivateFieldGet(this, _JobRequest_job, "f").id;
177
+ return this.#job.id;
194
178
  }
195
179
  /** @see {@link https://www.npmjs.com/package/@livekit/protocol | @livekit/protocol} */
196
180
  get job() {
197
- return __classPrivateFieldGet(this, _JobRequest_job, "f");
181
+ return this.#job;
198
182
  }
199
183
  /** @see {@link https://www.npmjs.com/package/@livekit/protocol | @livekit/protocol} */
200
184
  get room() {
201
- return __classPrivateFieldGet(this, _JobRequest_job, "f").room;
185
+ return this.#job.room;
202
186
  }
203
187
  /** @see {@link https://www.npmjs.com/package/@livekit/protocol | @livekit/protocol} */
204
188
  get publisher() {
205
- return __classPrivateFieldGet(this, _JobRequest_job, "f").participant;
189
+ return this.#job.participant;
206
190
  }
207
191
  /** @returns The agent's name, as set in {@link WorkerOptions} */
208
192
  get agentName() {
209
- return __classPrivateFieldGet(this, _JobRequest_job, "f").agentName;
193
+ return this.#job.agentName;
210
194
  }
211
195
  /** Rejects the job. */
212
196
  async reject() {
213
- await __classPrivateFieldGet(this, _JobRequest_onReject, "f").call(this);
197
+ await this.#onReject();
214
198
  }
215
199
  /** Accepts the job, launching it on an idle child process. */
216
200
  async accept(name = '', identity = '', metadata = '') {
217
201
  if (identity === '')
218
202
  identity = 'agent-' + this.id;
219
- __classPrivateFieldGet(this, _JobRequest_onAccept, "f").call(this, { name, identity, metadata });
203
+ this.#onAccept({ name, identity, metadata });
220
204
  }
221
205
  }
222
- _JobRequest_job = new WeakMap(), _JobRequest_onReject = new WeakMap(), _JobRequest_onAccept = new WeakMap();
223
206
  //# sourceMappingURL=job.js.map
package/dist/job.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"job.js","sourceRoot":"","sources":["../src/job.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"job.js","sourceRoot":"","sources":["../src/job.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,66 @@
1
+ import type { AudioFrame, VideoFrame } from '@livekit/rtc-node';
2
+ import type { CallableFunctionResult, FunctionCallInfo } from './function_context.js';
3
+ export declare enum ChatRole {
4
+ SYSTEM = 0,
5
+ USER = 1,
6
+ ASSISTANT = 2,
7
+ TOOL = 3
8
+ }
9
+ export interface ChatImage {
10
+ image: string | VideoFrame;
11
+ inferenceWidth?: number;
12
+ inferenceHeight?: number;
13
+ /**
14
+ * @internal
15
+ * Used by LLM implementations to store a processed version of the image for later use.
16
+ */
17
+ cache: {
18
+ [id: string | number | symbol]: any;
19
+ };
20
+ }
21
+ export interface ChatAudio {
22
+ frame: AudioFrame | AudioFrame[];
23
+ }
24
+ export type ChatContent = string | ChatImage | ChatAudio;
25
+ export declare class ChatMessage {
26
+ readonly role: ChatRole;
27
+ readonly id?: string;
28
+ readonly name?: string;
29
+ readonly content?: ChatContent | ChatContent[];
30
+ readonly toolCalls?: FunctionCallInfo[];
31
+ readonly toolCallId?: string;
32
+ readonly toolException?: Error;
33
+ /** @internal */
34
+ constructor({ role, id, name, content, toolCalls, toolCallId, toolException, }: {
35
+ role: ChatRole;
36
+ id?: string;
37
+ name?: string;
38
+ content?: ChatContent | ChatContent[];
39
+ toolCalls?: FunctionCallInfo[];
40
+ toolCallId?: string;
41
+ toolException?: Error;
42
+ });
43
+ static createToolFromFunctionResult(func: CallableFunctionResult): ChatMessage;
44
+ static createToolCalls(toolCalls: FunctionCallInfo[], text?: string): ChatMessage;
45
+ static create(options: Partial<{
46
+ text?: string;
47
+ images: ChatImage[];
48
+ role: ChatRole;
49
+ }>): ChatMessage;
50
+ /** Returns a structured clone of this message. */
51
+ copy(): ChatMessage;
52
+ }
53
+ export declare class ChatContext {
54
+ messages: ChatMessage[];
55
+ metadata: {
56
+ [id: string]: any;
57
+ };
58
+ append(msg: {
59
+ text?: string;
60
+ images?: ChatImage[];
61
+ role: ChatRole;
62
+ }): ChatContext;
63
+ /** Returns a structured clone of this context. */
64
+ copy(): ChatContext;
65
+ }
66
+ //# sourceMappingURL=chat_context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat_context.d.ts","sourceRoot":"","sources":["../../src/llm/chat_context.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,KAAK,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEtF,oBAAY,QAAQ;IAClB,MAAM,IAAA;IACN,IAAI,IAAA;IACJ,SAAS,IAAA;IACT,IAAI,IAAA;CACL;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,GAAG,UAAU,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;OAGG;IACH,KAAK,EAAE;QAAE,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC;CAChD;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,UAAU,GAAG,UAAU,EAAE,CAAC;CAClC;AAED,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,CAAC;AAQzD,qBAAa,WAAW;IACtB,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,CAAC,EAAE,WAAW,GAAG,WAAW,EAAE,CAAC;IAC/C,QAAQ,CAAC,SAAS,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACxC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,aAAa,CAAC,EAAE,KAAK,CAAC;IAE/B,gBAAgB;gBACJ,EACV,IAAI,EACJ,EAAE,EACF,IAAI,EACJ,OAAO,EACP,SAAS,EACT,UAAU,EACV,aAAa,GACd,EAAE;QACD,IAAI,EAAE,QAAQ,CAAC;QACf,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,WAAW,GAAG,WAAW,EAAE,CAAC;QACtC,SAAS,CAAC,EAAE,gBAAgB,EAAE,CAAC;QAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,aAAa,CAAC,EAAE,KAAK,CAAC;KACvB;IAUD,MAAM,CAAC,4BAA4B,CAAC,IAAI,EAAE,sBAAsB,GAAG,WAAW;IAc9E,MAAM,CAAC,eAAe,CAAC,SAAS,EAAE,gBAAgB,EAAE,EAAE,IAAI,SAAK;IAQ/D,MAAM,CAAC,MAAM,CACX,OAAO,EAAE,OAAO,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,SAAS,EAAE,CAAC;QACpB,IAAI,EAAE,QAAQ,CAAC;KAChB,CAAC,GACD,WAAW;IAgBd,kDAAkD;IAClD,IAAI,IAAI,WAAW;CAWpB;AAED,qBAAa,WAAW;IACtB,QAAQ,EAAE,WAAW,EAAE,CAAM;IAC7B,QAAQ,EAAE;QAAE,CAAC,EAAE,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAM;IAErC,MAAM,CAAC,GAAG,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;QAAC,IAAI,EAAE,QAAQ,CAAA;KAAE,GAAG,WAAW;IAKjF,kDAAkD;IAClD,IAAI,IAAI,WAAW;CAMpB"}
@@ -0,0 +1,93 @@
1
+ export var ChatRole;
2
+ (function (ChatRole) {
3
+ ChatRole[ChatRole["SYSTEM"] = 0] = "SYSTEM";
4
+ ChatRole[ChatRole["USER"] = 1] = "USER";
5
+ ChatRole[ChatRole["ASSISTANT"] = 2] = "ASSISTANT";
6
+ ChatRole[ChatRole["TOOL"] = 3] = "TOOL";
7
+ })(ChatRole || (ChatRole = {}));
8
+ const defaultCreateChatMessage = {
9
+ text: '',
10
+ images: [],
11
+ role: ChatRole.SYSTEM,
12
+ };
13
+ export class ChatMessage {
14
+ role;
15
+ id;
16
+ name;
17
+ content;
18
+ toolCalls;
19
+ toolCallId;
20
+ toolException;
21
+ /** @internal */
22
+ constructor({ role, id, name, content, toolCalls, toolCallId, toolException, }) {
23
+ this.role = role;
24
+ this.id = id;
25
+ this.name = name;
26
+ this.content = content;
27
+ this.toolCalls = toolCalls;
28
+ this.toolCallId = toolCallId;
29
+ this.toolException = toolException;
30
+ }
31
+ static createToolFromFunctionResult(func) {
32
+ if (!func.result && !func.error) {
33
+ throw new TypeError('CallableFunctionResult must include result or error');
34
+ }
35
+ return new ChatMessage({
36
+ role: ChatRole.TOOL,
37
+ name: func.name,
38
+ content: func.result || `Error: ${func.error}`,
39
+ toolCallId: func.toolCallId,
40
+ toolException: func.error,
41
+ });
42
+ }
43
+ static createToolCalls(toolCalls, text = '') {
44
+ return new ChatMessage({
45
+ role: ChatRole.ASSISTANT,
46
+ toolCalls,
47
+ content: text,
48
+ });
49
+ }
50
+ static create(options) {
51
+ const { text, images, role } = { ...defaultCreateChatMessage, ...options };
52
+ if (!images.length) {
53
+ return new ChatMessage({
54
+ role,
55
+ content: text,
56
+ });
57
+ }
58
+ else {
59
+ return new ChatMessage({
60
+ role,
61
+ content: [...(text ? [text] : []), ...images],
62
+ });
63
+ }
64
+ }
65
+ /** Returns a structured clone of this message. */
66
+ copy() {
67
+ return new ChatMessage({
68
+ role: this.role,
69
+ id: this.id,
70
+ name: this.name,
71
+ content: this.content,
72
+ toolCalls: this.toolCalls,
73
+ toolCallId: this.toolCallId,
74
+ toolException: this.toolException,
75
+ });
76
+ }
77
+ }
78
+ export class ChatContext {
79
+ messages = [];
80
+ metadata = {};
81
+ append(msg) {
82
+ this.messages.push(ChatMessage.create(msg));
83
+ return this;
84
+ }
85
+ /** Returns a structured clone of this context. */
86
+ copy() {
87
+ const ctx = new ChatContext();
88
+ ctx.messages.push(...this.messages.map((msg) => msg.copy()));
89
+ ctx.metadata = structuredClone(this.metadata);
90
+ return ctx;
91
+ }
92
+ }
93
+ //# sourceMappingURL=chat_context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat_context.js","sourceRoot":"","sources":["../../src/llm/chat_context.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,22 @@ export interface CallableFunction<P extends z.ZodTypeAny = any, R = any> {
7
7
  parameters: P;
8
8
  execute: (args: inferParameters<P>) => PromiseLike<R>;
9
9
  }
10
+ /** A function that has been called but is not yet running */
11
+ export interface FunctionCallInfo<P extends z.ZodTypeAny = any, R = any> {
12
+ name: string;
13
+ func: CallableFunction<P, R>;
14
+ toolCallId: string;
15
+ rawParams: string;
16
+ params: inferParameters<P>;
17
+ task?: PromiseLike<CallableFunctionResult>;
18
+ }
19
+ /** The result of a ran FunctionCallInfo. */
20
+ export interface CallableFunctionResult {
21
+ name: string;
22
+ toolCallId: string;
23
+ result?: any;
24
+ error?: any;
25
+ }
10
26
  /** An object containing callable functions and their names */
11
27
  export type FunctionContext = {
12
28
  [name: string]: CallableFunction;
@@ -15,6 +31,8 @@ export type FunctionContext = {
15
31
  export declare const oaiParams: (p: z.AnyZodObject) => {
16
32
  type: "object";
17
33
  properties: Record<string, any>;
18
- required_properties: string[];
34
+ required: string[];
19
35
  };
36
+ /** @internal */
37
+ export declare const oaiBuildFunctionInfo: (fncCtx: FunctionContext, toolCallId: string, fncName: string, rawArgs: string) => FunctionCallInfo;
20
38
  //# sourceMappingURL=function_context.d.ts.map
@@ -1 +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"}
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,6DAA6D;AAC7D,MAAM,WAAW,gBAAgB,CAAC,CAAC,SAAS,CAAC,CAAC,UAAU,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG;IACrE,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC;IAC3B,IAAI,CAAC,EAAE,WAAW,CAAC,sBAAsB,CAAC,CAAC;CAC5C;AAED,4CAA4C;AAC5C,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,KAAK,CAAC,EAAE,GAAG,CAAC;CACb;AAED,8DAA8D;AAC9D,MAAM,MAAM,eAAe,GAAG;IAC5B,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAAC;CAClC,CAAC;AAEF,gBAAgB;AAChB,eAAO,MAAM,SAAS;;;;CAuDrB,CAAC;AAEF,gBAAgB;AAChB,eAAO,MAAM,oBAAoB,WACvB,eAAe,cACX,MAAM,WACT,MAAM,WACN,MAAM,KACd,gBAYF,CAAC"}