@livekit/agents 1.0.47 → 1.0.48

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 (112) hide show
  1. package/dist/beta/index.cjs +29 -0
  2. package/dist/beta/index.cjs.map +1 -0
  3. package/dist/beta/index.d.cts +2 -0
  4. package/dist/beta/index.d.ts +2 -0
  5. package/dist/beta/index.d.ts.map +1 -0
  6. package/dist/beta/index.js +7 -0
  7. package/dist/beta/index.js.map +1 -0
  8. package/dist/beta/workflows/index.cjs +29 -0
  9. package/dist/beta/workflows/index.cjs.map +1 -0
  10. package/dist/beta/workflows/index.d.cts +2 -0
  11. package/dist/beta/workflows/index.d.ts +2 -0
  12. package/dist/beta/workflows/index.d.ts.map +1 -0
  13. package/dist/beta/workflows/index.js +7 -0
  14. package/dist/beta/workflows/index.js.map +1 -0
  15. package/dist/beta/workflows/task_group.cjs +162 -0
  16. package/dist/beta/workflows/task_group.cjs.map +1 -0
  17. package/dist/beta/workflows/task_group.d.cts +32 -0
  18. package/dist/beta/workflows/task_group.d.ts +32 -0
  19. package/dist/beta/workflows/task_group.d.ts.map +1 -0
  20. package/dist/beta/workflows/task_group.js +138 -0
  21. package/dist/beta/workflows/task_group.js.map +1 -0
  22. package/dist/index.cjs +3 -0
  23. package/dist/index.cjs.map +1 -1
  24. package/dist/index.d.cts +2 -1
  25. package/dist/index.d.ts +2 -1
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js +2 -0
  28. package/dist/index.js.map +1 -1
  29. package/dist/inference/api_protos.d.cts +59 -59
  30. package/dist/inference/api_protos.d.ts +59 -59
  31. package/dist/llm/chat_context.cjs +89 -1
  32. package/dist/llm/chat_context.cjs.map +1 -1
  33. package/dist/llm/chat_context.d.cts +10 -1
  34. package/dist/llm/chat_context.d.ts +10 -1
  35. package/dist/llm/chat_context.d.ts.map +1 -1
  36. package/dist/llm/chat_context.js +89 -1
  37. package/dist/llm/chat_context.js.map +1 -1
  38. package/dist/llm/chat_context.test.cjs +43 -0
  39. package/dist/llm/chat_context.test.cjs.map +1 -1
  40. package/dist/llm/chat_context.test.js +43 -0
  41. package/dist/llm/chat_context.test.js.map +1 -1
  42. package/dist/llm/index.cjs +2 -0
  43. package/dist/llm/index.cjs.map +1 -1
  44. package/dist/llm/index.d.cts +1 -1
  45. package/dist/llm/index.d.ts +1 -1
  46. package/dist/llm/index.d.ts.map +1 -1
  47. package/dist/llm/index.js +3 -1
  48. package/dist/llm/index.js.map +1 -1
  49. package/dist/llm/provider_format/index.d.cts +1 -1
  50. package/dist/llm/provider_format/index.d.ts +1 -1
  51. package/dist/llm/tool_context.cjs +7 -0
  52. package/dist/llm/tool_context.cjs.map +1 -1
  53. package/dist/llm/tool_context.d.cts +10 -2
  54. package/dist/llm/tool_context.d.ts +10 -2
  55. package/dist/llm/tool_context.d.ts.map +1 -1
  56. package/dist/llm/tool_context.js +6 -0
  57. package/dist/llm/tool_context.js.map +1 -1
  58. package/dist/utils.cjs +1 -0
  59. package/dist/utils.cjs.map +1 -1
  60. package/dist/utils.d.ts.map +1 -1
  61. package/dist/utils.js +1 -0
  62. package/dist/utils.js.map +1 -1
  63. package/dist/version.cjs +1 -1
  64. package/dist/version.js +1 -1
  65. package/dist/voice/agent.cjs +9 -0
  66. package/dist/voice/agent.cjs.map +1 -1
  67. package/dist/voice/agent.d.cts +1 -0
  68. package/dist/voice/agent.d.ts +1 -0
  69. package/dist/voice/agent.d.ts.map +1 -1
  70. package/dist/voice/agent.js +9 -0
  71. package/dist/voice/agent.js.map +1 -1
  72. package/dist/voice/agent_activity.cjs +31 -8
  73. package/dist/voice/agent_activity.cjs.map +1 -1
  74. package/dist/voice/agent_activity.d.cts +7 -0
  75. package/dist/voice/agent_activity.d.ts +7 -0
  76. package/dist/voice/agent_activity.d.ts.map +1 -1
  77. package/dist/voice/agent_activity.js +31 -8
  78. package/dist/voice/agent_activity.js.map +1 -1
  79. package/dist/voice/room_io/room_io.cjs +11 -2
  80. package/dist/voice/room_io/room_io.cjs.map +1 -1
  81. package/dist/voice/room_io/room_io.d.ts.map +1 -1
  82. package/dist/voice/room_io/room_io.js +12 -3
  83. package/dist/voice/room_io/room_io.js.map +1 -1
  84. package/dist/voice/testing/fake_llm.cjs +127 -0
  85. package/dist/voice/testing/fake_llm.cjs.map +1 -0
  86. package/dist/voice/testing/fake_llm.d.cts +30 -0
  87. package/dist/voice/testing/fake_llm.d.ts +30 -0
  88. package/dist/voice/testing/fake_llm.d.ts.map +1 -0
  89. package/dist/voice/testing/fake_llm.js +103 -0
  90. package/dist/voice/testing/fake_llm.js.map +1 -0
  91. package/dist/voice/testing/index.cjs +3 -0
  92. package/dist/voice/testing/index.cjs.map +1 -1
  93. package/dist/voice/testing/index.d.cts +1 -0
  94. package/dist/voice/testing/index.d.ts +1 -0
  95. package/dist/voice/testing/index.d.ts.map +1 -1
  96. package/dist/voice/testing/index.js +2 -0
  97. package/dist/voice/testing/index.js.map +1 -1
  98. package/package.json +1 -1
  99. package/src/beta/index.ts +9 -0
  100. package/src/beta/workflows/index.ts +9 -0
  101. package/src/beta/workflows/task_group.ts +194 -0
  102. package/src/index.ts +2 -1
  103. package/src/llm/chat_context.test.ts +48 -0
  104. package/src/llm/chat_context.ts +123 -0
  105. package/src/llm/index.ts +1 -0
  106. package/src/llm/tool_context.ts +14 -0
  107. package/src/utils.ts +5 -0
  108. package/src/voice/agent.ts +11 -0
  109. package/src/voice/agent_activity.ts +44 -6
  110. package/src/voice/room_io/room_io.ts +14 -3
  111. package/src/voice/testing/fake_llm.ts +138 -0
  112. package/src/voice/testing/index.ts +2 -0
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var beta_exports = {};
20
+ __export(beta_exports, {
21
+ TaskGroup: () => import_workflows.TaskGroup
22
+ });
23
+ module.exports = __toCommonJS(beta_exports);
24
+ var import_workflows = require("./workflows/index.cjs");
25
+ // Annotate the CommonJS export names for ESM import in node:
26
+ 0 && (module.exports = {
27
+ TaskGroup
28
+ });
29
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/beta/index.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2026 LiveKit, Inc.\n//\n// SPDX-License-Identifier: Apache-2.0\nexport {\n TaskGroup,\n type TaskCompletedEvent,\n type TaskGroupOptions,\n type TaskGroupResult,\n} from './workflows/index.js';\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,uBAKO;","names":[]}
@@ -0,0 +1,2 @@
1
+ export { TaskGroup, type TaskCompletedEvent, type TaskGroupOptions, type TaskGroupResult, } from './workflows/index.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,2 @@
1
+ export { TaskGroup, type TaskCompletedEvent, type TaskGroupOptions, type TaskGroupResult, } from './workflows/index.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/beta/index.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,SAAS,EACT,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,eAAe,GACrB,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,7 @@
1
+ import {
2
+ TaskGroup
3
+ } from "./workflows/index.js";
4
+ export {
5
+ TaskGroup
6
+ };
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/beta/index.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2026 LiveKit, Inc.\n//\n// SPDX-License-Identifier: Apache-2.0\nexport {\n TaskGroup,\n type TaskCompletedEvent,\n type TaskGroupOptions,\n type TaskGroupResult,\n} from './workflows/index.js';\n"],"mappings":"AAGA;AAAA,EACE;AAAA,OAIK;","names":[]}
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var workflows_exports = {};
20
+ __export(workflows_exports, {
21
+ TaskGroup: () => import_task_group.TaskGroup
22
+ });
23
+ module.exports = __toCommonJS(workflows_exports);
24
+ var import_task_group = require("./task_group.cjs");
25
+ // Annotate the CommonJS export names for ESM import in node:
26
+ 0 && (module.exports = {
27
+ TaskGroup
28
+ });
29
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/beta/workflows/index.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2026 LiveKit, Inc.\n//\n// SPDX-License-Identifier: Apache-2.0\nexport {\n TaskGroup,\n type TaskCompletedEvent,\n type TaskGroupOptions,\n type TaskGroupResult,\n} from './task_group.js';\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,wBAKO;","names":[]}
@@ -0,0 +1,2 @@
1
+ export { TaskGroup, type TaskCompletedEvent, type TaskGroupOptions, type TaskGroupResult, } from './task_group.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,2 @@
1
+ export { TaskGroup, type TaskCompletedEvent, type TaskGroupOptions, type TaskGroupResult, } from './task_group.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/beta/workflows/index.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,SAAS,EACT,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,eAAe,GACrB,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,7 @@
1
+ import {
2
+ TaskGroup
3
+ } from "./task_group.js";
4
+ export {
5
+ TaskGroup
6
+ };
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/beta/workflows/index.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2026 LiveKit, Inc.\n//\n// SPDX-License-Identifier: Apache-2.0\nexport {\n TaskGroup,\n type TaskCompletedEvent,\n type TaskGroupOptions,\n type TaskGroupResult,\n} from './task_group.js';\n"],"mappings":"AAGA;AAAA,EACE;AAAA,OAIK;","names":[]}
@@ -0,0 +1,162 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var task_group_exports = {};
20
+ __export(task_group_exports, {
21
+ TaskGroup: () => TaskGroup
22
+ });
23
+ module.exports = __toCommonJS(task_group_exports);
24
+ var import_zod = require("zod");
25
+ var import_llm = require("../../llm/index.cjs");
26
+ var import_agent = require("../../voice/agent.cjs");
27
+ class OutOfScopeError extends import_llm.ToolError {
28
+ targetTaskIds;
29
+ constructor(targetTaskIds) {
30
+ super("out_of_scope");
31
+ this.targetTaskIds = targetTaskIds;
32
+ }
33
+ }
34
+ class TaskGroup extends import_agent.AgentTask {
35
+ _summarizeChatCtx;
36
+ _returnExceptions;
37
+ _visitedTasks = /* @__PURE__ */ new Set();
38
+ _registeredFactories = /* @__PURE__ */ new Map();
39
+ _taskCompletedCallback;
40
+ _currentTask;
41
+ constructor(options = {}) {
42
+ const { summarizeChatCtx = true, returnExceptions = false, chatCtx, onTaskCompleted } = options;
43
+ super({ instructions: "*empty*", chatCtx });
44
+ this._summarizeChatCtx = summarizeChatCtx;
45
+ this._returnExceptions = returnExceptions;
46
+ this._taskCompletedCallback = onTaskCompleted;
47
+ }
48
+ add(task, { id, description }) {
49
+ this._registeredFactories.set(id, { taskFactory: task, id, description });
50
+ return this;
51
+ }
52
+ async onEnter() {
53
+ const taskStack = [...this._registeredFactories.keys()];
54
+ const taskResults = {};
55
+ while (taskStack.length > 0) {
56
+ const taskId = taskStack.shift();
57
+ const factoryInfo = this._registeredFactories.get(taskId);
58
+ this._currentTask = factoryInfo.taskFactory();
59
+ const sharedChatCtx = this._chatCtx.copy();
60
+ await this._currentTask.updateChatCtx(sharedChatCtx);
61
+ const outOfScopeTool = this.buildOutOfScopeTool(taskId);
62
+ if (outOfScopeTool) {
63
+ await this._currentTask.updateTools({
64
+ ...this._currentTask.toolCtx,
65
+ out_of_scope: outOfScopeTool
66
+ });
67
+ }
68
+ try {
69
+ this._visitedTasks.add(taskId);
70
+ const res = await this._currentTask.run();
71
+ taskResults[taskId] = res;
72
+ if (this._taskCompletedCallback) {
73
+ await this._taskCompletedCallback({
74
+ agentTask: this._currentTask,
75
+ taskId,
76
+ result: res
77
+ });
78
+ }
79
+ } catch (e) {
80
+ if (e instanceof OutOfScopeError) {
81
+ taskStack.unshift(taskId);
82
+ for (let i = e.targetTaskIds.length - 1; i >= 0; i--) {
83
+ taskStack.unshift(e.targetTaskIds[i]);
84
+ }
85
+ continue;
86
+ }
87
+ if (this._returnExceptions) {
88
+ taskResults[taskId] = e;
89
+ continue;
90
+ } else {
91
+ this.complete(e instanceof Error ? e : new Error(String(e)));
92
+ return;
93
+ }
94
+ }
95
+ }
96
+ try {
97
+ if (this._summarizeChatCtx) {
98
+ const sessionLlm = this.session.llm;
99
+ if (!(sessionLlm instanceof import_llm.LLM)) {
100
+ throw new Error("summarizeChatCtx requires a standard LLM on the session");
101
+ }
102
+ const ctxToSummarize = this._chatCtx.copy({
103
+ excludeInstructions: true,
104
+ excludeHandoff: true,
105
+ excludeEmptyMessage: true,
106
+ excludeFunctionCall: true
107
+ });
108
+ const summarizedChatCtx = await ctxToSummarize._summarize(sessionLlm, {
109
+ keepLastTurns: 0
110
+ });
111
+ await this.updateChatCtx(summarizedChatCtx);
112
+ }
113
+ } catch (e) {
114
+ this.complete(new Error(`failed to summarize the chat_ctx: ${e}`));
115
+ return;
116
+ }
117
+ this.complete({ taskResults });
118
+ }
119
+ buildOutOfScopeTool(activeTaskId) {
120
+ if (this._visitedTasks.size === 0) {
121
+ return void 0;
122
+ }
123
+ const regressionTaskIds = new Set(this._visitedTasks);
124
+ regressionTaskIds.delete(activeTaskId);
125
+ if (regressionTaskIds.size === 0) {
126
+ return void 0;
127
+ }
128
+ const taskRepr = {};
129
+ for (const [id, info] of this._registeredFactories) {
130
+ if (regressionTaskIds.has(id)) {
131
+ taskRepr[id] = info.description;
132
+ }
133
+ }
134
+ const taskIdValues = [...regressionTaskIds];
135
+ const description = `Call to regress to other tasks according to what the user requested to modify, return the corresponding task ids. For example, if the user wants to change their email and there is a task with id "email_task" with a description of "Collect the user's email", return the id ("get_email_task"). If the user requests to regress to multiple tasks, such as changing their phone number and email, return both task ids in the order they were requested. The following are the IDs and their corresponding task description. ${JSON.stringify(taskRepr)}`;
136
+ const currentTask = this._currentTask;
137
+ const registeredFactories = this._registeredFactories;
138
+ const visitedTasks = this._visitedTasks;
139
+ return (0, import_llm.tool)({
140
+ description,
141
+ flags: import_llm.ToolFlag.IGNORE_ON_ENTER,
142
+ parameters: import_zod.z.object({
143
+ task_ids: import_zod.z.array(import_zod.z.enum(taskIdValues)).describe("The IDs of the tasks requested")
144
+ }),
145
+ execute: async ({ task_ids }) => {
146
+ for (const tid of task_ids) {
147
+ if (!registeredFactories.has(tid) || !visitedTasks.has(tid)) {
148
+ throw new import_llm.ToolError(`Unable to regress, invalid task id ${tid}`);
149
+ }
150
+ }
151
+ if (currentTask && !currentTask.done) {
152
+ currentTask.complete(new OutOfScopeError(task_ids));
153
+ }
154
+ }
155
+ });
156
+ }
157
+ }
158
+ // Annotate the CommonJS export names for ESM import in node:
159
+ 0 && (module.exports = {
160
+ TaskGroup
161
+ });
162
+ //# sourceMappingURL=task_group.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/beta/workflows/task_group.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2026 LiveKit, Inc.\n//\n// SPDX-License-Identifier: Apache-2.0\nimport { z } from 'zod';\nimport type { ChatContext } from '../../llm/chat_context.js';\nimport { LLM, ToolError, ToolFlag, tool } from '../../llm/index.js';\nimport { AgentTask } from '../../voice/agent.js';\n\ninterface FactoryInfo {\n taskFactory: () => AgentTask;\n id: string;\n description: string;\n}\n\nexport interface TaskGroupResult {\n taskResults: Record<string, unknown>;\n}\n\nexport interface TaskCompletedEvent {\n agentTask: AgentTask;\n taskId: string;\n result: unknown;\n}\n\nclass OutOfScopeError extends ToolError {\n readonly targetTaskIds: string[];\n\n constructor(targetTaskIds: string[]) {\n super('out_of_scope');\n this.targetTaskIds = targetTaskIds;\n }\n}\n\nexport interface TaskGroupOptions {\n summarizeChatCtx?: boolean;\n returnExceptions?: boolean;\n chatCtx?: ChatContext;\n onTaskCompleted?: (event: TaskCompletedEvent) => Promise<void>;\n}\n\nexport class TaskGroup extends AgentTask<TaskGroupResult> {\n private _summarizeChatCtx: boolean;\n private _returnExceptions: boolean;\n private _visitedTasks = new Set<string>();\n private _registeredFactories = new Map<string, FactoryInfo>();\n private _taskCompletedCallback?: (event: TaskCompletedEvent) => Promise<void>;\n private _currentTask?: AgentTask;\n\n constructor(options: TaskGroupOptions = {}) {\n const { summarizeChatCtx = true, returnExceptions = false, chatCtx, onTaskCompleted } = options;\n\n super({ instructions: '*empty*', chatCtx });\n\n this._summarizeChatCtx = summarizeChatCtx;\n this._returnExceptions = returnExceptions;\n this._taskCompletedCallback = onTaskCompleted;\n }\n\n add(task: () => AgentTask, { id, description }: { id: string; description: string }): this {\n this._registeredFactories.set(id, { taskFactory: task, id, description });\n return this;\n }\n\n async onEnter(): Promise<void> {\n const taskStack = [...this._registeredFactories.keys()];\n const taskResults: Record<string, unknown> = {};\n\n while (taskStack.length > 0) {\n const taskId = taskStack.shift()!;\n const factoryInfo = this._registeredFactories.get(taskId)!;\n\n this._currentTask = factoryInfo.taskFactory();\n\n const sharedChatCtx = this._chatCtx.copy();\n await this._currentTask.updateChatCtx(sharedChatCtx);\n\n const outOfScopeTool = this.buildOutOfScopeTool(taskId);\n if (outOfScopeTool) {\n await this._currentTask.updateTools({\n ...this._currentTask.toolCtx,\n out_of_scope: outOfScopeTool,\n });\n }\n\n try {\n this._visitedTasks.add(taskId);\n const res = await this._currentTask.run();\n taskResults[taskId] = res;\n\n if (this._taskCompletedCallback) {\n await this._taskCompletedCallback({\n agentTask: this._currentTask,\n taskId,\n result: res,\n });\n }\n } catch (e) {\n if (e instanceof OutOfScopeError) {\n taskStack.unshift(taskId);\n for (let i = e.targetTaskIds.length - 1; i >= 0; i--) {\n taskStack.unshift(e.targetTaskIds[i]!);\n }\n continue;\n }\n\n if (this._returnExceptions) {\n taskResults[taskId] = e;\n continue;\n } else {\n this.complete(e instanceof Error ? e : new Error(String(e)));\n return;\n }\n }\n }\n\n try {\n if (this._summarizeChatCtx) {\n const sessionLlm = this.session.llm;\n if (!(sessionLlm instanceof LLM)) {\n throw new Error('summarizeChatCtx requires a standard LLM on the session');\n }\n\n // TODO(parity): Add excludeConfigUpdate when AgentConfigUpdate is ported\n const ctxToSummarize = this._chatCtx.copy({\n excludeInstructions: true,\n excludeHandoff: true,\n excludeEmptyMessage: true,\n excludeFunctionCall: true,\n });\n\n const summarizedChatCtx = await ctxToSummarize._summarize(sessionLlm, {\n keepLastTurns: 0,\n });\n await this.updateChatCtx(summarizedChatCtx);\n }\n } catch (e) {\n this.complete(new Error(`failed to summarize the chat_ctx: ${e}`));\n return;\n }\n\n this.complete({ taskResults });\n }\n\n private buildOutOfScopeTool(activeTaskId: string) {\n if (this._visitedTasks.size === 0) {\n return undefined;\n }\n\n const regressionTaskIds = new Set(this._visitedTasks);\n regressionTaskIds.delete(activeTaskId);\n\n if (regressionTaskIds.size === 0) {\n return undefined;\n }\n\n const taskRepr: Record<string, string> = {};\n for (const [id, info] of this._registeredFactories) {\n if (regressionTaskIds.has(id)) {\n taskRepr[id] = info.description;\n }\n }\n\n const taskIdValues = [...regressionTaskIds] as [string, ...string[]];\n\n const description =\n 'Call to regress to other tasks according to what the user requested to modify, return the corresponding task ids. ' +\n 'For example, if the user wants to change their email and there is a task with id \"email_task\" with a description of \"Collect the user\\'s email\", return the id (\"get_email_task\"). ' +\n 'If the user requests to regress to multiple tasks, such as changing their phone number and email, return both task ids in the order they were requested. ' +\n `The following are the IDs and their corresponding task description. ${JSON.stringify(taskRepr)}`;\n\n const currentTask = this._currentTask;\n const registeredFactories = this._registeredFactories;\n const visitedTasks = this._visitedTasks;\n\n return tool({\n description,\n flags: ToolFlag.IGNORE_ON_ENTER,\n parameters: z.object({\n task_ids: z.array(z.enum(taskIdValues)).describe('The IDs of the tasks requested'),\n }),\n execute: async ({ task_ids }: { task_ids: string[] }) => {\n for (const tid of task_ids) {\n if (!registeredFactories.has(tid) || !visitedTasks.has(tid)) {\n throw new ToolError(`Unable to regress, invalid task id ${tid}`);\n }\n }\n\n if (currentTask && !currentTask.done) {\n currentTask.complete(new OutOfScopeError(task_ids));\n }\n },\n });\n }\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,32 @@
1
+ import type { ChatContext } from '../../llm/chat_context.js';
2
+ import { AgentTask } from '../../voice/agent.js';
3
+ export interface TaskGroupResult {
4
+ taskResults: Record<string, unknown>;
5
+ }
6
+ export interface TaskCompletedEvent {
7
+ agentTask: AgentTask;
8
+ taskId: string;
9
+ result: unknown;
10
+ }
11
+ export interface TaskGroupOptions {
12
+ summarizeChatCtx?: boolean;
13
+ returnExceptions?: boolean;
14
+ chatCtx?: ChatContext;
15
+ onTaskCompleted?: (event: TaskCompletedEvent) => Promise<void>;
16
+ }
17
+ export declare class TaskGroup extends AgentTask<TaskGroupResult> {
18
+ private _summarizeChatCtx;
19
+ private _returnExceptions;
20
+ private _visitedTasks;
21
+ private _registeredFactories;
22
+ private _taskCompletedCallback?;
23
+ private _currentTask?;
24
+ constructor(options?: TaskGroupOptions);
25
+ add(task: () => AgentTask, { id, description }: {
26
+ id: string;
27
+ description: string;
28
+ }): this;
29
+ onEnter(): Promise<void>;
30
+ private buildOutOfScopeTool;
31
+ }
32
+ //# sourceMappingURL=task_group.d.ts.map
@@ -0,0 +1,32 @@
1
+ import type { ChatContext } from '../../llm/chat_context.js';
2
+ import { AgentTask } from '../../voice/agent.js';
3
+ export interface TaskGroupResult {
4
+ taskResults: Record<string, unknown>;
5
+ }
6
+ export interface TaskCompletedEvent {
7
+ agentTask: AgentTask;
8
+ taskId: string;
9
+ result: unknown;
10
+ }
11
+ export interface TaskGroupOptions {
12
+ summarizeChatCtx?: boolean;
13
+ returnExceptions?: boolean;
14
+ chatCtx?: ChatContext;
15
+ onTaskCompleted?: (event: TaskCompletedEvent) => Promise<void>;
16
+ }
17
+ export declare class TaskGroup extends AgentTask<TaskGroupResult> {
18
+ private _summarizeChatCtx;
19
+ private _returnExceptions;
20
+ private _visitedTasks;
21
+ private _registeredFactories;
22
+ private _taskCompletedCallback?;
23
+ private _currentTask?;
24
+ constructor(options?: TaskGroupOptions);
25
+ add(task: () => AgentTask, { id, description }: {
26
+ id: string;
27
+ description: string;
28
+ }): this;
29
+ onEnter(): Promise<void>;
30
+ private buildOutOfScopeTool;
31
+ }
32
+ //# sourceMappingURL=task_group.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task_group.d.ts","sourceRoot":"","sources":["../../../src/beta/workflows/task_group.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAE7D,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAQjD,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,SAAS,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;CACjB;AAWD,MAAM,WAAW,gBAAgB;IAC/B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAChE;AAED,qBAAa,SAAU,SAAQ,SAAS,CAAC,eAAe,CAAC;IACvD,OAAO,CAAC,iBAAiB,CAAU;IACnC,OAAO,CAAC,iBAAiB,CAAU;IACnC,OAAO,CAAC,aAAa,CAAqB;IAC1C,OAAO,CAAC,oBAAoB,CAAkC;IAC9D,OAAO,CAAC,sBAAsB,CAAC,CAA+C;IAC9E,OAAO,CAAC,YAAY,CAAC,CAAY;gBAErB,OAAO,GAAE,gBAAqB;IAU1C,GAAG,CAAC,IAAI,EAAE,MAAM,SAAS,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAKpF,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAgF9B,OAAO,CAAC,mBAAmB;CAkD5B"}
@@ -0,0 +1,138 @@
1
+ import { z } from "zod";
2
+ import { LLM, ToolError, ToolFlag, tool } from "../../llm/index.js";
3
+ import { AgentTask } from "../../voice/agent.js";
4
+ class OutOfScopeError extends ToolError {
5
+ targetTaskIds;
6
+ constructor(targetTaskIds) {
7
+ super("out_of_scope");
8
+ this.targetTaskIds = targetTaskIds;
9
+ }
10
+ }
11
+ class TaskGroup extends AgentTask {
12
+ _summarizeChatCtx;
13
+ _returnExceptions;
14
+ _visitedTasks = /* @__PURE__ */ new Set();
15
+ _registeredFactories = /* @__PURE__ */ new Map();
16
+ _taskCompletedCallback;
17
+ _currentTask;
18
+ constructor(options = {}) {
19
+ const { summarizeChatCtx = true, returnExceptions = false, chatCtx, onTaskCompleted } = options;
20
+ super({ instructions: "*empty*", chatCtx });
21
+ this._summarizeChatCtx = summarizeChatCtx;
22
+ this._returnExceptions = returnExceptions;
23
+ this._taskCompletedCallback = onTaskCompleted;
24
+ }
25
+ add(task, { id, description }) {
26
+ this._registeredFactories.set(id, { taskFactory: task, id, description });
27
+ return this;
28
+ }
29
+ async onEnter() {
30
+ const taskStack = [...this._registeredFactories.keys()];
31
+ const taskResults = {};
32
+ while (taskStack.length > 0) {
33
+ const taskId = taskStack.shift();
34
+ const factoryInfo = this._registeredFactories.get(taskId);
35
+ this._currentTask = factoryInfo.taskFactory();
36
+ const sharedChatCtx = this._chatCtx.copy();
37
+ await this._currentTask.updateChatCtx(sharedChatCtx);
38
+ const outOfScopeTool = this.buildOutOfScopeTool(taskId);
39
+ if (outOfScopeTool) {
40
+ await this._currentTask.updateTools({
41
+ ...this._currentTask.toolCtx,
42
+ out_of_scope: outOfScopeTool
43
+ });
44
+ }
45
+ try {
46
+ this._visitedTasks.add(taskId);
47
+ const res = await this._currentTask.run();
48
+ taskResults[taskId] = res;
49
+ if (this._taskCompletedCallback) {
50
+ await this._taskCompletedCallback({
51
+ agentTask: this._currentTask,
52
+ taskId,
53
+ result: res
54
+ });
55
+ }
56
+ } catch (e) {
57
+ if (e instanceof OutOfScopeError) {
58
+ taskStack.unshift(taskId);
59
+ for (let i = e.targetTaskIds.length - 1; i >= 0; i--) {
60
+ taskStack.unshift(e.targetTaskIds[i]);
61
+ }
62
+ continue;
63
+ }
64
+ if (this._returnExceptions) {
65
+ taskResults[taskId] = e;
66
+ continue;
67
+ } else {
68
+ this.complete(e instanceof Error ? e : new Error(String(e)));
69
+ return;
70
+ }
71
+ }
72
+ }
73
+ try {
74
+ if (this._summarizeChatCtx) {
75
+ const sessionLlm = this.session.llm;
76
+ if (!(sessionLlm instanceof LLM)) {
77
+ throw new Error("summarizeChatCtx requires a standard LLM on the session");
78
+ }
79
+ const ctxToSummarize = this._chatCtx.copy({
80
+ excludeInstructions: true,
81
+ excludeHandoff: true,
82
+ excludeEmptyMessage: true,
83
+ excludeFunctionCall: true
84
+ });
85
+ const summarizedChatCtx = await ctxToSummarize._summarize(sessionLlm, {
86
+ keepLastTurns: 0
87
+ });
88
+ await this.updateChatCtx(summarizedChatCtx);
89
+ }
90
+ } catch (e) {
91
+ this.complete(new Error(`failed to summarize the chat_ctx: ${e}`));
92
+ return;
93
+ }
94
+ this.complete({ taskResults });
95
+ }
96
+ buildOutOfScopeTool(activeTaskId) {
97
+ if (this._visitedTasks.size === 0) {
98
+ return void 0;
99
+ }
100
+ const regressionTaskIds = new Set(this._visitedTasks);
101
+ regressionTaskIds.delete(activeTaskId);
102
+ if (regressionTaskIds.size === 0) {
103
+ return void 0;
104
+ }
105
+ const taskRepr = {};
106
+ for (const [id, info] of this._registeredFactories) {
107
+ if (regressionTaskIds.has(id)) {
108
+ taskRepr[id] = info.description;
109
+ }
110
+ }
111
+ const taskIdValues = [...regressionTaskIds];
112
+ const description = `Call to regress to other tasks according to what the user requested to modify, return the corresponding task ids. For example, if the user wants to change their email and there is a task with id "email_task" with a description of "Collect the user's email", return the id ("get_email_task"). If the user requests to regress to multiple tasks, such as changing their phone number and email, return both task ids in the order they were requested. The following are the IDs and their corresponding task description. ${JSON.stringify(taskRepr)}`;
113
+ const currentTask = this._currentTask;
114
+ const registeredFactories = this._registeredFactories;
115
+ const visitedTasks = this._visitedTasks;
116
+ return tool({
117
+ description,
118
+ flags: ToolFlag.IGNORE_ON_ENTER,
119
+ parameters: z.object({
120
+ task_ids: z.array(z.enum(taskIdValues)).describe("The IDs of the tasks requested")
121
+ }),
122
+ execute: async ({ task_ids }) => {
123
+ for (const tid of task_ids) {
124
+ if (!registeredFactories.has(tid) || !visitedTasks.has(tid)) {
125
+ throw new ToolError(`Unable to regress, invalid task id ${tid}`);
126
+ }
127
+ }
128
+ if (currentTask && !currentTask.done) {
129
+ currentTask.complete(new OutOfScopeError(task_ids));
130
+ }
131
+ }
132
+ });
133
+ }
134
+ }
135
+ export {
136
+ TaskGroup
137
+ };
138
+ //# sourceMappingURL=task_group.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/beta/workflows/task_group.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2026 LiveKit, Inc.\n//\n// SPDX-License-Identifier: Apache-2.0\nimport { z } from 'zod';\nimport type { ChatContext } from '../../llm/chat_context.js';\nimport { LLM, ToolError, ToolFlag, tool } from '../../llm/index.js';\nimport { AgentTask } from '../../voice/agent.js';\n\ninterface FactoryInfo {\n taskFactory: () => AgentTask;\n id: string;\n description: string;\n}\n\nexport interface TaskGroupResult {\n taskResults: Record<string, unknown>;\n}\n\nexport interface TaskCompletedEvent {\n agentTask: AgentTask;\n taskId: string;\n result: unknown;\n}\n\nclass OutOfScopeError extends ToolError {\n readonly targetTaskIds: string[];\n\n constructor(targetTaskIds: string[]) {\n super('out_of_scope');\n this.targetTaskIds = targetTaskIds;\n }\n}\n\nexport interface TaskGroupOptions {\n summarizeChatCtx?: boolean;\n returnExceptions?: boolean;\n chatCtx?: ChatContext;\n onTaskCompleted?: (event: TaskCompletedEvent) => Promise<void>;\n}\n\nexport class TaskGroup extends AgentTask<TaskGroupResult> {\n private _summarizeChatCtx: boolean;\n private _returnExceptions: boolean;\n private _visitedTasks = new Set<string>();\n private _registeredFactories = new Map<string, FactoryInfo>();\n private _taskCompletedCallback?: (event: TaskCompletedEvent) => Promise<void>;\n private _currentTask?: AgentTask;\n\n constructor(options: TaskGroupOptions = {}) {\n const { summarizeChatCtx = true, returnExceptions = false, chatCtx, onTaskCompleted } = options;\n\n super({ instructions: '*empty*', chatCtx });\n\n this._summarizeChatCtx = summarizeChatCtx;\n this._returnExceptions = returnExceptions;\n this._taskCompletedCallback = onTaskCompleted;\n }\n\n add(task: () => AgentTask, { id, description }: { id: string; description: string }): this {\n this._registeredFactories.set(id, { taskFactory: task, id, description });\n return this;\n }\n\n async onEnter(): Promise<void> {\n const taskStack = [...this._registeredFactories.keys()];\n const taskResults: Record<string, unknown> = {};\n\n while (taskStack.length > 0) {\n const taskId = taskStack.shift()!;\n const factoryInfo = this._registeredFactories.get(taskId)!;\n\n this._currentTask = factoryInfo.taskFactory();\n\n const sharedChatCtx = this._chatCtx.copy();\n await this._currentTask.updateChatCtx(sharedChatCtx);\n\n const outOfScopeTool = this.buildOutOfScopeTool(taskId);\n if (outOfScopeTool) {\n await this._currentTask.updateTools({\n ...this._currentTask.toolCtx,\n out_of_scope: outOfScopeTool,\n });\n }\n\n try {\n this._visitedTasks.add(taskId);\n const res = await this._currentTask.run();\n taskResults[taskId] = res;\n\n if (this._taskCompletedCallback) {\n await this._taskCompletedCallback({\n agentTask: this._currentTask,\n taskId,\n result: res,\n });\n }\n } catch (e) {\n if (e instanceof OutOfScopeError) {\n taskStack.unshift(taskId);\n for (let i = e.targetTaskIds.length - 1; i >= 0; i--) {\n taskStack.unshift(e.targetTaskIds[i]!);\n }\n continue;\n }\n\n if (this._returnExceptions) {\n taskResults[taskId] = e;\n continue;\n } else {\n this.complete(e instanceof Error ? e : new Error(String(e)));\n return;\n }\n }\n }\n\n try {\n if (this._summarizeChatCtx) {\n const sessionLlm = this.session.llm;\n if (!(sessionLlm instanceof LLM)) {\n throw new Error('summarizeChatCtx requires a standard LLM on the session');\n }\n\n // TODO(parity): Add excludeConfigUpdate when AgentConfigUpdate is ported\n const ctxToSummarize = this._chatCtx.copy({\n excludeInstructions: true,\n excludeHandoff: true,\n excludeEmptyMessage: true,\n excludeFunctionCall: true,\n });\n\n const summarizedChatCtx = await ctxToSummarize._summarize(sessionLlm, {\n keepLastTurns: 0,\n });\n await this.updateChatCtx(summarizedChatCtx);\n }\n } catch (e) {\n this.complete(new Error(`failed to summarize the chat_ctx: ${e}`));\n return;\n }\n\n this.complete({ taskResults });\n }\n\n private buildOutOfScopeTool(activeTaskId: string) {\n if (this._visitedTasks.size === 0) {\n return undefined;\n }\n\n const regressionTaskIds = new Set(this._visitedTasks);\n regressionTaskIds.delete(activeTaskId);\n\n if (regressionTaskIds.size === 0) {\n return undefined;\n }\n\n const taskRepr: Record<string, string> = {};\n for (const [id, info] of this._registeredFactories) {\n if (regressionTaskIds.has(id)) {\n taskRepr[id] = info.description;\n }\n }\n\n const taskIdValues = [...regressionTaskIds] as [string, ...string[]];\n\n const description =\n 'Call to regress to other tasks according to what the user requested to modify, return the corresponding task ids. ' +\n 'For example, if the user wants to change their email and there is a task with id \"email_task\" with a description of \"Collect the user\\'s email\", return the id (\"get_email_task\"). ' +\n 'If the user requests to regress to multiple tasks, such as changing their phone number and email, return both task ids in the order they were requested. ' +\n `The following are the IDs and their corresponding task description. ${JSON.stringify(taskRepr)}`;\n\n const currentTask = this._currentTask;\n const registeredFactories = this._registeredFactories;\n const visitedTasks = this._visitedTasks;\n\n return tool({\n description,\n flags: ToolFlag.IGNORE_ON_ENTER,\n parameters: z.object({\n task_ids: z.array(z.enum(taskIdValues)).describe('The IDs of the tasks requested'),\n }),\n execute: async ({ task_ids }: { task_ids: string[] }) => {\n for (const tid of task_ids) {\n if (!registeredFactories.has(tid) || !visitedTasks.has(tid)) {\n throw new ToolError(`Unable to regress, invalid task id ${tid}`);\n }\n }\n\n if (currentTask && !currentTask.done) {\n currentTask.complete(new OutOfScopeError(task_ids));\n }\n },\n });\n }\n}\n"],"mappings":"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","names":[]}
package/dist/index.cjs CHANGED
@@ -29,6 +29,7 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
29
29
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
30
30
  var index_exports = {};
31
31
  __export(index_exports, {
32
+ beta: () => beta,
32
33
  cli: () => cli,
33
34
  createTimedString: () => import_io.createTimedString,
34
35
  inference: () => inference,
@@ -44,6 +45,7 @@ __export(index_exports, {
44
45
  voice: () => voice
45
46
  });
46
47
  module.exports = __toCommonJS(index_exports);
48
+ var beta = __toESM(require("./beta/index.cjs"), 1);
47
49
  var cli = __toESM(require("./cli.cjs"), 1);
48
50
  var inference = __toESM(require("./inference/index.cjs"), 1);
49
51
  var ipc = __toESM(require("./ipc/index.cjs"), 1);
@@ -72,6 +74,7 @@ var import_io = require("./voice/io.cjs");
72
74
  __reExport(index_exports, require("./worker.cjs"), module.exports);
73
75
  // Annotate the CommonJS export names for ESM import in node:
74
76
  0 && (module.exports = {
77
+ beta,
75
78
  cli,
76
79
  createTimedString,
77
80
  inference,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2024 LiveKit, Inc.\n//\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * LiveKit Agents is a framework for building realtime programmable participants that run on\n * servers.\n *\n * @see {@link https://docs.livekit.io/agents/overview | LiveKit Agents documentation}\n * @packageDocumentation\n */\nimport * as cli from './cli.js';\nimport * as inference from './inference/index.js';\nimport * as ipc from './ipc/index.js';\nimport * as llm from './llm/index.js';\nimport * as metrics from './metrics/index.js';\nimport * as stream from './stream/index.js';\nimport * as stt from './stt/index.js';\nimport * as telemetry from './telemetry/index.js';\nimport * as tokenize from './tokenize/index.js';\nimport * as tts from './tts/index.js';\nimport * as voice from './voice/index.js';\n\nexport * from './_exceptions.js';\nexport * from './audio.js';\nexport * from './connection_pool.js';\nexport * from './generator.js';\nexport * from './inference_runner.js';\nexport * from './job.js';\nexport * from './log.js';\nexport * from './plugin.js';\nexport * from './transcription.js';\nexport * from './types.js';\nexport * from './utils.js';\nexport * from './vad.js';\nexport * from './version.js';\nexport { createTimedString, isTimedString, type TimedString } from './voice/io.js';\nexport * from './worker.js';\n\nexport { cli, inference, ipc, llm, metrics, stream, stt, telemetry, tokenize, tts, voice };\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAWA,UAAqB;AACrB,gBAA2B;AAC3B,UAAqB;AACrB,UAAqB;AACrB,cAAyB;AACzB,aAAwB;AACxB,UAAqB;AACrB,gBAA2B;AAC3B,eAA0B;AAC1B,UAAqB;AACrB,YAAuB;AAEvB,0BAAc,6BAvBd;AAwBA,0BAAc,uBAxBd;AAyBA,0BAAc,iCAzBd;AA0BA,0BAAc,2BA1Bd;AA2BA,0BAAc,kCA3Bd;AA4BA,0BAAc,qBA5Bd;AA6BA,0BAAc,qBA7Bd;AA8BA,0BAAc,wBA9Bd;AA+BA,0BAAc,+BA/Bd;AAgCA,0BAAc,uBAhCd;AAiCA,0BAAc,uBAjCd;AAkCA,0BAAc,qBAlCd;AAmCA,0BAAc,yBAnCd;AAoCA,gBAAmE;AACnE,0BAAc,wBArCd;","names":[]}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2024 LiveKit, Inc.\n//\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * LiveKit Agents is a framework for building realtime programmable participants that run on\n * servers.\n *\n * @see {@link https://docs.livekit.io/agents/overview | LiveKit Agents documentation}\n * @packageDocumentation\n */\nimport * as beta from './beta/index.js';\nimport * as cli from './cli.js';\nimport * as inference from './inference/index.js';\nimport * as ipc from './ipc/index.js';\nimport * as llm from './llm/index.js';\nimport * as metrics from './metrics/index.js';\nimport * as stream from './stream/index.js';\nimport * as stt from './stt/index.js';\nimport * as telemetry from './telemetry/index.js';\nimport * as tokenize from './tokenize/index.js';\nimport * as tts from './tts/index.js';\nimport * as voice from './voice/index.js';\n\nexport * from './_exceptions.js';\nexport * from './audio.js';\nexport * from './connection_pool.js';\nexport * from './generator.js';\nexport * from './inference_runner.js';\nexport * from './job.js';\nexport * from './log.js';\nexport * from './plugin.js';\nexport * from './transcription.js';\nexport * from './types.js';\nexport * from './utils.js';\nexport * from './vad.js';\nexport * from './version.js';\nexport { createTimedString, isTimedString, type TimedString } from './voice/io.js';\nexport * from './worker.js';\n\nexport { beta, cli, inference, ipc, llm, metrics, stream, stt, telemetry, tokenize, tts, voice };\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAWA,WAAsB;AACtB,UAAqB;AACrB,gBAA2B;AAC3B,UAAqB;AACrB,UAAqB;AACrB,cAAyB;AACzB,aAAwB;AACxB,UAAqB;AACrB,gBAA2B;AAC3B,eAA0B;AAC1B,UAAqB;AACrB,YAAuB;AAEvB,0BAAc,6BAxBd;AAyBA,0BAAc,uBAzBd;AA0BA,0BAAc,iCA1Bd;AA2BA,0BAAc,2BA3Bd;AA4BA,0BAAc,kCA5Bd;AA6BA,0BAAc,qBA7Bd;AA8BA,0BAAc,qBA9Bd;AA+BA,0BAAc,wBA/Bd;AAgCA,0BAAc,+BAhCd;AAiCA,0BAAc,uBAjCd;AAkCA,0BAAc,uBAlCd;AAmCA,0BAAc,qBAnCd;AAoCA,0BAAc,yBApCd;AAqCA,gBAAmE;AACnE,0BAAc,wBAtCd;","names":[]}
package/dist/index.d.cts CHANGED
@@ -5,6 +5,7 @@
5
5
  * @see {@link https://docs.livekit.io/agents/overview | LiveKit Agents documentation}
6
6
  * @packageDocumentation
7
7
  */
8
+ import * as beta from './beta/index.js';
8
9
  import * as cli from './cli.js';
9
10
  import * as inference from './inference/index.js';
10
11
  import * as ipc from './ipc/index.js';
@@ -31,5 +32,5 @@ export * from './vad.js';
31
32
  export * from './version.js';
32
33
  export { createTimedString, isTimedString, type TimedString } from './voice/io.js';
33
34
  export * from './worker.js';
34
- export { cli, inference, ipc, llm, metrics, stream, stt, telemetry, tokenize, tts, voice };
35
+ export { beta, cli, inference, ipc, llm, metrics, stream, stt, telemetry, tokenize, tts, voice };
35
36
  //# sourceMappingURL=index.d.ts.map
package/dist/index.d.ts CHANGED
@@ -5,6 +5,7 @@
5
5
  * @see {@link https://docs.livekit.io/agents/overview | LiveKit Agents documentation}
6
6
  * @packageDocumentation
7
7
  */
8
+ import * as beta from './beta/index.js';
8
9
  import * as cli from './cli.js';
9
10
  import * as inference from './inference/index.js';
10
11
  import * as ipc from './ipc/index.js';
@@ -31,5 +32,5 @@ export * from './vad.js';
31
32
  export * from './version.js';
32
33
  export { createTimedString, isTimedString, type TimedString } from './voice/io.js';
33
34
  export * from './worker.js';
34
- export { cli, inference, ipc, llm, metrics, stream, stt, telemetry, tokenize, tts, voice };
35
+ export { beta, cli, inference, ipc, llm, metrics, stream, stt, telemetry, tokenize, tts, voice };
35
36
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA;;;;;;GAMG;AACH,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAChC,OAAO,KAAK,SAAS,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAC;AACtC,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAC;AACtC,OAAO,KAAK,OAAO,MAAM,oBAAoB,CAAC;AAC9C,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAC5C,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAC;AACtC,OAAO,KAAK,SAAS,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,QAAQ,MAAM,qBAAqB,CAAC;AAChD,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAC;AACtC,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAC;AAE1C,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AACnF,cAAc,aAAa,CAAC;AAE5B,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA;;;;;;GAMG;AACH,OAAO,KAAK,IAAI,MAAM,iBAAiB,CAAC;AACxC,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAChC,OAAO,KAAK,SAAS,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAC;AACtC,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAC;AACtC,OAAO,KAAK,OAAO,MAAM,oBAAoB,CAAC;AAC9C,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAC5C,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAC;AACtC,OAAO,KAAK,SAAS,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,QAAQ,MAAM,qBAAqB,CAAC;AAChD,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAC;AACtC,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAC;AAE1C,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AACnF,cAAc,aAAa,CAAC;AAE5B,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC"}
package/dist/index.js CHANGED
@@ -1,3 +1,4 @@
1
+ import * as beta from "./beta/index.js";
1
2
  import * as cli from "./cli.js";
2
3
  import * as inference from "./inference/index.js";
3
4
  import * as ipc from "./ipc/index.js";
@@ -25,6 +26,7 @@ export * from "./version.js";
25
26
  import { createTimedString, isTimedString } from "./voice/io.js";
26
27
  export * from "./worker.js";
27
28
  export {
29
+ beta,
28
30
  cli,
29
31
  createTimedString,
30
32
  inference,
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2024 LiveKit, Inc.\n//\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * LiveKit Agents is a framework for building realtime programmable participants that run on\n * servers.\n *\n * @see {@link https://docs.livekit.io/agents/overview | LiveKit Agents documentation}\n * @packageDocumentation\n */\nimport * as cli from './cli.js';\nimport * as inference from './inference/index.js';\nimport * as ipc from './ipc/index.js';\nimport * as llm from './llm/index.js';\nimport * as metrics from './metrics/index.js';\nimport * as stream from './stream/index.js';\nimport * as stt from './stt/index.js';\nimport * as telemetry from './telemetry/index.js';\nimport * as tokenize from './tokenize/index.js';\nimport * as tts from './tts/index.js';\nimport * as voice from './voice/index.js';\n\nexport * from './_exceptions.js';\nexport * from './audio.js';\nexport * from './connection_pool.js';\nexport * from './generator.js';\nexport * from './inference_runner.js';\nexport * from './job.js';\nexport * from './log.js';\nexport * from './plugin.js';\nexport * from './transcription.js';\nexport * from './types.js';\nexport * from './utils.js';\nexport * from './vad.js';\nexport * from './version.js';\nexport { createTimedString, isTimedString, type TimedString } from './voice/io.js';\nexport * from './worker.js';\n\nexport { cli, inference, ipc, llm, metrics, stream, stt, telemetry, tokenize, tts, voice };\n"],"mappings":"AAWA,YAAY,SAAS;AACrB,YAAY,eAAe;AAC3B,YAAY,SAAS;AACrB,YAAY,SAAS;AACrB,YAAY,aAAa;AACzB,YAAY,YAAY;AACxB,YAAY,SAAS;AACrB,YAAY,eAAe;AAC3B,YAAY,cAAc;AAC1B,YAAY,SAAS;AACrB,YAAY,WAAW;AAEvB,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,SAAS,mBAAmB,qBAAuC;AACnE,cAAc;","names":[]}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2024 LiveKit, Inc.\n//\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * LiveKit Agents is a framework for building realtime programmable participants that run on\n * servers.\n *\n * @see {@link https://docs.livekit.io/agents/overview | LiveKit Agents documentation}\n * @packageDocumentation\n */\nimport * as beta from './beta/index.js';\nimport * as cli from './cli.js';\nimport * as inference from './inference/index.js';\nimport * as ipc from './ipc/index.js';\nimport * as llm from './llm/index.js';\nimport * as metrics from './metrics/index.js';\nimport * as stream from './stream/index.js';\nimport * as stt from './stt/index.js';\nimport * as telemetry from './telemetry/index.js';\nimport * as tokenize from './tokenize/index.js';\nimport * as tts from './tts/index.js';\nimport * as voice from './voice/index.js';\n\nexport * from './_exceptions.js';\nexport * from './audio.js';\nexport * from './connection_pool.js';\nexport * from './generator.js';\nexport * from './inference_runner.js';\nexport * from './job.js';\nexport * from './log.js';\nexport * from './plugin.js';\nexport * from './transcription.js';\nexport * from './types.js';\nexport * from './utils.js';\nexport * from './vad.js';\nexport * from './version.js';\nexport { createTimedString, isTimedString, type TimedString } from './voice/io.js';\nexport * from './worker.js';\n\nexport { beta, cli, inference, ipc, llm, metrics, stream, stt, telemetry, tokenize, tts, voice };\n"],"mappings":"AAWA,YAAY,UAAU;AACtB,YAAY,SAAS;AACrB,YAAY,eAAe;AAC3B,YAAY,SAAS;AACrB,YAAY,SAAS;AACrB,YAAY,aAAa;AACzB,YAAY,YAAY;AACxB,YAAY,SAAS;AACrB,YAAY,eAAe;AAC3B,YAAY,cAAc;AAC1B,YAAY,SAAS;AACrB,YAAY,WAAW;AAEvB,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,SAAS,mBAAmB,qBAAuC;AACnE,cAAc;","names":[]}