@livekit/agents 0.3.5 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (188) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/CHANGELOG.md +30 -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 +16 -11
  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 +4 -4
  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,EAAE,UAAU,CAAC;IACtB,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;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,20 +1,25 @@
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
+ this.procMutex = new MultiMutex(numIdleProcesses);
18
23
  this.initializeTimeout = initializeTimeout;
19
24
  this.closeTimeout = closeTimeout;
20
25
  }
@@ -45,7 +50,7 @@ export class ProcPool {
45
50
  await proc.initialize();
46
51
  await this.warmedProcQueue.put(proc);
47
52
  }
48
- catch (_a) {
53
+ catch {
49
54
  if (this.procUnlock) {
50
55
  this.procUnlock();
51
56
  this.procUnlock = undefined;
@@ -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":"AAWA,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE1E,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAE/B,yEAAyE;AACzE,MAAM,CAAN,IAAY,aAKX;AALD,WAAY,aAAa;IACvB,mEAAa,CAAA;IACb,qEAAc,CAAA;IACd,6DAAU,CAAA;IACV,6DAAU,CAAA;AACZ,CAAC,EALW,aAAa,KAAb,aAAa,QAKxB;AAeD,6EAA6E;AAC7E,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IAC5C,YAAY,GAAY;QACtB,KAAK,CAAC,GAAG,CAAC,CAAC;QACX,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACpD,CAAC;CACF;AAED,mGAAmG;AACnG,MAAM,OAAO,UAAU;IACrB,KAAK,CAAa;IAClB,KAAK,CAAiB;IACtB,KAAK,CAAO;IACZ,UAAU,CAAa;IACvB,WAAW,CAAsB;IACjC,gBAAgB;IAChB,iBAAiB,GAA4B,EAAE,CAAC;IAChD,uBAAuB,GAAiE,EAAE,CAAC;IAC3F,iBAAiB,GAKb,EAAE,CAAC;IACP,OAAO,CAAS;IAEhB,YACE,IAAgB,EAChB,IAAoB,EACpB,IAAU,EACV,SAAqB,EACrB,UAA+B;QAE/B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;QAC9B,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,oBAAoB,EAAE,IAAI,CAAC,sBAAsB,CAAC,CAAC;QAC3E,IAAI,CAAC,OAAO,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IACnD,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;IACxB,CAAC;IAED,kDAAkD;IAClD,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,uFAAuF;IACvF,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC;IACrC,CAAC;IAED,0FAA0F;IAC1F,mBAAmB,CAAC,QAA6B;QAC/C,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,QAAiB;QACxC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAC3C,CAAC;QAED,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,MAAM,EAAE,EAAE,CAAC;YACvD,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,eAAe,CAAC,KAAK,EAAE,CAAC;gBACnF,OAAO,CAAC,CAAC;YACX,CAAC;QACH,CAAC;QAED,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,MAAM,sBAAsB,GAAG,CAAC,WAA8B,EAAE,EAAE;gBAChE,IACE,CAAC,CAAC,QAAQ,IAAI,WAAW,CAAC,QAAQ,KAAK,QAAQ,CAAC;oBAChD,WAAW,CAAC,IAAI,CAAC,IAAI,IAAI,eAAe,CAAC,KAAK,EAC9C,CAAC;oBACD,aAAa,EAAE,CAAC;oBAChB,OAAO,CAAC,WAAW,CAAC,CAAC;gBACvB,CAAC;YACH,CAAC,CAAC;YACF,MAAM,cAAc,GAAG,GAAG,EAAE;gBAC1B,aAAa,EAAE,CAAC;gBAChB,MAAM,CAAC,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC,CAAC;YACvE,CAAC,CAAC;YAEF,MAAM,aAAa,GAAG,GAAG,EAAE;gBACzB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,oBAAoB,EAAE,sBAAsB,CAAC,CAAC;gBACvE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;YACzD,CAAC,CAAC;YAEF,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,oBAAoB,EAAE,sBAAsB,CAAC,CAAC;YACtE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;QACxD,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,OAAO,CACX,IAAkB,EAClB,gBAA+B,aAAa,CAAC,aAAa,EAC1D,SAA4B;QAE5B,MAAM,IAAI,GAAG;YACX,IAAI;YACJ,aAAa,EAAE,aAAa,IAAI,aAAa,CAAC,aAAa;YAC3D,SAAS;YACT,QAAQ,EAAE,KAAK;SAChB,CAAC;QAEF,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACjE,IAAI,CAAC,UAAU,EAAE,CAAC;QAElB,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QAEnE,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;YACjF,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;gBAC1C,CAAC,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;oBAClC,IACE,CAAC,aAAa,KAAK,aAAa,CAAC,UAAU,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,UAAU,CAAC;wBACjF,CAAC,aAAa,KAAK,aAAa,CAAC,UAAU,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,UAAU,CAAC,EACjF,CAAC;wBACD,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;oBAC1B,CAAC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,QAAQ,CAAC,MAAM,GAAG,EAAE;QAClB,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAC3B,CAAC;IAED,gBAAgB;IAChB,sBAAsB,CAAC,CAAoB;QACzC,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,uBAAuB,EAAE,CAAC;YACpD,IACE,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAC,iBAAiB;gBACpC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,QAAQ,IAAI,QAAQ,EACvD,CAAC;gBACD,IAAI,CAAC,OAAO,CAAC,IAAI,CACf,kGAAkG,EAClG,CAAC,CAAC,QAAQ,CACX,CAAC;YACJ,CAAC;YACD,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YACjC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;YAChE,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;QAC5D,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,wBAAwB,CAAC,QAAkE;QACzF,IAAI,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YACpD,MAAM,IAAI,mBAAmB,CAAC,4CAA4C,CAAC,CAAC;QAC9E,CAAC;QAED,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC9C,CAAC;CACF;AAED,MAAM,OAAO,UAAU;IACrB,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC;IACnB,QAAQ,GAA8B,EAAE,CAAC;IAEzC,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;CACF;AAED;;;;;;;GAOG;AACH,MAAM,OAAO,UAAU;IACrB,IAAI,CAAY;IAChB,SAAS,CAAsB;IAC/B,SAAS,CAA8C;IAEvD,gBAAgB;IAChB,YACE,GAAc,EACd,QAA6B,EAC7B,QAAqD;QAErD,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;QAChB,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;IAC5B,CAAC;IAED,4DAA4D;IAC5D,IAAI,EAAE;QACJ,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IACtB,CAAC;IAED,uFAAuF;IACvF,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,uFAAuF;IACvF,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;IACxB,CAAC;IAED,uFAAuF;IACvF,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;IAC/B,CAAC;IAED,iEAAiE;IACjE,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;IAC7B,CAAC;IAED,uBAAuB;IACvB,KAAK,CAAC,MAAM;QACV,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;IACzB,CAAC;IAED,8DAA8D;IAC9D,KAAK,CAAC,MAAM,CAAC,IAAI,GAAG,EAAE,EAAE,QAAQ,GAAG,EAAE,EAAE,QAAQ,GAAG,EAAE;QAClD,IAAI,QAAQ,KAAK,EAAE;YAAE,QAAQ,GAAG,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC;QAEnD,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC/C,CAAC;CACF"}
@@ -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"}
@@ -5,33 +5,69 @@ import { z } from 'zod';
5
5
  /** @internal */
6
6
  export const oaiParams = (p) => {
7
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];
8
+ const requiredProperties = [];
9
+ const processZodType = (field) => {
10
+ const isOptional = field instanceof z.ZodOptional;
11
+ const nestedField = isOptional ? field._def.innerType : field;
12
+ const description = field._def.description;
13
+ if (nestedField instanceof z.ZodEnum) {
14
+ return {
15
+ type: typeof nestedField._def.values[0],
16
+ ...(description && { description }),
17
+ enum: nestedField._def.values,
18
+ };
19
+ }
20
+ else if (nestedField instanceof z.ZodArray) {
21
+ const elementType = nestedField._def.type;
22
+ return {
23
+ type: 'array',
24
+ ...(description && { description }),
25
+ items: processZodType(elementType),
26
+ };
27
+ }
28
+ else if (nestedField instanceof z.ZodObject) {
29
+ const { properties, required } = oaiParams(nestedField);
30
+ return {
31
+ type: 'object',
32
+ ...(description && { description }),
33
+ properties,
34
+ required,
35
+ };
17
36
  }
18
37
  else {
19
- type = field._def.typeName.toLowerCase();
38
+ let type = nestedField._def.typeName.toLowerCase();
39
+ type = type.includes('zod') ? type.substring(3) : type;
40
+ return {
41
+ type,
42
+ ...(description && { description }),
43
+ };
20
44
  }
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);
45
+ };
46
+ for (const key in p.shape) {
47
+ const field = p.shape[key];
48
+ properties[key] = processZodType(field);
49
+ if (!(field instanceof z.ZodOptional)) {
50
+ requiredProperties.push(key);
28
51
  }
29
52
  }
30
53
  const type = 'object';
31
54
  return {
32
55
  type,
33
56
  properties,
34
- required_properties,
57
+ required: requiredProperties,
58
+ };
59
+ };
60
+ /** @internal */
61
+ export const oaiBuildFunctionInfo = (fncCtx, toolCallId, fncName, rawArgs) => {
62
+ if (!fncCtx[fncName]) {
63
+ throw new Error(`AI function ${fncName} not found`);
64
+ }
65
+ return {
66
+ name: fncName,
67
+ func: fncCtx[fncName],
68
+ toolCallId,
69
+ rawParams: rawArgs,
70
+ params: JSON.parse(rawArgs),
35
71
  };
36
72
  };
37
73
  //# sourceMappingURL=function_context.js.map