@livekit/agents-plugin-elevenlabs 0.4.5 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,17 @@
1
+ <!--
2
+ SPDX-FileCopyrightText: 2024 LiveKit, Inc.
3
+
4
+ SPDX-License-Identifier: Apache-2.0
5
+ -->
6
+ # ElevenLabs plugin for LiveKit Agents
7
+
8
+ The Agents Framework is designed for building realtime, programmable
9
+ participants that run on servers. Use it to create conversational, multi-modal
10
+ voice agents that can see, hear, and understand.
11
+
12
+ This package contains the ElevenLabs plugin, which allows for voice synthesis.
13
+ Refer to the [documentation](https://docs.livekit.io/agents/overview/) for
14
+ information on how to use it, or browse the [API
15
+ reference](https://docs.livekit.io/agents-js/modules/plugins_agents_plugin_elevenlabs.html).
16
+ See the [repository](https://github.com/livekit/agents-js) for more information
17
+ about the framework as a whole.
package/dist/index.cjs ADDED
@@ -0,0 +1,23 @@
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 __copyProps = (to, from, except, desc) => {
7
+ if (from && typeof from === "object" || typeof from === "function") {
8
+ for (let key of __getOwnPropNames(from))
9
+ if (!__hasOwnProp.call(to, key) && key !== except)
10
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
11
+ }
12
+ return to;
13
+ };
14
+ var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
15
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
16
+ var src_exports = {};
17
+ module.exports = __toCommonJS(src_exports);
18
+ __reExport(src_exports, require("./tts.cjs"), module.exports);
19
+ // Annotate the CommonJS export names for ESM import in node:
20
+ 0 && (module.exports = {
21
+ ...require("./tts.cjs")
22
+ });
23
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2024 LiveKit, Inc.\n//\n// SPDX-License-Identifier: Apache-2.0\n\nexport * from './tts.js';\n"],"mappings":";;;;;;;;;;;;;;;AAAA;AAAA;AAIA,wBAAc,qBAJd;","names":[]}
package/dist/index.js CHANGED
@@ -1,5 +1,2 @@
1
- // SPDX-FileCopyrightText: 2024 LiveKit, Inc.
2
- //
3
- // SPDX-License-Identifier: Apache-2.0
4
- export * from './tts.js';
1
+ export * from "./tts.js";
5
2
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,EAAE;AACF,sCAAsC;AAEtC,cAAc,UAAU,CAAC"}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2024 LiveKit, Inc.\n//\n// SPDX-License-Identifier: Apache-2.0\n\nexport * from './tts.js';\n"],"mappings":"AAIA,cAAc;","names":[]}
@@ -0,0 +1,17 @@
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 __copyProps = (to, from, except, desc) => {
7
+ if (from && typeof from === "object" || typeof from === "function") {
8
+ for (let key of __getOwnPropNames(from))
9
+ if (!__hasOwnProp.call(to, key) && key !== except)
10
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
11
+ }
12
+ return to;
13
+ };
14
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
15
+ var models_exports = {};
16
+ module.exports = __toCommonJS(models_exports);
17
+ //# sourceMappingURL=models.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/models.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2024 LiveKit, Inc.\n//\n// SPDX-License-Identifier: Apache-2.0\n\nexport type TTSModels =\n | 'eleven_monolingual_v1'\n | 'eleven_multilingual_v1'\n | 'eleven_multilingual_v2'\n | 'eleven_turbo_v2'\n | 'eleven_turbo_v2_5';\n\nexport type TTSEncoding =\n // XXX(nbsp): MP3 is not yet supported\n // | 'mp3_22050_32'\n // | 'mp3_44100_32'\n // | 'mp3_44100_64'\n // | 'mp3_44100_96'\n // | 'mp3_44100_128'\n // | 'mp3_44100_192'\n 'pcm_16000' | 'pcm_22050' | 'pcm_44100';\n"],"mappings":";;;;;;;;;;;;;;AAAA;AAAA;","names":[]}
package/dist/models.js CHANGED
@@ -1,5 +1 @@
1
- // SPDX-FileCopyrightText: 2024 LiveKit, Inc.
2
- //
3
- // SPDX-License-Identifier: Apache-2.0
4
- export {};
5
1
  //# sourceMappingURL=models.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"models.js","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,EAAE;AACF,sCAAsC"}
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
package/dist/tts.cjs ADDED
@@ -0,0 +1,241 @@
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 tts_exports = {};
20
+ __export(tts_exports, {
21
+ SynthesizeStream: () => SynthesizeStream,
22
+ TTS: () => TTS
23
+ });
24
+ module.exports = __toCommonJS(tts_exports);
25
+ var import_agents = require("@livekit/agents");
26
+ var import_rtc_node = require("@livekit/rtc-node");
27
+ var import_node_crypto = require("node:crypto");
28
+ var import_node_url = require("node:url");
29
+ var import_ws = require("ws");
30
+ const DEFAULT_VOICE = {
31
+ id: "EXAVITQu4vr4xnSDxMaL",
32
+ name: "Bella",
33
+ category: "premade",
34
+ settings: {
35
+ stability: 0.71,
36
+ similarity_boost: 0.5,
37
+ style: 0,
38
+ use_speaker_boost: true
39
+ }
40
+ };
41
+ const API_BASE_URL_V1 = "https://api.elevenlabs.io/v1/";
42
+ const AUTHORIZATION_HEADER = "xi-api-key";
43
+ const defaultTTSOptions = {
44
+ apiKey: process.env.ELEVEN_API_KEY,
45
+ voice: DEFAULT_VOICE,
46
+ modelID: "eleven_turbo_v2_5",
47
+ baseURL: API_BASE_URL_V1,
48
+ encoding: "pcm_22050",
49
+ streamingLatency: 3,
50
+ wordTokenizer: new import_agents.tokenize.basic.WordTokenizer(false),
51
+ chunkLengthSchedule: [],
52
+ enableSsmlParsing: false
53
+ };
54
+ class TTS extends import_agents.tts.TTS {
55
+ #opts;
56
+ constructor(opts = {}) {
57
+ super(sampleRateFromFormat(opts.encoding || defaultTTSOptions.encoding), 1, {
58
+ streaming: true
59
+ });
60
+ this.#opts = {
61
+ ...defaultTTSOptions,
62
+ ...opts
63
+ };
64
+ if (this.#opts.apiKey === void 0) {
65
+ throw new Error(
66
+ "ElevenLabs API key is required, whether as an argument or as $ELEVEN_API_KEY"
67
+ );
68
+ }
69
+ }
70
+ async listVoices() {
71
+ return fetch(this.#opts.baseURL + "/voices", {
72
+ headers: {
73
+ [AUTHORIZATION_HEADER]: this.#opts.apiKey
74
+ }
75
+ }).then((data) => data.json()).then((data) => {
76
+ const voices = [];
77
+ for (const voice of data.voices) {
78
+ voices.push({
79
+ id: voice.voice_id,
80
+ name: voice.name,
81
+ category: voice.category,
82
+ settings: void 0
83
+ });
84
+ }
85
+ return voices;
86
+ });
87
+ }
88
+ synthesize() {
89
+ throw new Error("Chunked responses are not supported on ElevenLabs TTS");
90
+ }
91
+ stream() {
92
+ return new SynthesizeStream(this.#opts);
93
+ }
94
+ }
95
+ class SynthesizeStream extends import_agents.tts.SynthesizeStream {
96
+ #opts;
97
+ #logger = (0, import_agents.log)();
98
+ streamURL;
99
+ constructor(opts) {
100
+ super();
101
+ this.#opts = opts;
102
+ this.closed = false;
103
+ const baseURL = opts.baseURL + (opts.baseURL.endsWith("/") ? "" : "/");
104
+ this.streamURL = new import_node_url.URL(`text-to-speech/${opts.voice.id}/stream-input`, baseURL);
105
+ const params = {
106
+ model_id: opts.modelID,
107
+ output_format: opts.encoding,
108
+ optimize_streaming_latency: `${opts.streamingLatency}`,
109
+ enable_ssml_parsing: `${opts.enableSsmlParsing}`
110
+ };
111
+ Object.entries(params).forEach(([k, v]) => this.streamURL.searchParams.append(k, v));
112
+ this.streamURL.protocol = this.streamURL.protocol.replace("http", "ws");
113
+ this.#run();
114
+ }
115
+ async #run() {
116
+ const segments = new import_agents.AsyncIterableQueue();
117
+ const tokenizeInput = async () => {
118
+ let stream = null;
119
+ for await (const text of this.input) {
120
+ if (text === SynthesizeStream.FLUSH_SENTINEL) {
121
+ stream == null ? void 0 : stream.endInput();
122
+ stream = null;
123
+ } else {
124
+ if (!stream) {
125
+ stream = this.#opts.wordTokenizer.stream();
126
+ segments.put(stream);
127
+ }
128
+ stream.pushText(text);
129
+ }
130
+ }
131
+ segments.close();
132
+ };
133
+ const runStream = async () => {
134
+ for await (const stream of segments) {
135
+ await this.#runWS(stream);
136
+ this.queue.put(SynthesizeStream.END_OF_STREAM);
137
+ }
138
+ };
139
+ await Promise.all([tokenizeInput(), runStream()]);
140
+ this.close();
141
+ }
142
+ async #runWS(stream, maxRetry = 3) {
143
+ let retries = 0;
144
+ let ws;
145
+ while (true) {
146
+ ws = new import_ws.WebSocket(this.streamURL, {
147
+ headers: { [AUTHORIZATION_HEADER]: this.#opts.apiKey }
148
+ });
149
+ try {
150
+ await new Promise((resolve, reject) => {
151
+ ws.on("open", resolve);
152
+ ws.on("error", (error) => reject(error));
153
+ ws.on("close", (code) => reject(`WebSocket returned ${code}`));
154
+ });
155
+ break;
156
+ } catch (e) {
157
+ if (retries >= maxRetry) {
158
+ throw new Error(`failed to connect to ElevenLabs after ${retries} attempts: ${e}`);
159
+ }
160
+ const delay = Math.min(retries * 5, 5);
161
+ retries++;
162
+ this.#logger.warn(
163
+ `failed to connect to ElevenLabs, retrying in ${delay} seconds: ${e} (${retries}/${maxRetry})`
164
+ );
165
+ await new Promise((resolve) => setTimeout(resolve, delay * 1e3));
166
+ }
167
+ }
168
+ const requestId = (0, import_node_crypto.randomUUID)();
169
+ const segmentId = (0, import_node_crypto.randomUUID)();
170
+ ws.send(
171
+ JSON.stringify({
172
+ text: " ",
173
+ voice_settings: this.#opts.voice.settings,
174
+ try_trigger_generation: true,
175
+ chunk_length_schedule: this.#opts.chunkLengthSchedule
176
+ })
177
+ );
178
+ let eosSent = false;
179
+ const sendTask = async () => {
180
+ let xmlContent = [];
181
+ for await (const data of stream) {
182
+ let text = data.token;
183
+ if (this.#opts.enableSsmlParsing && text.startsWith("<phoneme") || xmlContent.length) {
184
+ xmlContent.push(text);
185
+ if (text.indexOf("</phoneme>") !== -1) {
186
+ text = xmlContent.join(" ");
187
+ xmlContent = [];
188
+ } else {
189
+ continue;
190
+ }
191
+ }
192
+ ws.send(JSON.stringify({ text: text + " ", try_trigger_generation: false }));
193
+ }
194
+ if (xmlContent.length) {
195
+ this.#logger.warn("ElevenLabs stream ended with incomplete XML content");
196
+ }
197
+ ws.send(JSON.stringify({ text: "" }));
198
+ eosSent = true;
199
+ };
200
+ const listenTask = async () => {
201
+ while (!this.closed) {
202
+ try {
203
+ await new Promise((resolve, reject) => {
204
+ ws.removeAllListeners();
205
+ ws.on("message", (data) => resolve(data));
206
+ ws.on("close", (code, reason) => {
207
+ if (!eosSent) {
208
+ this.#logger.error(`WebSocket closed with code ${code}: ${reason}`);
209
+ }
210
+ reject();
211
+ });
212
+ }).then((msg) => {
213
+ const json = JSON.parse(msg.toString());
214
+ if ("audio" in json) {
215
+ const data = new Int16Array(Buffer.from(json.audio, "base64").buffer);
216
+ const frame = new import_rtc_node.AudioFrame(
217
+ data,
218
+ sampleRateFromFormat(this.#opts.encoding),
219
+ 1,
220
+ data.length
221
+ );
222
+ this.queue.put({ requestId, segmentId, frame });
223
+ }
224
+ });
225
+ } catch {
226
+ break;
227
+ }
228
+ }
229
+ };
230
+ await Promise.all([sendTask(), listenTask()]);
231
+ }
232
+ }
233
+ const sampleRateFromFormat = (encoding) => {
234
+ return Number(encoding.split("_")[1]);
235
+ };
236
+ // Annotate the CommonJS export names for ESM import in node:
237
+ 0 && (module.exports = {
238
+ SynthesizeStream,
239
+ TTS
240
+ });
241
+ //# sourceMappingURL=tts.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/tts.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2024 LiveKit, Inc.\n//\n// SPDX-License-Identifier: Apache-2.0\nimport { AsyncIterableQueue, log, tokenize, tts } from '@livekit/agents';\nimport { AudioFrame } from '@livekit/rtc-node';\nimport { randomUUID } from 'node:crypto';\nimport { URL } from 'node:url';\nimport { type RawData, WebSocket } from 'ws';\nimport type { TTSEncoding, TTSModels } from './models.js';\n\ntype Voice = {\n id: string;\n name: string;\n category: string;\n settings?: VoiceSettings;\n};\n\ntype VoiceSettings = {\n stability: number; // 0..1\n similarity_boost: number; // 0..1\n style?: number; // 0..1\n use_speaker_boost: boolean;\n};\n\nconst DEFAULT_VOICE: Voice = {\n id: 'EXAVITQu4vr4xnSDxMaL',\n name: 'Bella',\n category: 'premade',\n settings: {\n stability: 0.71,\n similarity_boost: 0.5,\n style: 0.0,\n use_speaker_boost: true,\n },\n};\n\nconst API_BASE_URL_V1 = 'https://api.elevenlabs.io/v1/';\nconst AUTHORIZATION_HEADER = 'xi-api-key';\n\nexport interface TTSOptions {\n apiKey?: string;\n voice: Voice;\n modelID: TTSModels;\n baseURL: string;\n encoding: TTSEncoding;\n streamingLatency: number;\n wordTokenizer: tokenize.WordTokenizer;\n chunkLengthSchedule: number[];\n enableSsmlParsing: boolean;\n}\n\nconst defaultTTSOptions: TTSOptions = {\n apiKey: process.env.ELEVEN_API_KEY,\n voice: DEFAULT_VOICE,\n modelID: 'eleven_turbo_v2_5',\n baseURL: API_BASE_URL_V1,\n encoding: 'pcm_22050',\n streamingLatency: 3,\n wordTokenizer: new tokenize.basic.WordTokenizer(false),\n chunkLengthSchedule: [],\n enableSsmlParsing: false,\n};\n\nexport class TTS extends tts.TTS {\n #opts: TTSOptions;\n\n constructor(opts: Partial<TTSOptions> = {}) {\n super(sampleRateFromFormat(opts.encoding || defaultTTSOptions.encoding), 1, {\n streaming: true,\n });\n\n this.#opts = {\n ...defaultTTSOptions,\n ...opts,\n };\n\n if (this.#opts.apiKey === undefined) {\n throw new Error(\n 'ElevenLabs API key is required, whether as an argument or as $ELEVEN_API_KEY',\n );\n }\n }\n\n async listVoices(): Promise<Voice[]> {\n return fetch(this.#opts.baseURL + '/voices', {\n headers: {\n [AUTHORIZATION_HEADER]: this.#opts.apiKey!,\n },\n })\n .then((data) => data.json())\n .then((data) => {\n const voices: Voice[] = [];\n for (const voice of (\n data as { voices: { voice_id: string; name: string; category: string }[] }\n ).voices) {\n voices.push({\n id: voice.voice_id,\n name: voice.name,\n category: voice.category,\n settings: undefined,\n });\n }\n return voices;\n });\n }\n\n synthesize(): tts.ChunkedStream {\n throw new Error('Chunked responses are not supported on ElevenLabs TTS');\n }\n\n stream(): tts.SynthesizeStream {\n return new SynthesizeStream(this.#opts);\n }\n}\n\nexport class SynthesizeStream extends tts.SynthesizeStream {\n #opts: TTSOptions;\n #logger = log();\n readonly streamURL: URL;\n\n constructor(opts: TTSOptions) {\n super();\n this.#opts = opts;\n this.closed = false;\n\n // add trailing slash to URL if needed\n const baseURL = opts.baseURL + (opts.baseURL.endsWith('/') ? '' : '/');\n\n this.streamURL = new URL(`text-to-speech/${opts.voice.id}/stream-input`, baseURL);\n const params = {\n model_id: opts.modelID,\n output_format: opts.encoding,\n optimize_streaming_latency: `${opts.streamingLatency}`,\n enable_ssml_parsing: `${opts.enableSsmlParsing}`,\n };\n Object.entries(params).forEach(([k, v]) => this.streamURL.searchParams.append(k, v));\n this.streamURL.protocol = this.streamURL.protocol.replace('http', 'ws');\n\n this.#run();\n }\n\n async #run() {\n const segments = new AsyncIterableQueue<tokenize.WordStream>();\n\n const tokenizeInput = async () => {\n let stream: tokenize.WordStream | null = null;\n for await (const text of this.input) {\n if (text === SynthesizeStream.FLUSH_SENTINEL) {\n stream?.endInput();\n stream = null;\n } else {\n if (!stream) {\n stream = this.#opts.wordTokenizer.stream();\n segments.put(stream);\n }\n stream.pushText(text);\n }\n }\n segments.close();\n };\n\n const runStream = async () => {\n for await (const stream of segments) {\n await this.#runWS(stream);\n this.queue.put(SynthesizeStream.END_OF_STREAM);\n }\n };\n\n await Promise.all([tokenizeInput(), runStream()]);\n this.close();\n }\n\n async #runWS(stream: tokenize.WordStream, maxRetry = 3) {\n let retries = 0;\n let ws: WebSocket;\n while (true) {\n ws = new WebSocket(this.streamURL, {\n headers: { [AUTHORIZATION_HEADER]: this.#opts.apiKey },\n });\n\n try {\n await new Promise((resolve, reject) => {\n ws.on('open', resolve);\n ws.on('error', (error) => reject(error));\n ws.on('close', (code) => reject(`WebSocket returned ${code}`));\n });\n break;\n } catch (e) {\n if (retries >= maxRetry) {\n throw new Error(`failed to connect to ElevenLabs after ${retries} attempts: ${e}`);\n }\n\n const delay = Math.min(retries * 5, 5);\n retries++;\n\n this.#logger.warn(\n `failed to connect to ElevenLabs, retrying in ${delay} seconds: ${e} (${retries}/${maxRetry})`,\n );\n await new Promise((resolve) => setTimeout(resolve, delay * 1000));\n }\n }\n\n const requestId = randomUUID();\n const segmentId = randomUUID();\n\n ws.send(\n JSON.stringify({\n text: ' ',\n voice_settings: this.#opts.voice.settings,\n try_trigger_generation: true,\n chunk_length_schedule: this.#opts.chunkLengthSchedule,\n }),\n );\n let eosSent = false;\n\n const sendTask = async () => {\n let xmlContent: string[] = [];\n for await (const data of stream) {\n let text = data.token;\n\n if ((this.#opts.enableSsmlParsing && text.startsWith('<phoneme')) || xmlContent.length) {\n xmlContent.push(text);\n if (text.indexOf('</phoneme>') !== -1) {\n text = xmlContent.join(' ');\n xmlContent = [];\n } else {\n continue;\n }\n }\n\n ws.send(JSON.stringify({ text: text + ' ', try_trigger_generation: false }));\n }\n\n if (xmlContent.length) {\n this.#logger.warn('ElevenLabs stream ended with incomplete XML content');\n }\n\n ws.send(JSON.stringify({ text: '' }));\n eosSent = true;\n };\n\n const listenTask = async () => {\n while (!this.closed) {\n try {\n await new Promise<RawData>((resolve, reject) => {\n ws.removeAllListeners();\n ws.on('message', (data) => resolve(data));\n ws.on('close', (code, reason) => {\n if (!eosSent) {\n this.#logger.error(`WebSocket closed with code ${code}: ${reason}`);\n }\n reject();\n });\n }).then((msg) => {\n const json = JSON.parse(msg.toString());\n if ('audio' in json) {\n const data = new Int16Array(Buffer.from(json.audio, 'base64').buffer);\n const frame = new AudioFrame(\n data,\n sampleRateFromFormat(this.#opts.encoding),\n 1,\n data.length,\n );\n this.queue.put({ requestId, segmentId, frame });\n }\n });\n } catch {\n break;\n }\n }\n };\n\n await Promise.all([sendTask(), listenTask()]);\n }\n}\n\nconst sampleRateFromFormat = (encoding: TTSEncoding): number => {\n return Number(encoding.split('_')[1]);\n};\n"],"mappings":"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","names":[]}
package/dist/tts.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- /// <reference types="node" />
1
+ /// <reference types="node" resolution-mode="require"/>
2
2
  import { tokenize, tts } from '@livekit/agents';
3
3
  import { URL } from 'node:url';
4
4
  import type { TTSEncoding, TTSModels } from './models.js';
package/dist/tts.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"tts.d.ts","sourceRoot":"","sources":["../src/tts.ts"],"names":[],"mappings":";AAGA,OAAO,EAA2B,QAAQ,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AAIzE,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAE/B,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE1D,KAAK,KAAK,GAAG;IACX,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,aAAa,CAAC;CAC1B,CAAC;AAEF,KAAK,aAAa,GAAG;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iBAAiB,EAAE,OAAO,CAAC;CAC5B,CAAC;AAiBF,MAAM,WAAW,UAAU;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,SAAS,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,WAAW,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,QAAQ,CAAC,aAAa,CAAC;IACtC,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,iBAAiB,EAAE,OAAO,CAAC;CAC5B;AAcD,qBAAa,GAAI,SAAQ,GAAG,CAAC,GAAG;;gBAGlB,IAAI,GAAE,OAAO,CAAC,UAAU,CAAM;IAiBpC,UAAU,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;IAuBpC,UAAU,IAAI,GAAG,CAAC,aAAa;IAI/B,MAAM,IAAI,GAAG,CAAC,gBAAgB;CAG/B;AAED,qBAAa,gBAAiB,SAAQ,GAAG,CAAC,gBAAgB;;IAGxD,QAAQ,CAAC,SAAS,EAAE,GAAG,CAAC;gBAEZ,IAAI,EAAE,UAAU;CA0J7B"}
1
+ {"version":3,"file":"tts.d.ts","sourceRoot":"","sources":["../src/tts.ts"],"names":[],"mappings":";AAGA,OAAO,EAA2B,QAAQ,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AAGzE,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAE/B,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE1D,KAAK,KAAK,GAAG;IACX,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,aAAa,CAAC;CAC1B,CAAC;AAEF,KAAK,aAAa,GAAG;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iBAAiB,EAAE,OAAO,CAAC;CAC5B,CAAC;AAiBF,MAAM,WAAW,UAAU;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,SAAS,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,WAAW,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,QAAQ,CAAC,aAAa,CAAC;IACtC,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,iBAAiB,EAAE,OAAO,CAAC;CAC5B;AAcD,qBAAa,GAAI,SAAQ,GAAG,CAAC,GAAG;;gBAGlB,IAAI,GAAE,OAAO,CAAC,UAAU,CAAM;IAiBpC,UAAU,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;IAuBpC,UAAU,IAAI,GAAG,CAAC,aAAa;IAI/B,MAAM,IAAI,GAAG,CAAC,gBAAgB;CAG/B;AAED,qBAAa,gBAAiB,SAAQ,GAAG,CAAC,gBAAgB;;IAGxD,QAAQ,CAAC,SAAS,EAAE,GAAG,CAAC;gBAEZ,IAAI,EAAE,UAAU;CA0J7B"}
package/dist/tts.js CHANGED
@@ -1,213 +1,216 @@
1
- var _a;
2
- // SPDX-FileCopyrightText: 2024 LiveKit, Inc.
3
- //
4
- // SPDX-License-Identifier: Apache-2.0
5
- import { AsyncIterableQueue, log, tokenize, tts } from '@livekit/agents';
6
- import { AudioFrame } from '@livekit/rtc-node';
7
- import { randomUUID } from 'node:crypto';
8
- import { URL } from 'node:url';
9
- import { WebSocket } from 'ws';
1
+ import { AsyncIterableQueue, log, tokenize, tts } from "@livekit/agents";
2
+ import { AudioFrame } from "@livekit/rtc-node";
3
+ import { randomUUID } from "node:crypto";
4
+ import { URL } from "node:url";
5
+ import { WebSocket } from "ws";
10
6
  const DEFAULT_VOICE = {
11
- id: 'EXAVITQu4vr4xnSDxMaL',
12
- name: 'Bella',
13
- category: 'premade',
14
- settings: {
15
- stability: 0.71,
16
- similarity_boost: 0.5,
17
- style: 0.0,
18
- use_speaker_boost: true,
19
- },
7
+ id: "EXAVITQu4vr4xnSDxMaL",
8
+ name: "Bella",
9
+ category: "premade",
10
+ settings: {
11
+ stability: 0.71,
12
+ similarity_boost: 0.5,
13
+ style: 0,
14
+ use_speaker_boost: true
15
+ }
20
16
  };
21
- const API_BASE_URL_V1 = 'https://api.elevenlabs.io/v1/';
22
- const AUTHORIZATION_HEADER = 'xi-api-key';
17
+ const API_BASE_URL_V1 = "https://api.elevenlabs.io/v1/";
18
+ const AUTHORIZATION_HEADER = "xi-api-key";
23
19
  const defaultTTSOptions = {
24
- apiKey: process.env.ELEVEN_API_KEY,
25
- voice: DEFAULT_VOICE,
26
- modelID: 'eleven_turbo_v2_5',
27
- baseURL: API_BASE_URL_V1,
28
- encoding: 'pcm_22050',
29
- streamingLatency: 3,
30
- wordTokenizer: new tokenize.basic.WordTokenizer(false),
31
- chunkLengthSchedule: [],
32
- enableSsmlParsing: false,
20
+ apiKey: process.env.ELEVEN_API_KEY,
21
+ voice: DEFAULT_VOICE,
22
+ modelID: "eleven_turbo_v2_5",
23
+ baseURL: API_BASE_URL_V1,
24
+ encoding: "pcm_22050",
25
+ streamingLatency: 3,
26
+ wordTokenizer: new tokenize.basic.WordTokenizer(false),
27
+ chunkLengthSchedule: [],
28
+ enableSsmlParsing: false
33
29
  };
34
- export class TTS extends tts.TTS {
35
- #opts;
36
- constructor(opts = {}) {
37
- super(sampleRateFromFormat(opts.encoding || defaultTTSOptions.encoding), 1, {
38
- streaming: true,
39
- });
40
- this.#opts = {
41
- ...defaultTTSOptions,
42
- ...opts,
43
- };
44
- if (this.#opts.apiKey === undefined) {
45
- throw new Error('ElevenLabs API key is required, whether as an argument or as $ELEVEN_API_KEY');
46
- }
30
+ class TTS extends tts.TTS {
31
+ #opts;
32
+ constructor(opts = {}) {
33
+ super(sampleRateFromFormat(opts.encoding || defaultTTSOptions.encoding), 1, {
34
+ streaming: true
35
+ });
36
+ this.#opts = {
37
+ ...defaultTTSOptions,
38
+ ...opts
39
+ };
40
+ if (this.#opts.apiKey === void 0) {
41
+ throw new Error(
42
+ "ElevenLabs API key is required, whether as an argument or as $ELEVEN_API_KEY"
43
+ );
47
44
  }
48
- async listVoices() {
49
- return fetch(this.#opts.baseURL + '/voices', {
50
- headers: {
51
- [AUTHORIZATION_HEADER]: this.#opts.apiKey,
52
- },
53
- })
54
- .then((data) => data.json())
55
- .then((data) => {
56
- const voices = [];
57
- for (const voice of data.voices) {
58
- voices.push({
59
- id: voice.voice_id,
60
- name: voice.name,
61
- category: voice.category,
62
- settings: undefined,
63
- });
64
- }
65
- return voices;
45
+ }
46
+ async listVoices() {
47
+ return fetch(this.#opts.baseURL + "/voices", {
48
+ headers: {
49
+ [AUTHORIZATION_HEADER]: this.#opts.apiKey
50
+ }
51
+ }).then((data) => data.json()).then((data) => {
52
+ const voices = [];
53
+ for (const voice of data.voices) {
54
+ voices.push({
55
+ id: voice.voice_id,
56
+ name: voice.name,
57
+ category: voice.category,
58
+ settings: void 0
66
59
  });
67
- }
68
- synthesize() {
69
- throw new Error('Chunked responses are not supported on ElevenLabs TTS');
70
- }
71
- stream() {
72
- return new SynthesizeStream(this.#opts);
73
- }
60
+ }
61
+ return voices;
62
+ });
63
+ }
64
+ synthesize() {
65
+ throw new Error("Chunked responses are not supported on ElevenLabs TTS");
66
+ }
67
+ stream() {
68
+ return new SynthesizeStream(this.#opts);
69
+ }
74
70
  }
75
- export class SynthesizeStream extends tts.SynthesizeStream {
76
- #opts;
77
- #logger = log();
78
- streamURL;
79
- constructor(opts) {
80
- super();
81
- this.#opts = opts;
82
- this.closed = false;
83
- // add trailing slash to URL if needed
84
- const baseURL = opts.baseURL + (opts.baseURL.endsWith('/') ? '' : '/');
85
- this.streamURL = new URL(`text-to-speech/${opts.voice.id}/stream-input`, baseURL);
86
- const params = {
87
- model_id: opts.modelID,
88
- output_format: opts.encoding,
89
- optimize_streaming_latency: `${opts.streamingLatency}`,
90
- enable_ssml_parsing: `${opts.enableSsmlParsing}`,
91
- };
92
- Object.entries(params).forEach(([k, v]) => this.streamURL.searchParams.append(k, v));
93
- this.streamURL.protocol = this.streamURL.protocol.replace('http', 'ws');
94
- this.#run();
95
- }
96
- async #run() {
97
- const segments = new AsyncIterableQueue();
98
- const tokenizeInput = async () => {
99
- let stream = null;
100
- for await (const text of this.input) {
101
- if (text === _a.FLUSH_SENTINEL) {
102
- stream?.endInput();
103
- stream = null;
104
- }
105
- else {
106
- if (!stream) {
107
- stream = this.#opts.wordTokenizer.stream();
108
- segments.put(stream);
109
- }
110
- stream.pushText(text);
111
- }
112
- }
113
- segments.close();
114
- };
115
- const runStream = async () => {
116
- for await (const stream of segments) {
117
- await this.#runWS(stream);
118
- this.queue.put(_a.END_OF_STREAM);
119
- }
120
- };
121
- await Promise.all([tokenizeInput(), runStream()]);
122
- this.close();
71
+ class SynthesizeStream extends tts.SynthesizeStream {
72
+ #opts;
73
+ #logger = log();
74
+ streamURL;
75
+ constructor(opts) {
76
+ super();
77
+ this.#opts = opts;
78
+ this.closed = false;
79
+ const baseURL = opts.baseURL + (opts.baseURL.endsWith("/") ? "" : "/");
80
+ this.streamURL = new URL(`text-to-speech/${opts.voice.id}/stream-input`, baseURL);
81
+ const params = {
82
+ model_id: opts.modelID,
83
+ output_format: opts.encoding,
84
+ optimize_streaming_latency: `${opts.streamingLatency}`,
85
+ enable_ssml_parsing: `${opts.enableSsmlParsing}`
86
+ };
87
+ Object.entries(params).forEach(([k, v]) => this.streamURL.searchParams.append(k, v));
88
+ this.streamURL.protocol = this.streamURL.protocol.replace("http", "ws");
89
+ this.#run();
90
+ }
91
+ async #run() {
92
+ const segments = new AsyncIterableQueue();
93
+ const tokenizeInput = async () => {
94
+ let stream = null;
95
+ for await (const text of this.input) {
96
+ if (text === SynthesizeStream.FLUSH_SENTINEL) {
97
+ stream == null ? void 0 : stream.endInput();
98
+ stream = null;
99
+ } else {
100
+ if (!stream) {
101
+ stream = this.#opts.wordTokenizer.stream();
102
+ segments.put(stream);
103
+ }
104
+ stream.pushText(text);
105
+ }
106
+ }
107
+ segments.close();
108
+ };
109
+ const runStream = async () => {
110
+ for await (const stream of segments) {
111
+ await this.#runWS(stream);
112
+ this.queue.put(SynthesizeStream.END_OF_STREAM);
113
+ }
114
+ };
115
+ await Promise.all([tokenizeInput(), runStream()]);
116
+ this.close();
117
+ }
118
+ async #runWS(stream, maxRetry = 3) {
119
+ let retries = 0;
120
+ let ws;
121
+ while (true) {
122
+ ws = new WebSocket(this.streamURL, {
123
+ headers: { [AUTHORIZATION_HEADER]: this.#opts.apiKey }
124
+ });
125
+ try {
126
+ await new Promise((resolve, reject) => {
127
+ ws.on("open", resolve);
128
+ ws.on("error", (error) => reject(error));
129
+ ws.on("close", (code) => reject(`WebSocket returned ${code}`));
130
+ });
131
+ break;
132
+ } catch (e) {
133
+ if (retries >= maxRetry) {
134
+ throw new Error(`failed to connect to ElevenLabs after ${retries} attempts: ${e}`);
135
+ }
136
+ const delay = Math.min(retries * 5, 5);
137
+ retries++;
138
+ this.#logger.warn(
139
+ `failed to connect to ElevenLabs, retrying in ${delay} seconds: ${e} (${retries}/${maxRetry})`
140
+ );
141
+ await new Promise((resolve) => setTimeout(resolve, delay * 1e3));
142
+ }
123
143
  }
124
- async #runWS(stream, maxRetry = 3) {
125
- let retries = 0;
126
- let ws;
127
- while (true) {
128
- ws = new WebSocket(this.streamURL, {
129
- headers: { [AUTHORIZATION_HEADER]: this.#opts.apiKey },
144
+ const requestId = randomUUID();
145
+ const segmentId = randomUUID();
146
+ ws.send(
147
+ JSON.stringify({
148
+ text: " ",
149
+ voice_settings: this.#opts.voice.settings,
150
+ try_trigger_generation: true,
151
+ chunk_length_schedule: this.#opts.chunkLengthSchedule
152
+ })
153
+ );
154
+ let eosSent = false;
155
+ const sendTask = async () => {
156
+ let xmlContent = [];
157
+ for await (const data of stream) {
158
+ let text = data.token;
159
+ if (this.#opts.enableSsmlParsing && text.startsWith("<phoneme") || xmlContent.length) {
160
+ xmlContent.push(text);
161
+ if (text.indexOf("</phoneme>") !== -1) {
162
+ text = xmlContent.join(" ");
163
+ xmlContent = [];
164
+ } else {
165
+ continue;
166
+ }
167
+ }
168
+ ws.send(JSON.stringify({ text: text + " ", try_trigger_generation: false }));
169
+ }
170
+ if (xmlContent.length) {
171
+ this.#logger.warn("ElevenLabs stream ended with incomplete XML content");
172
+ }
173
+ ws.send(JSON.stringify({ text: "" }));
174
+ eosSent = true;
175
+ };
176
+ const listenTask = async () => {
177
+ while (!this.closed) {
178
+ try {
179
+ await new Promise((resolve, reject) => {
180
+ ws.removeAllListeners();
181
+ ws.on("message", (data) => resolve(data));
182
+ ws.on("close", (code, reason) => {
183
+ if (!eosSent) {
184
+ this.#logger.error(`WebSocket closed with code ${code}: ${reason}`);
185
+ }
186
+ reject();
130
187
  });
131
- try {
132
- await new Promise((resolve, reject) => {
133
- ws.on('open', resolve);
134
- ws.on('error', (error) => reject(error));
135
- ws.on('close', (code) => reject(`WebSocket returned ${code}`));
136
- });
137
- break;
138
- }
139
- catch (e) {
140
- if (retries >= maxRetry) {
141
- throw new Error(`failed to connect to ElevenLabs after ${retries} attempts: ${e}`);
142
- }
143
- const delay = Math.min(retries * 5, 5);
144
- retries++;
145
- this.#logger.warn(`failed to connect to ElevenLabs, retrying in ${delay} seconds: ${e} (${retries}/${maxRetry})`);
146
- await new Promise((resolve) => setTimeout(resolve, delay * 1000));
188
+ }).then((msg) => {
189
+ const json = JSON.parse(msg.toString());
190
+ if ("audio" in json) {
191
+ const data = new Int16Array(Buffer.from(json.audio, "base64").buffer);
192
+ const frame = new AudioFrame(
193
+ data,
194
+ sampleRateFromFormat(this.#opts.encoding),
195
+ 1,
196
+ data.length
197
+ );
198
+ this.queue.put({ requestId, segmentId, frame });
147
199
  }
200
+ });
201
+ } catch {
202
+ break;
148
203
  }
149
- const requestId = randomUUID();
150
- const segmentId = randomUUID();
151
- ws.send(JSON.stringify({
152
- text: ' ',
153
- voice_settings: this.#opts.voice.settings,
154
- try_trigger_generation: true,
155
- chunk_length_schedule: this.#opts.chunkLengthSchedule,
156
- }));
157
- let eosSent = false;
158
- const sendTask = async () => {
159
- let xmlContent = [];
160
- for await (const data of stream) {
161
- let text = data.token;
162
- if ((this.#opts.enableSsmlParsing && text.startsWith('<phoneme')) || xmlContent.length) {
163
- xmlContent.push(text);
164
- if (text.indexOf('</phoneme>') !== -1) {
165
- text = xmlContent.join(' ');
166
- xmlContent = [];
167
- }
168
- else {
169
- continue;
170
- }
171
- }
172
- ws.send(JSON.stringify({ text: text + ' ', try_trigger_generation: false }));
173
- }
174
- if (xmlContent.length) {
175
- this.#logger.warn('ElevenLabs stream ended with incomplete XML content');
176
- }
177
- ws.send(JSON.stringify({ text: '' }));
178
- eosSent = true;
179
- };
180
- const listenTask = async () => {
181
- while (!this.closed) {
182
- try {
183
- await new Promise((resolve, reject) => {
184
- ws.removeAllListeners();
185
- ws.on('message', (data) => resolve(data));
186
- ws.on('close', (code, reason) => {
187
- if (!eosSent) {
188
- this.#logger.error(`WebSocket closed with code ${code}: ${reason}`);
189
- }
190
- reject();
191
- });
192
- }).then((msg) => {
193
- const json = JSON.parse(msg.toString());
194
- if ('audio' in json) {
195
- const data = new Int16Array(Buffer.from(json.audio, 'base64').buffer);
196
- const frame = new AudioFrame(data, sampleRateFromFormat(this.#opts.encoding), 1, data.length);
197
- this.queue.put({ requestId, segmentId, frame });
198
- }
199
- });
200
- }
201
- catch {
202
- break;
203
- }
204
- }
205
- };
206
- await Promise.all([sendTask(), listenTask()]);
207
- }
204
+ }
205
+ };
206
+ await Promise.all([sendTask(), listenTask()]);
207
+ }
208
208
  }
209
- _a = SynthesizeStream;
210
209
  const sampleRateFromFormat = (encoding) => {
211
- return Number(encoding.split('_')[1]);
210
+ return Number(encoding.split("_")[1]);
211
+ };
212
+ export {
213
+ SynthesizeStream,
214
+ TTS
212
215
  };
213
216
  //# sourceMappingURL=tts.js.map
package/dist/tts.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"tts.js","sourceRoot":"","sources":["../src/tts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"sources":["../src/tts.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2024 LiveKit, Inc.\n//\n// SPDX-License-Identifier: Apache-2.0\nimport { AsyncIterableQueue, log, tokenize, tts } from '@livekit/agents';\nimport { AudioFrame } from '@livekit/rtc-node';\nimport { randomUUID } from 'node:crypto';\nimport { URL } from 'node:url';\nimport { type RawData, WebSocket } from 'ws';\nimport type { TTSEncoding, TTSModels } from './models.js';\n\ntype Voice = {\n id: string;\n name: string;\n category: string;\n settings?: VoiceSettings;\n};\n\ntype VoiceSettings = {\n stability: number; // 0..1\n similarity_boost: number; // 0..1\n style?: number; // 0..1\n use_speaker_boost: boolean;\n};\n\nconst DEFAULT_VOICE: Voice = {\n id: 'EXAVITQu4vr4xnSDxMaL',\n name: 'Bella',\n category: 'premade',\n settings: {\n stability: 0.71,\n similarity_boost: 0.5,\n style: 0.0,\n use_speaker_boost: true,\n },\n};\n\nconst API_BASE_URL_V1 = 'https://api.elevenlabs.io/v1/';\nconst AUTHORIZATION_HEADER = 'xi-api-key';\n\nexport interface TTSOptions {\n apiKey?: string;\n voice: Voice;\n modelID: TTSModels;\n baseURL: string;\n encoding: TTSEncoding;\n streamingLatency: number;\n wordTokenizer: tokenize.WordTokenizer;\n chunkLengthSchedule: number[];\n enableSsmlParsing: boolean;\n}\n\nconst defaultTTSOptions: TTSOptions = {\n apiKey: process.env.ELEVEN_API_KEY,\n voice: DEFAULT_VOICE,\n modelID: 'eleven_turbo_v2_5',\n baseURL: API_BASE_URL_V1,\n encoding: 'pcm_22050',\n streamingLatency: 3,\n wordTokenizer: new tokenize.basic.WordTokenizer(false),\n chunkLengthSchedule: [],\n enableSsmlParsing: false,\n};\n\nexport class TTS extends tts.TTS {\n #opts: TTSOptions;\n\n constructor(opts: Partial<TTSOptions> = {}) {\n super(sampleRateFromFormat(opts.encoding || defaultTTSOptions.encoding), 1, {\n streaming: true,\n });\n\n this.#opts = {\n ...defaultTTSOptions,\n ...opts,\n };\n\n if (this.#opts.apiKey === undefined) {\n throw new Error(\n 'ElevenLabs API key is required, whether as an argument or as $ELEVEN_API_KEY',\n );\n }\n }\n\n async listVoices(): Promise<Voice[]> {\n return fetch(this.#opts.baseURL + '/voices', {\n headers: {\n [AUTHORIZATION_HEADER]: this.#opts.apiKey!,\n },\n })\n .then((data) => data.json())\n .then((data) => {\n const voices: Voice[] = [];\n for (const voice of (\n data as { voices: { voice_id: string; name: string; category: string }[] }\n ).voices) {\n voices.push({\n id: voice.voice_id,\n name: voice.name,\n category: voice.category,\n settings: undefined,\n });\n }\n return voices;\n });\n }\n\n synthesize(): tts.ChunkedStream {\n throw new Error('Chunked responses are not supported on ElevenLabs TTS');\n }\n\n stream(): tts.SynthesizeStream {\n return new SynthesizeStream(this.#opts);\n }\n}\n\nexport class SynthesizeStream extends tts.SynthesizeStream {\n #opts: TTSOptions;\n #logger = log();\n readonly streamURL: URL;\n\n constructor(opts: TTSOptions) {\n super();\n this.#opts = opts;\n this.closed = false;\n\n // add trailing slash to URL if needed\n const baseURL = opts.baseURL + (opts.baseURL.endsWith('/') ? '' : '/');\n\n this.streamURL = new URL(`text-to-speech/${opts.voice.id}/stream-input`, baseURL);\n const params = {\n model_id: opts.modelID,\n output_format: opts.encoding,\n optimize_streaming_latency: `${opts.streamingLatency}`,\n enable_ssml_parsing: `${opts.enableSsmlParsing}`,\n };\n Object.entries(params).forEach(([k, v]) => this.streamURL.searchParams.append(k, v));\n this.streamURL.protocol = this.streamURL.protocol.replace('http', 'ws');\n\n this.#run();\n }\n\n async #run() {\n const segments = new AsyncIterableQueue<tokenize.WordStream>();\n\n const tokenizeInput = async () => {\n let stream: tokenize.WordStream | null = null;\n for await (const text of this.input) {\n if (text === SynthesizeStream.FLUSH_SENTINEL) {\n stream?.endInput();\n stream = null;\n } else {\n if (!stream) {\n stream = this.#opts.wordTokenizer.stream();\n segments.put(stream);\n }\n stream.pushText(text);\n }\n }\n segments.close();\n };\n\n const runStream = async () => {\n for await (const stream of segments) {\n await this.#runWS(stream);\n this.queue.put(SynthesizeStream.END_OF_STREAM);\n }\n };\n\n await Promise.all([tokenizeInput(), runStream()]);\n this.close();\n }\n\n async #runWS(stream: tokenize.WordStream, maxRetry = 3) {\n let retries = 0;\n let ws: WebSocket;\n while (true) {\n ws = new WebSocket(this.streamURL, {\n headers: { [AUTHORIZATION_HEADER]: this.#opts.apiKey },\n });\n\n try {\n await new Promise((resolve, reject) => {\n ws.on('open', resolve);\n ws.on('error', (error) => reject(error));\n ws.on('close', (code) => reject(`WebSocket returned ${code}`));\n });\n break;\n } catch (e) {\n if (retries >= maxRetry) {\n throw new Error(`failed to connect to ElevenLabs after ${retries} attempts: ${e}`);\n }\n\n const delay = Math.min(retries * 5, 5);\n retries++;\n\n this.#logger.warn(\n `failed to connect to ElevenLabs, retrying in ${delay} seconds: ${e} (${retries}/${maxRetry})`,\n );\n await new Promise((resolve) => setTimeout(resolve, delay * 1000));\n }\n }\n\n const requestId = randomUUID();\n const segmentId = randomUUID();\n\n ws.send(\n JSON.stringify({\n text: ' ',\n voice_settings: this.#opts.voice.settings,\n try_trigger_generation: true,\n chunk_length_schedule: this.#opts.chunkLengthSchedule,\n }),\n );\n let eosSent = false;\n\n const sendTask = async () => {\n let xmlContent: string[] = [];\n for await (const data of stream) {\n let text = data.token;\n\n if ((this.#opts.enableSsmlParsing && text.startsWith('<phoneme')) || xmlContent.length) {\n xmlContent.push(text);\n if (text.indexOf('</phoneme>') !== -1) {\n text = xmlContent.join(' ');\n xmlContent = [];\n } else {\n continue;\n }\n }\n\n ws.send(JSON.stringify({ text: text + ' ', try_trigger_generation: false }));\n }\n\n if (xmlContent.length) {\n this.#logger.warn('ElevenLabs stream ended with incomplete XML content');\n }\n\n ws.send(JSON.stringify({ text: '' }));\n eosSent = true;\n };\n\n const listenTask = async () => {\n while (!this.closed) {\n try {\n await new Promise<RawData>((resolve, reject) => {\n ws.removeAllListeners();\n ws.on('message', (data) => resolve(data));\n ws.on('close', (code, reason) => {\n if (!eosSent) {\n this.#logger.error(`WebSocket closed with code ${code}: ${reason}`);\n }\n reject();\n });\n }).then((msg) => {\n const json = JSON.parse(msg.toString());\n if ('audio' in json) {\n const data = new Int16Array(Buffer.from(json.audio, 'base64').buffer);\n const frame = new AudioFrame(\n data,\n sampleRateFromFormat(this.#opts.encoding),\n 1,\n data.length,\n );\n this.queue.put({ requestId, segmentId, frame });\n }\n });\n } catch {\n break;\n }\n }\n };\n\n await Promise.all([sendTask(), listenTask()]);\n }\n}\n\nconst sampleRateFromFormat = (encoding: TTSEncoding): number => {\n return Number(encoding.split('_')[1]);\n};\n"],"mappings":"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","names":[]}
package/package.json CHANGED
@@ -1,27 +1,43 @@
1
1
  {
2
2
  "name": "@livekit/agents-plugin-elevenlabs",
3
- "version": "0.4.5",
3
+ "version": "0.5.0",
4
4
  "description": "ElevenLabs plugin for LiveKit Node Agents",
5
5
  "main": "dist/index.js",
6
+ "require": "dist/index.cjs",
6
7
  "types": "dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./dist/index.d.ts",
11
+ "import": "./dist/index.js",
12
+ "require": "./dist/index.cjs"
13
+ }
14
+ },
7
15
  "author": "LiveKit",
8
16
  "type": "module",
17
+ "repository": "git@github.com:livekit/agents-js.git",
18
+ "license": "Apache-2.0",
19
+ "files": [
20
+ "dist",
21
+ "src",
22
+ "README.md"
23
+ ],
9
24
  "devDependencies": {
25
+ "@livekit/agents": "^x",
26
+ "@livekit/rtc-node": "^0.12.1",
10
27
  "@microsoft/api-extractor": "^7.35.0",
11
- "@livekit/rtc-node": "^0.11.1",
12
28
  "@types/ws": "^8.5.10",
13
- "typescript": "^5.0.0",
14
- "@livekit/agents": "^0.4.5"
29
+ "tsup": "^8.3.5",
30
+ "typescript": "^5.0.0"
15
31
  },
16
32
  "dependencies": {
17
33
  "ws": "^8.16.0"
18
34
  },
19
35
  "peerDependencies": {
20
- "@livekit/rtc-node": "^0.11.1",
21
- "@livekit/agents": "^0.4.5"
36
+ "@livekit/rtc-node": "^0.12.1",
37
+ "@livekit/agents": "^0.5.0x"
22
38
  },
23
39
  "scripts": {
24
- "build": "tsc",
40
+ "build": "tsup --onSuccess \"tsc --declaration --emitDeclarationOnly\"",
25
41
  "clean": "rm -rf dist",
26
42
  "clean:build": "pnpm clean && pnpm build",
27
43
  "lint": "eslint -f unix \"src/**/*.{ts,js}\"",
package/src/tts.ts CHANGED
@@ -2,7 +2,6 @@
2
2
  //
3
3
  // SPDX-License-Identifier: Apache-2.0
4
4
  import { AsyncIterableQueue, log, tokenize, tts } from '@livekit/agents';
5
- import type { WordStream } from '@livekit/agents/dist/tokenize/tokenizer.js';
6
5
  import { AudioFrame } from '@livekit/rtc-node';
7
6
  import { randomUUID } from 'node:crypto';
8
7
  import { URL } from 'node:url';
@@ -141,7 +140,7 @@ export class SynthesizeStream extends tts.SynthesizeStream {
141
140
  }
142
141
 
143
142
  async #run() {
144
- const segments = new AsyncIterableQueue<WordStream>();
143
+ const segments = new AsyncIterableQueue<tokenize.WordStream>();
145
144
 
146
145
  const tokenizeInput = async () => {
147
146
  let stream: tokenize.WordStream | null = null;
@@ -1,4 +0,0 @@
1
-
2
- > @livekit/agents-plugin-elevenlabs@0.4.5 build /home/runner/work/agents-js/agents-js/plugins/elevenlabs
3
- > tsc
4
-
package/CHANGELOG.md DELETED
@@ -1,55 +0,0 @@
1
- # @livekit/agents-plugin-elevenlabs
2
-
3
- ## 0.4.5
4
-
5
- ### Patch Changes
6
-
7
- - Use peer dependencies for @livekit/rtc-node and @livekit/agents - [#170](https://github.com/livekit/agents-js/pull/170) ([@lukasIO](https://github.com/lukasIO))
8
-
9
- - Override with defaults if opts are provided - [#165](https://github.com/livekit/agents-js/pull/165) ([@gching](https://github.com/gching))
10
-
11
- - Ensure token stream flushes - [#167](https://github.com/livekit/agents-js/pull/167) ([@gching](https://github.com/gching))
12
-
13
- - Updated dependencies [[`f5dc9896a9eec2ba1e703d7209936bcc22d46b33`](https://github.com/livekit/agents-js/commit/f5dc9896a9eec2ba1e703d7209936bcc22d46b33), [`141519068094ca72f0fa86c4ee829ab3746bc02f`](https://github.com/livekit/agents-js/commit/141519068094ca72f0fa86c4ee829ab3746bc02f), [`6bff3b030063b2e851946b90ad9e7d981a46e2aa`](https://github.com/livekit/agents-js/commit/6bff3b030063b2e851946b90ad9e7d981a46e2aa), [`b719e7d5ffa37b541b219cd05c631483480e2103`](https://github.com/livekit/agents-js/commit/b719e7d5ffa37b541b219cd05c631483480e2103), [`1558b9bc4ed8ddc1c6b552875549a4fb96ec3802`](https://github.com/livekit/agents-js/commit/1558b9bc4ed8ddc1c6b552875549a4fb96ec3802)]:
14
- - @livekit/agents@0.4.5
15
-
16
- ## 0.4.4
17
-
18
- ### Patch Changes
19
-
20
- - add ChunkedStream, openai.TTS - [#155](https://github.com/livekit/agents-js/pull/155) ([@nbsp](https://github.com/nbsp))
21
-
22
- - Updated dependencies [[`95ac1798daf846a14a4fb8b240412a7f66a897e6`](https://github.com/livekit/agents-js/commit/95ac1798daf846a14a4fb8b240412a7f66a897e6), [`cb500cb4319aab982d965c2ff118d2acbac965a8`](https://github.com/livekit/agents-js/commit/cb500cb4319aab982d965c2ff118d2acbac965a8), [`ddab1203ac56a88aa44defcc46f60b761b006292`](https://github.com/livekit/agents-js/commit/ddab1203ac56a88aa44defcc46f60b761b006292), [`cb500cb4319aab982d965c2ff118d2acbac965a8`](https://github.com/livekit/agents-js/commit/cb500cb4319aab982d965c2ff118d2acbac965a8)]:
23
- - @livekit/agents@0.4.4
24
-
25
- ## 0.4.3
26
-
27
- ### Patch Changes
28
-
29
- - Updated dependencies []:
30
- - @livekit/agents@0.4.3
31
-
32
- ## 0.4.2
33
-
34
- ### Patch Changes
35
-
36
- - Updated dependencies [[`38dd4c7d820de6faad512f0ac57c60f0fb1963be`](https://github.com/livekit/agents-js/commit/38dd4c7d820de6faad512f0ac57c60f0fb1963be)]:
37
- - @livekit/agents@0.4.2
38
-
39
- ## 0.4.1
40
-
41
- ### Patch Changes
42
-
43
- - Updated dependencies [[`d2f1ef9f54cd7dd13892aa2ebe2f3f348b01afcb`](https://github.com/livekit/agents-js/commit/d2f1ef9f54cd7dd13892aa2ebe2f3f348b01afcb)]:
44
- - @livekit/agents@0.4.1
45
-
46
- ## 0.4.0
47
-
48
- ### Minor Changes
49
-
50
- - re-add ElevenLabs TTS plugin - [#140](https://github.com/livekit/agents-js/pull/140) ([@nbsp](https://github.com/nbsp))
51
-
52
- ### Patch Changes
53
-
54
- - Updated dependencies [[`d9273f27ae8df6c41e56a8258f540a4ffd9a7b7b`](https://github.com/livekit/agents-js/commit/d9273f27ae8df6c41e56a8258f540a4ffd9a7b7b), [`b4b9c1d337ff9a0212e90fb31002d4fcf58fe287`](https://github.com/livekit/agents-js/commit/b4b9c1d337ff9a0212e90fb31002d4fcf58fe287), [`4713a0490a3e4cd823aa648172c618ea924ae5d6`](https://github.com/livekit/agents-js/commit/4713a0490a3e4cd823aa648172c618ea924ae5d6), [`09782ec316590aa956d1a234dfb5594a8974dbfc`](https://github.com/livekit/agents-js/commit/09782ec316590aa956d1a234dfb5594a8974dbfc), [`d32f2470d4d1ea6786f4e13334f7251cc9823c04`](https://github.com/livekit/agents-js/commit/d32f2470d4d1ea6786f4e13334f7251cc9823c04), [`37bcf55aa75a289978af82e86332298dd7c07c73`](https://github.com/livekit/agents-js/commit/37bcf55aa75a289978af82e86332298dd7c07c73), [`35265a5b58adcbc048078d39c115412734dd4462`](https://github.com/livekit/agents-js/commit/35265a5b58adcbc048078d39c115412734dd4462), [`61899cde8c7fc19791d9d7d6a5ccabc2bb8f94dd`](https://github.com/livekit/agents-js/commit/61899cde8c7fc19791d9d7d6a5ccabc2bb8f94dd), [`644effb7c607e214e8d3ff8147afa7aec4a2496b`](https://github.com/livekit/agents-js/commit/644effb7c607e214e8d3ff8147afa7aec4a2496b), [`0e40262f3a60823d3d9cabbbd90f71c943db6c0e`](https://github.com/livekit/agents-js/commit/0e40262f3a60823d3d9cabbbd90f71c943db6c0e), [`cb788b7c37ca2297c04f5deb410a2fdab70d5c5f`](https://github.com/livekit/agents-js/commit/cb788b7c37ca2297c04f5deb410a2fdab70d5c5f), [`f844e8bb865beadbc58ea1c3a21e362aee1dce55`](https://github.com/livekit/agents-js/commit/f844e8bb865beadbc58ea1c3a21e362aee1dce55)]:
55
- - @livekit/agents@0.4.0
@@ -1,20 +0,0 @@
1
- /**
2
- * Config file for API Extractor. For more info, please visit: https://api-extractor.com
3
- */
4
- {
5
- "$schema": "https://developer.microsoft.com/json-schemas/api-extractor/v7/api-extractor.schema.json",
6
-
7
- /**
8
- * Optionally specifies another JSON config file that this file extends from. This provides a way for
9
- * standard settings to be shared across multiple projects.
10
- *
11
- * If the path starts with "./" or "../", the path is resolved relative to the folder of the file that contains
12
- * the "extends" field. Otherwise, the first path segment is interpreted as an NPM package name, and will be
13
- * resolved using NodeJS require().
14
- *
15
- * SUPPORTED TOKENS: none
16
- * DEFAULT VALUE: ""
17
- */
18
- "extends": "../../api-extractor-shared.json",
19
- "mainEntryPointFilePath": "./dist/index.d.ts"
20
- }
package/tsconfig.json DELETED
@@ -1,16 +0,0 @@
1
- {
2
- "extends": "../../tsconfig.json",
3
- "include": ["./src"],
4
- "compilerOptions": {
5
- // match output dir to input dir. e.g. dist/index instead of dist/src/index
6
- "rootDir": "./src",
7
- "declarationDir": "./dist",
8
- "outDir": "./dist"
9
- },
10
- "typedocOptions": {
11
- "name": "plugins/agents-plugin-elevenlabs",
12
- "entryPointStrategy": "resolve",
13
- "readme": "none",
14
- "entryPoints": ["src/index.ts"]
15
- }
16
- }
@@ -1 +0,0 @@
1
- {"program":{"fileNames":["../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es5.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2015.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2016.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2017.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2018.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2019.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2020.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2021.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2022.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.dom.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.dom.iterable.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.dom.asynciterable.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.webworker.importscripts.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.scripthost.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2015.core.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2015.collection.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2015.generator.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2015.promise.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2016.intl.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2017.date.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2017.object.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2017.string.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2017.intl.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2018.intl.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2018.promise.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2019.array.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2019.object.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2019.string.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2019.intl.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2020.date.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2020.promise.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2020.string.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2020.intl.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2020.number.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2021.promise.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2021.string.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2021.intl.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2022.array.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2022.error.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2022.intl.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2022.object.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2022.sharedmemory.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2022.string.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.esnext.intl.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.decorators.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../node_modules/.pnpm/typescript@5.4.5/node_modules/typescript/lib/lib.es2022.full.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/assert.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/assert/strict.d.ts","../../node_modules/.pnpm/buffer@6.0.3/node_modules/buffer/index.d.ts","../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/header.d.ts","../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/readable.d.ts","../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/file.d.ts","../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/fetch.d.ts","../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/formdata.d.ts","../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/connector.d.ts","../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/client.d.ts","../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/errors.d.ts","../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/dispatcher.d.ts","../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/global-dispatcher.d.ts","../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/global-origin.d.ts","../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/pool-stats.d.ts","../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/pool.d.ts","../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/handlers.d.ts","../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/balanced-pool.d.ts","../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/agent.d.ts","../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/mock-interceptor.d.ts","../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/mock-agent.d.ts","../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/mock-client.d.ts","../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/mock-pool.d.ts","../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/mock-errors.d.ts","../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/proxy-agent.d.ts","../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/env-http-proxy-agent.d.ts","../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/retry-handler.d.ts","../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/retry-agent.d.ts","../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/api.d.ts","../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/interceptors.d.ts","../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/util.d.ts","../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/cookies.d.ts","../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/patch.d.ts","../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/websocket.d.ts","../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/eventsource.d.ts","../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/filereader.d.ts","../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/diagnostics-channel.d.ts","../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/content-type.d.ts","../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/cache.d.ts","../../node_modules/.pnpm/undici-types@6.19.8/node_modules/undici-types/index.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/globals.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/async_hooks.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/buffer.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/child_process.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/cluster.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/console.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/constants.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/crypto.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/dgram.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/diagnostics_channel.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/dns.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/dns/promises.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/domain.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/dom-events.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/events.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/fs.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/fs/promises.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/http.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/http2.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/https.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/inspector.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/module.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/net.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/os.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/path.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/perf_hooks.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/process.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/punycode.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/querystring.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/readline.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/readline/promises.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/repl.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/sea.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/sqlite.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/stream.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/stream/promises.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/stream/consumers.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/stream/web.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/string_decoder.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/test.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/timers.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/timers/promises.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/tls.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/trace_events.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/tty.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/url.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/util.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/v8.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/vm.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/wasi.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/worker_threads.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/zlib.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/globals.global.d.ts","../../node_modules/.pnpm/@types+node@22.5.5/node_modules/@types/node/index.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/binary-encoding.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/enum.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/field-list.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/proto2.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/google/protobuf/descriptor_pb.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/scalar.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/service-type.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/private/feature-set.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/descriptor-set.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/private/field-wrapper.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/message-type.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/field.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/binary-format.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/message.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/extension.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/type-registry.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/json-format.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/private/field-list.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/private/enum.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/private/util.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/private/extensions.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/private/proto-runtime.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/proto3.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/proto-double.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/proto-int64.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/proto-base64.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/proto-delimited.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/private/reify-wkt.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/codegen-info.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/is-message.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/extension-accessor.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/create-descriptor-set.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/create-registry.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/create-registry-from-desc.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/to-plain-message.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/google/protobuf/compiler/plugin_pb.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/google/protobuf/source_context_pb.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/google/protobuf/any_pb.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/google/protobuf/type_pb.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/google/protobuf/api_pb.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/google/protobuf/duration_pb.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/google/protobuf/empty_pb.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/google/protobuf/field_mask_pb.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/google/protobuf/struct_pb.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/google/protobuf/timestamp_pb.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/google/protobuf/wrappers_pb.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@1.10.0/node_modules/@bufbuild/protobuf/dist/cjs/index.d.ts","../../node_modules/.pnpm/@livekit+protocol@1.27.1/node_modules/@livekit/protocol/src/gen/livekit_metrics_pb.d.ts","../../node_modules/.pnpm/@livekit+protocol@1.27.1/node_modules/@livekit/protocol/src/gen/livekit_models_pb.d.ts","../../node_modules/.pnpm/@livekit+protocol@1.27.1/node_modules/@livekit/protocol/src/gen/livekit_agent_pb.d.ts","../../node_modules/.pnpm/@livekit+protocol@1.27.1/node_modules/@livekit/protocol/src/gen/livekit_agent_dispatch_pb.d.ts","../../node_modules/.pnpm/@livekit+protocol@1.27.1/node_modules/@livekit/protocol/src/gen/livekit_egress_pb.d.ts","../../node_modules/.pnpm/@livekit+protocol@1.27.1/node_modules/@livekit/protocol/src/gen/livekit_ingress_pb.d.ts","../../node_modules/.pnpm/@livekit+protocol@1.27.1/node_modules/@livekit/protocol/src/gen/livekit_room_pb.d.ts","../../node_modules/.pnpm/@livekit+protocol@1.27.1/node_modules/@livekit/protocol/src/gen/livekit_rtc_pb.d.ts","../../node_modules/.pnpm/@livekit+protocol@1.27.1/node_modules/@livekit/protocol/src/gen/livekit_sip_pb.d.ts","../../node_modules/.pnpm/@livekit+protocol@1.27.1/node_modules/@livekit/protocol/src/gen/livekit_webhook_pb.d.ts","../../node_modules/.pnpm/@livekit+protocol@1.27.1/node_modules/@livekit/protocol/src/gen/version.d.ts","../../node_modules/.pnpm/@livekit+protocol@1.27.1/node_modules/@livekit/protocol/src/index.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@2.2.1/node_modules/@bufbuild/protobuf/dist/cjs/wkt/gen/google/protobuf/descriptor_pb.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@2.2.1/node_modules/@bufbuild/protobuf/dist/cjs/reflect/scalar.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@2.2.1/node_modules/@bufbuild/protobuf/dist/cjs/descriptors.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@2.2.1/node_modules/@bufbuild/protobuf/dist/cjs/json-value.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@2.2.1/node_modules/@bufbuild/protobuf/dist/cjs/codegenv1/types.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@2.2.1/node_modules/@bufbuild/protobuf/dist/cjs/reflect/unsafe.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@2.2.1/node_modules/@bufbuild/protobuf/dist/cjs/reflect/reflect-types.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@2.2.1/node_modules/@bufbuild/protobuf/dist/cjs/reflect/guard.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@2.2.1/node_modules/@bufbuild/protobuf/dist/cjs/wire/binary-encoding.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@2.2.1/node_modules/@bufbuild/protobuf/dist/cjs/wire/base64-encoding.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@2.2.1/node_modules/@bufbuild/protobuf/dist/cjs/wire/text-encoding.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@2.2.1/node_modules/@bufbuild/protobuf/dist/cjs/wire/text-format.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@2.2.1/node_modules/@bufbuild/protobuf/dist/cjs/reflect/error.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@2.2.1/node_modules/@bufbuild/protobuf/dist/cjs/reflect/names.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@2.2.1/node_modules/@bufbuild/protobuf/dist/cjs/reflect/nested-types.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@2.2.1/node_modules/@bufbuild/protobuf/dist/cjs/reflect/reflect.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@2.2.1/node_modules/@bufbuild/protobuf/dist/cjs/reflect/index.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@2.2.1/node_modules/@bufbuild/protobuf/dist/cjs/to-binary.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@2.2.1/node_modules/@bufbuild/protobuf/dist/cjs/from-binary.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@2.2.1/node_modules/@bufbuild/protobuf/dist/cjs/wire/size-delimited.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@2.2.1/node_modules/@bufbuild/protobuf/dist/cjs/wire/index.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@2.2.1/node_modules/@bufbuild/protobuf/dist/cjs/types.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@2.2.1/node_modules/@bufbuild/protobuf/dist/cjs/is-message.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@2.2.1/node_modules/@bufbuild/protobuf/dist/cjs/create.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@2.2.1/node_modules/@bufbuild/protobuf/dist/cjs/clone.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@2.2.1/node_modules/@bufbuild/protobuf/dist/cjs/equals.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@2.2.1/node_modules/@bufbuild/protobuf/dist/cjs/fields.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@2.2.1/node_modules/@bufbuild/protobuf/dist/cjs/registry.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@2.2.1/node_modules/@bufbuild/protobuf/dist/cjs/to-json.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@2.2.1/node_modules/@bufbuild/protobuf/dist/cjs/from-json.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@2.2.1/node_modules/@bufbuild/protobuf/dist/cjs/extensions.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@2.2.1/node_modules/@bufbuild/protobuf/dist/cjs/proto-int64.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@2.2.1/node_modules/@bufbuild/protobuf/dist/cjs/index.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@2.2.1/node_modules/@bufbuild/protobuf/dist/cjs/codegenv1/boot.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@2.2.1/node_modules/@bufbuild/protobuf/dist/cjs/codegenv1/embed.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@2.2.1/node_modules/@bufbuild/protobuf/dist/cjs/codegenv1/enum.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@2.2.1/node_modules/@bufbuild/protobuf/dist/cjs/codegenv1/extension.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@2.2.1/node_modules/@bufbuild/protobuf/dist/cjs/codegenv1/file.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@2.2.1/node_modules/@bufbuild/protobuf/dist/cjs/codegenv1/message.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@2.2.1/node_modules/@bufbuild/protobuf/dist/cjs/codegenv1/service.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@2.2.1/node_modules/@bufbuild/protobuf/dist/cjs/codegenv1/symbols.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@2.2.1/node_modules/@bufbuild/protobuf/dist/cjs/codegenv1/scalar.d.ts","../../node_modules/.pnpm/@bufbuild+protobuf@2.2.1/node_modules/@bufbuild/protobuf/dist/cjs/codegenv1/index.d.ts","../../node_modules/.pnpm/@livekit+rtc-node@0.11.1/node_modules/@livekit/rtc-node/dist/proto/e2ee_pb.d.ts","../../node_modules/.pnpm/@livekit+rtc-node@0.11.1/node_modules/@livekit/rtc-node/dist/proto/handle_pb.d.ts","../../node_modules/.pnpm/@livekit+rtc-node@0.11.1/node_modules/@livekit/rtc-node/dist/proto/participant_pb.d.ts","../../node_modules/.pnpm/@livekit+rtc-node@0.11.1/node_modules/@livekit/rtc-node/dist/proto/stats_pb.d.ts","../../node_modules/.pnpm/@livekit+rtc-node@0.11.1/node_modules/@livekit/rtc-node/dist/proto/track_pb.d.ts","../../node_modules/.pnpm/@livekit+rtc-node@0.11.1/node_modules/@livekit/rtc-node/dist/proto/video_frame_pb.d.ts","../../node_modules/.pnpm/@livekit+rtc-node@0.11.1/node_modules/@livekit/rtc-node/dist/proto/room_pb.d.ts","../../node_modules/.pnpm/@livekit+typed-emitter@3.0.0/node_modules/@livekit/typed-emitter/index.d.ts","../../node_modules/.pnpm/@livekit+rtc-node@0.11.1/node_modules/@livekit/rtc-node/dist/e2ee.d.ts","../../node_modules/.pnpm/@livekit+rtc-node@0.11.1/node_modules/@livekit/rtc-node/dist/napi/native.d.ts","../../node_modules/.pnpm/@livekit+rtc-node@0.11.1/node_modules/@livekit/rtc-node/dist/proto/audio_frame_pb.d.ts","../../node_modules/.pnpm/@livekit+rtc-node@0.11.1/node_modules/@livekit/rtc-node/dist/proto/rpc_pb.d.ts","../../node_modules/.pnpm/@livekit+rtc-node@0.11.1/node_modules/@livekit/rtc-node/dist/proto/ffi_pb.d.ts","../../node_modules/.pnpm/@livekit+rtc-node@0.11.1/node_modules/@livekit/rtc-node/dist/ffi_client.d.ts","../../node_modules/.pnpm/@livekit+rtc-node@0.11.1/node_modules/@livekit/rtc-node/dist/rpc.d.ts","../../node_modules/.pnpm/@livekit+rtc-node@0.11.1/node_modules/@livekit/rtc-node/dist/audio_frame.d.ts","../../node_modules/.pnpm/@livekit+rtc-node@0.11.1/node_modules/@livekit/rtc-node/dist/audio_source.d.ts","../../node_modules/.pnpm/@livekit+rtc-node@0.11.1/node_modules/@livekit/rtc-node/dist/video_frame.d.ts","../../node_modules/.pnpm/@livekit+rtc-node@0.11.1/node_modules/@livekit/rtc-node/dist/video_source.d.ts","../../node_modules/.pnpm/@livekit+rtc-node@0.11.1/node_modules/@livekit/rtc-node/dist/track.d.ts","../../node_modules/.pnpm/@livekit+rtc-node@0.11.1/node_modules/@livekit/rtc-node/dist/track_publication.d.ts","../../node_modules/.pnpm/@livekit+rtc-node@0.11.1/node_modules/@livekit/rtc-node/dist/transcription.d.ts","../../node_modules/.pnpm/@livekit+rtc-node@0.11.1/node_modules/@livekit/rtc-node/dist/types.d.ts","../../node_modules/.pnpm/@livekit+rtc-node@0.11.1/node_modules/@livekit/rtc-node/dist/participant.d.ts","../../node_modules/.pnpm/@livekit+rtc-node@0.11.1/node_modules/@livekit/rtc-node/dist/room.d.ts","../../node_modules/.pnpm/@livekit+mutex@1.1.0/node_modules/@livekit/mutex/dist/index.d.ts","../../node_modules/.pnpm/@livekit+rtc-node@0.11.1/node_modules/@livekit/rtc-node/dist/audio_stream.d.ts","../../node_modules/.pnpm/@livekit+rtc-node@0.11.1/node_modules/@livekit/rtc-node/dist/audio_resampler.d.ts","../../node_modules/.pnpm/@livekit+rtc-node@0.11.1/node_modules/@livekit/rtc-node/dist/video_stream.d.ts","../../node_modules/.pnpm/@livekit+rtc-node@0.11.1/node_modules/@livekit/rtc-node/dist/index.d.ts","../../agents/dist/job.d.ts","../../agents/dist/worker.d.ts","../../agents/dist/cli.d.ts","../../node_modules/.pnpm/zod@3.23.8/node_modules/zod/lib/helpers/typeAliases.d.ts","../../node_modules/.pnpm/zod@3.23.8/node_modules/zod/lib/helpers/util.d.ts","../../node_modules/.pnpm/zod@3.23.8/node_modules/zod/lib/ZodError.d.ts","../../node_modules/.pnpm/zod@3.23.8/node_modules/zod/lib/locales/en.d.ts","../../node_modules/.pnpm/zod@3.23.8/node_modules/zod/lib/errors.d.ts","../../node_modules/.pnpm/zod@3.23.8/node_modules/zod/lib/helpers/parseUtil.d.ts","../../node_modules/.pnpm/zod@3.23.8/node_modules/zod/lib/helpers/enumUtil.d.ts","../../node_modules/.pnpm/zod@3.23.8/node_modules/zod/lib/helpers/errorUtil.d.ts","../../node_modules/.pnpm/zod@3.23.8/node_modules/zod/lib/helpers/partialUtil.d.ts","../../node_modules/.pnpm/zod@3.23.8/node_modules/zod/lib/types.d.ts","../../node_modules/.pnpm/zod@3.23.8/node_modules/zod/lib/external.d.ts","../../node_modules/.pnpm/zod@3.23.8/node_modules/zod/lib/index.d.ts","../../node_modules/.pnpm/zod@3.23.8/node_modules/zod/index.d.ts","../../agents/dist/llm/function_context.d.ts","../../agents/dist/llm/chat_context.d.ts","../../agents/dist/utils.d.ts","../../agents/dist/llm/llm.d.ts","../../agents/dist/llm/index.d.ts","../../agents/dist/multimodal/multimodal_agent.d.ts","../../agents/dist/transcription.d.ts","../../agents/dist/multimodal/agent_playout.d.ts","../../agents/dist/multimodal/index.d.ts","../../agents/dist/stt/stt.d.ts","../../agents/dist/vad.d.ts","../../agents/dist/stt/stream_adapter.d.ts","../../agents/dist/stt/index.d.ts","../../agents/dist/tokenize/tokenizer.d.ts","../../agents/dist/tts/tts.d.ts","../../agents/dist/tokenize/basic/basic.d.ts","../../agents/dist/tokenize/basic/index.d.ts","../../agents/dist/tokenize/token_stream.d.ts","../../agents/dist/tokenize/index.d.ts","../../agents/dist/tts/stream_adapter.d.ts","../../agents/dist/tts/index.d.ts","../../agents/dist/pipeline/agent_playout.d.ts","../../agents/dist/pipeline/agent_output.d.ts","../../agents/dist/pipeline/pipeline_agent.d.ts","../../agents/dist/pipeline/index.d.ts","../../agents/dist/plugin.d.ts","../../agents/dist/version.d.ts","../../node_modules/.pnpm/pino-std-serializers@6.2.2/node_modules/pino-std-serializers/index.d.ts","../../node_modules/.pnpm/sonic-boom@3.8.1/node_modules/sonic-boom/types/index.d.ts","../../node_modules/.pnpm/pino@8.21.0/node_modules/pino/pino.d.ts","../../agents/dist/log.d.ts","../../agents/dist/generator.d.ts","../../agents/dist/audio.d.ts","../../agents/dist/index.d.ts","../../node_modules/.pnpm/@types+ws@8.5.10/node_modules/@types/ws/index.d.ts","./src/models.ts","./src/tts.ts","./src/index.ts"],"fileInfos":[{"version":"824cb491a40f7e8fdeb56f1df5edf91b23f3e3ee6b4cde84d4a99be32338faee","affectsGlobalScope":true},"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","9a68c0c07ae2fa71b44384a839b7b8d81662a236d4b9ac30916718f7510b1b2d","5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","5514e54f17d6d74ecefedc73c504eadffdeda79c7ea205cf9febead32d45c4bc",{"version":"87d693a4920d794a73384b3c779cadcb8548ac6945aa7a925832fe2418c9527a","affectsGlobalScope":true},{"version":"76f838d5d49b65de83bc345c04aa54c62a3cfdb72a477dc0c0fce89a30596c30","affectsGlobalScope":true},{"version":"73e370058f82add1fdbc78ef3d1aab110108f2d5d9c857cb55d3361982347ace","affectsGlobalScope":true},{"version":"80e18897e5884b6723488d4f5652167e7bb5024f946743134ecc4aa4ee731f89","affectsGlobalScope":true},{"version":"cd034f499c6cdca722b60c04b5b1b78e058487a7085a8e0d6fb50809947ee573","affectsGlobalScope":true},{"version":"138fb588d26538783b78d1e3b2c2cc12d55840b97bf5e08bca7f7a174fbe2f17","affectsGlobalScope":true},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true},{"version":"4443e68b35f3332f753eacc66a04ac1d2053b8b035a0e0ac1d455392b5e243b3","affectsGlobalScope":true},{"version":"bc47685641087c015972a3f072480889f0d6c65515f12bd85222f49a98952ed7","affectsGlobalScope":true},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true},{"version":"93495ff27b8746f55d19fcbcdbaccc99fd95f19d057aed1bd2c0cafe1335fbf0","affectsGlobalScope":true},{"version":"6fc23bb8c3965964be8c597310a2878b53a0306edb71d4b5a4dfe760186bcc01","affectsGlobalScope":true},{"version":"ea011c76963fb15ef1cdd7ce6a6808b46322c527de2077b6cfdf23ae6f5f9ec7","affectsGlobalScope":true},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true},{"version":"bb42a7797d996412ecdc5b2787720de477103a0b2e53058569069a0e2bae6c7e","affectsGlobalScope":true},{"version":"4738f2420687fd85629c9efb470793bb753709c2379e5f85bc1815d875ceadcd","affectsGlobalScope":true},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true},{"version":"9fc46429fbe091ac5ad2608c657201eb68b6f1b8341bd6d670047d32ed0a88fa","affectsGlobalScope":true},{"version":"61c37c1de663cf4171e1192466e52c7a382afa58da01b1dc75058f032ddf0839","affectsGlobalScope":true},{"version":"b541a838a13f9234aba650a825393ffc2292dc0fc87681a5d81ef0c96d281e7a","affectsGlobalScope":true},{"version":"b20fe0eca9a4e405f1a5ae24a2b3290b37cf7f21eba6cbe4fc3fab979237d4f3","affectsGlobalScope":true},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true},{"version":"49ed889be54031e1044af0ad2c603d627b8bda8b50c1a68435fe85583901d072","affectsGlobalScope":true},{"version":"e93d098658ce4f0c8a0779e6cab91d0259efb88a318137f686ad76f8410ca270","affectsGlobalScope":true},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true},{"version":"bf14a426dbbf1022d11bd08d6b8e709a2e9d246f0c6c1032f3b2edb9a902adbe","affectsGlobalScope":true},{"version":"5e07ed3809d48205d5b985642a59f2eba47c402374a7cf8006b686f79efadcbd","affectsGlobalScope":true},{"version":"2b72d528b2e2fe3c57889ca7baef5e13a56c957b946906d03767c642f386bbc3","affectsGlobalScope":true},{"version":"8073890e29d2f46fdbc19b8d6d2eb9ea58db9a2052f8640af20baff9afbc8640","affectsGlobalScope":true},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true},{"version":"51e547984877a62227042850456de71a5c45e7fe86b7c975c6e68896c86fa23b","affectsGlobalScope":true},{"version":"956d27abdea9652e8368ce029bb1e0b9174e9678a273529f426df4b3d90abd60","affectsGlobalScope":true},{"version":"4fa6ed14e98aa80b91f61b9805c653ee82af3502dc21c9da5268d3857772ca05","affectsGlobalScope":true},{"version":"e6633e05da3ff36e6da2ec170d0d03ccf33de50ca4dc6f5aeecb572cedd162fb","affectsGlobalScope":true},{"version":"d8670852241d4c6e03f2b89d67497a4bbefe29ecaa5a444e2c11a9b05e6fccc6","affectsGlobalScope":true},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true},{"version":"caccc56c72713969e1cfe5c3d44e5bab151544d9d2b373d7dbe5a1e4166652be","affectsGlobalScope":true},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true},{"version":"50d53ccd31f6667aff66e3d62adf948879a3a16f05d89882d1188084ee415bbc","affectsGlobalScope":true},{"version":"13f6e6380c78e15e140243dc4be2fa546c287c6d61f4729bc2dd7cf449605471","affectsGlobalScope":true},{"version":"33358442698bb565130f52ba79bfd3d4d484ac85fe33f3cb1759c54d18201393","affectsGlobalScope":true},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true},"3cbad9a1ba4453443026ed38e4b8be018abb26565fa7c944376463ad9df07c41","e142fda89ed689ea53d6f2c93693898464c7d29a0ae71c6dc8cdfe5a1d76c775","7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","4967529644e391115ca5592184d4b63980569adf60ee685f968fd59ab1557188","5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","24bd580b5743dc56402c440dc7f9a4f5d592ad7a419f25414d37a7bfe11e342b","25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","c464d66b20788266e5353b48dc4aa6bc0dc4a707276df1e7152ab0c9ae21fad8","78d0d27c130d35c60b5e5566c9f1e5be77caf39804636bc1a40133919a949f21","c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","1d6e127068ea8e104a912e42fc0a110e2aa5a66a356a917a163e8cf9a65e4a75","5ded6427296cdf3b9542de4471d2aa8d3983671d4cac0f4bf9c637208d1ced43","6bdc71028db658243775263e93a7db2fd2abfce3ca569c3cca5aee6ed5eb186d","cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","0b8a9268adaf4da35e7fa830c8981cfa22adbbe5b3f6f5ab91f6658899e657a7","11396ed8a44c02ab9798b7dca436009f866e8dae3c9c25e8c1fbc396880bf1bb","ba7bc87d01492633cb5a0e5da8a4a42a1c86270e7b3d2dea5d156828a84e4882","4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","c21dc52e277bcfc75fac0436ccb75c204f9e1b3fa5e12729670910639f27343e","13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","ea0148f897b45a76544ae179784c95af1bd6721b8610af9ffa467a518a086a43","24c6a117721e606c9984335f71711877293a9651e44f59f3d21c1ea0856f9cc9","dd3273ead9fbde62a72949c97dbec2247ea08e0c6952e701a483d74ef92d6a17","405822be75ad3e4d162e07439bac80c6bcc6dbae1929e179cf467ec0b9ee4e2e","0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","4d2b0eb911816f66abe4970898f97a2cfc902bcd743cbfa5017fad79f7ef90d8","bd0532fd6556073727d28da0edfd1736417a3f9f394877b6d5ef6ad88fba1d1a","89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","e53a3c2a9f624d90f24bf4588aacd223e7bec1b9d0d479b68d2f4a9e6011147f","24b8685c62562f5d98615c5a0c1d05f297cf5065f15246edfe99e81ec4c0e011","93507c745e8f29090efb99399c3f77bec07db17acd75634249dc92f961573387","339dc5265ee5ed92e536a93a04c4ebbc2128f45eeec6ed29f379e0085283542c","4732aec92b20fb28c5fe9ad99521fb59974289ed1e45aecb282616202184064f","2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","bf67d53d168abc1298888693338cb82854bdb2e69ef83f8a0092093c2d562107",{"version":"964f307d249df0d7e8eb16d594536c0ac6cc63c8d467edf635d05542821dec8e","affectsGlobalScope":true},"db3ec8993b7596a4ef47f309c7b25ee2505b519c13050424d9c34701e5973315",{"version":"6a1ebd564896d530364f67b3257c62555b61d60494a73dfe8893274878c6589d","affectsGlobalScope":true},"af49b066a76ce26673fe49d1885cc6b44153f1071ed2d952f2a90fccba1095c9","f22fd1dc2df53eaf5ce0ff9e0a3326fc66f880d6a652210d50563ae72625455f",{"version":"3ddbdb519e87a7827c4f0c4007013f3628ca0ebb9e2b018cf31e5b2f61c593f1","affectsGlobalScope":true},"a40826e8476694e90da94aa008283a7de50d1dafd37beada623863f1901cb7fb",{"version":"6d498d4fd8036ea02a4edcae10375854a0eb1df0496cf0b9d692577d3c0fd603","affectsGlobalScope":true},"24642567d3729bcc545bacb65ee7c0db423400c7f1ef757cab25d05650064f98","fd09b892597ab93e7f79745ce725a3aaf6dd005e8db20f0c63a5d10984cba328","a3be878ff1e1964ab2dc8e0a3b67087cf838731c7f3d8f603337e7b712fdd558","5433f7f77cd1fd53f45bd82445a4e437b2f6a72a32070e907530a4fea56c30c8","9be74296ee565af0c12d7071541fdd23260f53c3da7731fb6361f61150a791f6",{"version":"ee1ee365d88c4c6c0c0a5a5701d66ebc27ccd0bcfcfaa482c6e2e7fe7b98edf7","affectsGlobalScope":true},{"version":"f501a53b94ba382d9ba396a5c486969a3abc68309828fa67f916035f5d37fe2b","affectsGlobalScope":true},"aa658b5d765f630c312ac9202d110bbaf2b82d180376457f0a9d57b42629714a","312ac7cbd070107766a9886fd27f9faad997ef57d93fdfb4095df2c618ac8162","2e9b4e7f9942af902eb85bae6066d04ef1afee51d61554a62d144df3da7dec94","672ad3045f329e94002256f8ed460cfd06173a50c92cde41edaadfacffd16808","64da4965d1e0559e134d9c1621ae400279a216f87ed00c4cce4f2c7c78021712","2205527b976f4f1844adc46a3f0528729fb68cac70027a5fb13c49ca23593797",{"version":"0166fce1204d520fdfd6b5febb3cda3deee438bcbf8ce9ffeb2b1bcde7155346","affectsGlobalScope":true},"d8b13eab85b532285031b06a971fa051bf0175d8fff68065a24a6da9c1c986cf","50c382ba1827988c59aa9cc9d046e386d55d70f762e9e352e95ee8cb7337cdb8","bb9627ab9d078c79bb5623de4ac8e5d08f806ec9b970962dfc83b3211373690d",{"version":"21d7e87f271e72d02f8d167edc902f90b04525edc7918f00f01dd0bd00599f7e","affectsGlobalScope":true},{"version":"6f6abdaf8764ef01a552a958f45e795b5e79153b87ddad3af5264b86d2681b72","affectsGlobalScope":true},"a215554477f7629e3dcbc8cde104bec036b78673650272f5ffdc5a2cee399a0a","c3497fc242aabfedcd430b5932412f94f157b5906568e737f6a18cc77b36a954","cdc1de3b672f9ef03ff15c443aa1b631edca35b6ae6970a7da6400647ff74d95","139ad1dc93a503da85b7a0d5f615bddbae61ad796bc68fedd049150db67a1e26","bf01fdd3b93cf633b3f7420718457af19c57ab8cbfea49268df60bae2e84d627","15c5e91b5f08be34a78e3d976179bf5b7a9cc28dc0ef1ffebffeb3c7812a2dca","5f461d6f5d9ff474f1121cc3fd86aa3cd67476c701f55c306d323c5112201207","65b39cc6b610a4a4aecc321f6efb436f10c0509d686124795b4c36a5e915b89e","269929a24b2816343a178008ac9ae9248304d92a8ba8e233055e0ed6dbe6ef71","93452d394fdd1dc551ec62f5042366f011a00d342d36d50793b3529bfc9bd633",{"version":"83fe38aa2243059ea859325c006da3964ead69b773429fe049ebb0426e75424d","affectsGlobalScope":true},"d3edb86744e2c19f2c1503849ac7594a5e06024f2451bacae032390f2e20314a",{"version":"e501cbca25bd54f0bcb89c00f092d3cae227e970b93fd76207287fd8110b123d","affectsGlobalScope":true},{"version":"8a3e61347b8f80aa5af532094498bceb0c0b257b25a6aa8ab4880fd6ed57c95a","affectsGlobalScope":true},"98e00f3613402504bc2a2c9a621800ab48e0a463d1eed062208a4ae98ad8f84c","950f6810f7c80e0cffefcf1bcc6ade3485c94394720e334c3c2be3c16b6922fb","5475df7cfc493a08483c9d7aa61cc04791aecba9d0a2efc213f23c4006d4d3cd","000720870b275764c65e9f28ac97cc9e4d9e4a36942d4750ca8603e416e9c57c",{"version":"54412c70bacb9ed547ed6caae8836f712a83ccf58d94466f3387447ec4e82dc3","affectsGlobalScope":true},{"version":"8701e60428b700ed0206c805d702cfb2a7b4b0b76423439451d1018fa70610e4","affectsGlobalScope":true},"4c48e931a72f6971b5add7fdb1136be1d617f124594e94595f7114af749395e0","478eb5c32250678a906d91e0529c70243fc4d75477a08f3da408e2615396f558","e686a88c9ee004c8ba12ffc9d674ca3192a4c50ed0ca6bd5b2825c289e2b2bfe",{"version":"0d27932df2fbc3728e78b98892540e24084424ce12d3bd32f62a23cf307f411f","affectsGlobalScope":true},"4423fb3d6abe6eefb8d7f79eb2df9510824a216ec1c6feee46718c9b18e6d89f",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"01c47d1c006b3a15b51d89d7764fff7e4fabc4e412b3a61ee5357bd74b822879","d35d462c95a35e34cc56d4d1dbf6f41999283dc642013a6eba9c293da48922fc","961ae7c3710ad5925a8041716e5816ac1e301088c3815b710f20d3ae09695430","90d6939e56a48b142c601779694d77983fd71520694844f6928781c4718886fb","2d737ff39762a1fcfabd3b0f97c4b7d891d8f9bb8c45982e6e87549a90982481","465dfadcd4b4362963bc40a8f94ace0d1ecda68e869eeddc20be6bf57e0110fb","808fd1efdfa85e4eab8012c7a087a2ebb8b0c6a536d2518ff6cead7a3192eaf1","fb3304ed260dec0eaad2f713317b6bbc218c0d21cb67c78580bb3897c15575c6","b3850321b5b187ef1dd451bbd7b83c6e6831cce74a4a8bee95b9ff31b2d5172f","eb257064d5dacdcfe73a4cef3325562fd3a7927fcaadcede2b5dddb5b92da417","6ea9588a03dd2768754a9360166daae3b1bf5120e65f3baef43c5cd3dcb4fbb8","d67615efb0127284da59f73194545cf9410d2b48da3129a3b326abdead17c6f6","5af50732b404045bcc0bcb63cb7883ece1b4e6852b64517945e914432363bc2c","58070c94ea0e5108c0539458badde653762717cfeecdf5d25512e2f8171416fb","4d2f45800ddb1cb1de1ab34196c010fbdd2e2bef101c4e4b97091dc5040c2ca9","70fe05199ca2af2c83c0a914ec18e92ffb271c2e4a2f8ee3c04f6e031b14acbc","6a4692a562d2905f78f4bba3799e9a5c1f17a15d3f1a3f9d0b95fc5a93ed0886","92a33be4e45b94a0f4572071c4768189817546e2880ab38befcb844cdf102534","5fe7963c7ca10d11035871bebc893f20c5be4c63e30fbdac989da71ca5eebdbf","dd4ded215da5342d94173e6643650023ea248c0d9c0bbe0318caebe7274438c5","2ffb2971267f8df92b64cc3916630e376de936171df46a29612088f60293cd41","5c228e9ec4226c3f61ed137a59a15bdfd0574c4bfddbdc013c62d6e0b27b0b6a","9a84ba25d436d82f0830f9f88c0e698857c131f6305e80594a9861c65a10ae30","7d6568f33fe202d6e75ed60ddeac15bca8ce1e01077385e4cb3dd9dd0130da28","82d3cdd488466e697681b914420994c88fd8595bc6888c46c421af7919405c71","aa61e6cb5e048437ab87d09e316ac45770840de626f5736c98a192c7d60c907a","071a8cff6dad210ba0bf897f1388eeeaa805a526b9ec7cc7c8dddc635163d806","e29f94fc3483a23f83a1acb0d931ff693e97b1109554552aa521402beb0bf48e","147e333507832d5d99734b020def22f33f995d5fc86d747b4f5356d0188e63fd","8c4a8552716e1e0fdc136f0854f3f06f5fb8782b70adeb1a90aff8fe215629b8","899200619538b0f98db2b5bc852350aad059f2070aa814deedead6c02c9d8d46","64531510183ce687dc1484b1872abce3b9c6e01eceb2b6470e0a9c57fd2712d0","db9086eccd3256f810ac13f48e370f8b5137a63208f8040422a94744f781e73c","cebd0ffc617a714a5b393684d3d67486c23113268ff72169dbd67a1ade72cef8","e712cad833246cdf450f5554ee1510f584a95a5e281efd52e29bed2deb1cc4c9","d7c8351dfa3a584c6fdc09544ef019194cb2ea7d9e85fb11230a3e42c4dc983a","33f99657300799c354171117d7f70da1f325f2083371074d92c6e07903110f87","fa6b27a596fa69645ea962f3d865eedb7a6e431fb1abe7648722fb33d30307e3","5174f5ef2b78013a23512cbc7836bf85781a5cad54c927f1ddbac41f28855b39","60da60a86767337d4f2184af60c1d8a5a3d78d2468323ae688478a4aac33d6e8","9d5758e932374ed7965ac329d30700098a4c752efdb1ce8170d74b3354475a7c","9a2205771a9ac694ee379c7da11c2ecbf92df025bf3ca0a7c67d5a466169da3b","ee7cf7d3f43ab03590c2af84c8c0f6685a950d28a1ba86a5ec594fc21fd892d1","eb9b4a340fdfa222f0bb5ca5cc57cfbdd2a8aece5b4c25543309a90906a7493a","2ef5231141ed12543768d0c0c5765ffd12d1a28fc231ec4c40caf11aa19908df","921572e442e836b604dfb2042ae0b4a268c9713c694a1807b3ad2f6acdf93737","b45c6a853aa17d19445f501aef85f135d7287b6e349a2297f1554e95d079d9d0","629b8d970c312fe6a7c8ea39455e881ae08339e6648afa7e13e3ddf7c32710e3","f9f80efd0794729d4b8c70d143a19192e959fb97d920fdc475f8c6e0f4e01a8f","2d9b62a13b17c07567426574ac304b51d3c742015b41d34ca109e6637bec2889","167482c31a85717a3f13a74f3c810182cb7bff3b2385a3a318f1cce3b202452d","238b20bd02420031a196a1a75287da685f5b2fd9a5c3f06cd242419dd528a207","622afde6c98207cfb043648ace587b2ec5d5cd1c2c37c42cc9167cb80c4258ef","f0b1a98e596c14356b25b1c9e6c7c5c79d1b1c0515f82c344db1a3c6662e5a76","01d6ff7fd033282f3add1e8874b6d4f414e44f15201f90fa42bce018a7e09773","b0d94f63dc74ab1d3bdbfd3ab17e636f51c8f8a2ef3bdd24280fbae28bd858d7","2c1eabb35e6fe65727ccfe6c1cf3d3438bc0d8af6bd8dd87b0d8f0243d3092f9","ea8c6ce2a531e91397ae797c28291168641ca5f33ffcaf7d627fe2e65a36dd64","8a60ed93d81f472e270e213c5da23bdfc2a87b6616031f4d397aced25f727217","defe8a3179ae2cd6450ccaf59e213c3922b16c64628e40feeaca43c8b4cdfc0e","64dcb61d505101fdfaf0de26676a7af9155cfff0406b0db92dbfbd1edd73b9e6","f7c1b2c8138d0bfcfa8dd75a4ec6468e8eb07ed226a05de057dcf4a9b6988c24","e952316a52a63a0d31a8251a90b61b73653c150bb4a74729cc1d1853fcc51290","42324ae49b347a0c3786cbbc137112fdaffa46e2c62fb5f4ea316e23a8041da8","d98c08cb061156883fc65d3ce894b294ae5f4fd56b7477c56fdbb57aefd213f1","ad2979f82cb32b7f92693b08da5eb056027a07c9ffe29ef69bbe0266f1fb7e26","d1fd3e3ef27702e000befb854e02a4650e52a4371fa0803d1c895946572cca93","5593440344062522e165ac4e22fb2c5b5b5e37c36f1c4eec28c4a45ab9cd69b4","7d3fdad815e3574a70ff4ccc45778fdfb0f935c685ab44bd9e7d0193207dc648","bda6b36d8a25b85779ff53e9149804ebe3e0b09c0094b5f4b41914f5cff15c54","e3a995d5ef286d36316cd3bc0c7aa5f8015c4799bab1ded702fa392892fd3559","e2edffb28e4b058115ff37c9eae06b5e9e346a04c4a69e134a6aa889d0461741","9e7a73194e54c8997d305f1fd55084b6c00345432549d5e4911a8d209dacaab6","1425dc46c00443dbfb14c0e3dffad339562bce1a756cf1a2c13435d9819dc832","19581a13361eb59eb33fb8f86d0cec58d068d102396f12ec25422872299af6b2","6e5f487a0ea2e10829d45b7a3888ade2e901ec4423a48c0ff5aee355bc70d5aa","5764e607c41990f74103fc9b49793366c3f0c94c6451b27c6cba47d864b238b0","9cb81ed0e172fc08a1e2b5064471d243b1eadd6a608732330a98b3abc1c09608","3fd3eaed39db12e95a43cdae262d304ea9e50aeb1423453350fd5511a33cc7d3","cbf797eac91e76a70272787efc3eb972278d3a91580d03c6bd22dea1245a55a0","a7114eb40f84278eacbd3b67a10f28bde8f139e4b5c9e7be634f32d6be79a0f7","dda4e6be50a8912eb66ad1f12e382f4e92d8ea0101bd350dd00d47db03924b54","d13e95194a4e39d255971136c025679c16c5f72cbfdc4c9d49075c7f9129b68f","a169ea6f6eb49b7ac0212d3070f4379d7433ac098ed46b6d2867ae24839cd79a","cc5970c174f4d5473201768c5ed267c4052efec308b1e5537132c2525bf6e3cd","b8396dc07381e5232e64b362080bb89170799df874a057b77305d33157a0f05a","7e0736c57a0a0fe112725146a32f78c69765bbe397a0f5b5877fd12b8f60a203","213376670843aa2398aaaf57967b47ac967d9869e161df41a0dd6e4e21489119","40d7b0296975a9556f7957fb4222f99a38127c74fa2bb6a17c1cd31a37887357","e8f9d744212a82e079d072347fc3b48e66c1df6a7b3e33b6ac0138d39cfd1d82","04535f6cffc32f1b2f8a464a2df97a67539435f095f3592add6b652f939421c9","8ccfd8867eb08b17c7fe3a75c251f014d583defe37ee21d592a53badb400724b","b73d36d9e0c4951bd4a60f9eb8582de18ab1f1f34086c701cf210695eba24111","0eaa960ef12452dbcdf65c8eac7c911faef8f459ed39a99d2ab34b9015aecca3","c277f3132ace38a724909dcdf7b878f5b8880879ed680fc2d242b4796ad0a555","72c4a46226a3d7d6fa883cac212f2a346c9052de6cd3a895988afa2e81698ea6","314af91ec010e81f89207256064c68871798d2f979a632d227a4e9e2379b8f75","c1c5a951894ba0de853755f53a860454eeb12e4550e44faced1702ec48b7032b","f60c1fb7f1ca4a215054c0ea9295fc05198ef130e60d388bd13f0b6d6f28aecb","c8e4a090dd30aa3cd8a35910bfc1b055ed8d3dc523b60890b3ccefb4dbed84bf","28fa33a0d694f3f85b2bc1a647335e64d8766b3954f739b650d12e762ed5804a","c361c3d85a097d0b6648da8bd6e19a2ddab396c31f4313de7d23ab9851d53af1","1761d398c323f9bcacb4d40e685f0fd541d70d47f430aab96eae37eb3c4e2498","cf341a2e7298fd192c45dcdde6de4d29335d6f16c95c0fa138d751658056f0d3","984e7a6d56374faa0e78be62eb0ab28aa93408e4d6421a5c53fe224739143e96","854af8bfa9824a288c9bfe060386979184d9855583c3a207246fb49bef2d46ba","cd167765f0c850f8063802b7aae835473a1a4d379dbc087e1e5f42f479277b7c","73b7c60b3a5af8a2a558abf8ad387a8c97b88ca074798b7e0e3c26a884388279","c9cbec71f5c62173b909e07a5ed5d65c4867eb5a1965a6076b94d1714c1d0ebf","8139cef526b26e7970b2d1c1fab0e6f3570bbc39ac82f33488828eea11741b2e","1d79cc92129aac5d45f1841a6f4eb697e6b30a5306cb51e398636e39694ebc2e","eb28b0b3095f90805c23a886b63f80f1f4a249e2f476061dc3358e83c40f2d52","d28d219b1b02a558eeddb203edb985c484b79e29336ff114c36cb3b8f0b6a235","d93424251be6a1179ccd06011da456f2236fa3c6ef30cdb544508930afc12108","3980d7830a35679bb6930a3b62e6cbbd038cd65933a655c80c76d42c5072d74d","1d15c6610a7821cbc312e84c01135684e7a4a8028ee47027b42e538b3d488d2f","f9feee5e5d29febebd91d5299995dbb76fa8290ef4d7e59fd85073f5e05a49cf","c542cfcefc011022b945cad74e31c1dd521bf580014b211afd90797c67f78e64","a9c3b43c19597965e04b2c3a2d3c2cc0421126fc91616cd75521c864b47a8e36","64672214e922297f8a9638327f0086f50a05b47cac3dbd71e440091c7bc42bbb","af06cb1420eba0403860ccfa5947c872575e306846ef5bf31e52ceddb6bc7a15","ded8bf62ba392e6740ecef57b86df7ecb404fb36f115e6ec3a6f922af36e9cad","8d7440deb880db3e82b88490886d7b69deb02e44c47baa2762a39b2092ddf869","d071c5bdfba35e2a241ebbe4d5aca46397e73a22da5cd34b2040e68e9b1f0fe3","71e7203d1e31360a200dc8cf4b5e41bba0fa2b6d4e6507cd8a9168a3901c62ac","af892137afa521fc56341fa45710c0c9acb44248764422ec98b8eb42ee442838","a1b0607cd211035cd9a317622160735178d90469d0cd76b8bf22e6a867559806","0afe7205c09ca9e2392179baeccd3218940b6bc25d5896512c53e65e04cb8f5b","6525bf43eb7f48aba2553d987338f99e0fe53f832b543e5813b51641c076cba3","c2af70187a9d59f129658374b13cb49e0e443627fb0c20eb45c5092b8117c680","87c2bd2e129506a956ad14d96de4dbef46fcd552e36347bb76f1367cfe0b5796","5def8fad9c90fa049bb881acb8ea0d3c606d04f9af57ea3d28ca6f689088fa56","edb860c3dd028ed101bd6b6857f195e9d766576bedba59a4c59d966b66e3dbab","a502a8e832091a522cb10a20bdfd52d0238ea1582ec9aabe8761ac6be0eac8a2","0ce4bcfab3fa4469f9dd2c5ad38a38fe6428246995b16a89cdb0b2bfa6a340a4","a21524bcc96e9bab6c661e183cfbefaedfb45f0e88db86c2fbfaf744d9e727fe","5487b97cfa28b26b4a9ef0770f872bdbebd4c46124858de00f242c3eed7519f4","c2869c4f2f79fd2d03278a68ce7c061a5a8f4aed59efb655e25fe502e3e471d5","b8fe42dbf4b0efba2eb4dbfb2b95a3712676717ff8469767dc439e75d0c1a3b6","8485b6da53ec35637d072e516631d25dae53984500de70a6989058f24354666f","ebe80346928736532e4a822154eb77f57ef3389dbe2b3ba4e571366a15448ef2","83306c97a4643d78420f082547ea0d488a0d134c922c8e65fc0b4f08ef66d92b","f672c876c1a04a223cf2023b3d91e8a52bb1544c576b81bf64a8fec82be9969c","98a9cc18f661d28e6bd31c436e1984f3980f35e0f0aa9cf795c54f8ccb667ffe","c76b0c5727302341d0bdfa2cc2cee4b19ff185b554edb6e8543f0661d8487116","dccd26a5c85325a011aff40f401e0892bd0688d44132ba79e803c67e68fffea5","f5ef066942e4f0bd98200aa6a6694b831e73200c9b3ade77ad0aa2409e8fe1b1","b9e99cd94f4166a245f5158f7286c05406e2a4c694619bceb7a4f3519d1d768e","5568d7c32e5cf5f35e092649f4e5e168c3114c800b1d7545b7ae5e0415704802","f3ccc22c2ede3dad04372a5b434232ed6082478792f78e04eb2edd6bed1e94dc","b146a3095f9a38b4f22d83879632b2d972bf45fd70b789097839f396c7bc2fee","5d0b50bdec633a334493fdb30dc93bef3be71535eee8a883ad9511fc36c626bc","e4a9c9f9680bb9226ec16aee63c20719651a3e20943359bbf14361ca2ace7182","bbf12814571af6f9f2e6572155a8aadb5fe345bab69cc5f37585dba368d99181","ff850cf35ad82873ca73198d172ead12f8704820e2e0399527e24224da4a5864","fd7bbea1583e8817696c260d1caf4ff1cfba5299d4b3dd47a7e748821ade7817","0a08d66930b314d5955ceef61faad866dcc2d271b43363621eb7bf2d3d1ab99d","2812ffd97913ff7c4c12d8e387c81976fb581ccc78aa440efb662c4281ff6590","a724edd1c65c21c1f166b4322f633111aceefa90806299c4af827c206195aec7","8f8af5356fe332dce2d85a3b597be83f5169f6efaebf82ef39418209b13330be","acd37eb01975d35f5c5f9a18d41d8871831ee0320c4e0aa9e0cfd873f29c6123","a7e9495cefe0134a61a94b73e3652bd20b7c555990cacfbde36f8faca0066e67","9f979baadc279cb9489804d923b59b78aa09e4b046567d5ffa3f5a5be608bd96","09f4eec1900124ccc8ee02f70ffee2dd9a6d68aec9624d5076c85af14392f52b","a15e64dd8f7a9b0aa2cdaac994ab64fe6e1805fa6e57fea21014b819c86cccad","585e3971c58a8e2d976b6a728a46a6df207707e60152cea6ba184f5f0a5a15ea","49e0522ad7a6db53cf2094b5867f50a2444a8dd79dad93769bd194ce9a0bd5af","56284627943e856df1fb18b0e62a99b2fd8ef0c748af7f130fe79118455c84b1","2b1792b90db874cdea9dc68629f1347dc4bbad3565dc1348a5ed1666f007ea4b","39afa915ceb7daccc694ee495970e8076cc5d089f8ba61dbbf035e7168e5e3d0","0ad5b4210a6a6bfb8dc2ab2ab2147274d956bd523f65c0f7ada6e17a554c551c","e53fbbabdc7ecd942e6d2773400cfe3f54f1c4a7e2e7b249e9d7c88b4a1a06f1","abef510d1322b541164612dc72f6a9befd08bb5a348da70a3de4a76d8c59a24b","a79a0ee179275e1f1b31e42aaa6f3c9c91f0b6dc38da9577b726faec94c636a9","4be291a8409ee35fc524dd083e3d0785eba74a084335b71081dd906ade83ea8f","0924b0b955e11e834563b021009dcddf6c164215e8394d55f3740f44aac73307","4fe80f12b1d5189384a219095c2eabadbb389c2d3703aae7c5376dbaa56061df","ad70fdf3826676b87e49c859035690311e6e1f27fc58c76ebfd5c714f7cee2e6","edd2bf117f61517d22264e2204925df0f422315f5df9be844feebb3aab4876f0","b2a5387ffc09137f8349da15fe2871477b5f2f47e6ad584a5a7cf7c8bd8f13fe","a5e0ea4f577abccb66b40be940cf14872d4f65ea24f913aa1b055dc930c6db44","a79c00254f4c0545fca39bdbec7ad07f29e51a08ca86c38df44862da2d423783","c73dd36e515bd8243f2ebccc89182e9bac47bde668d98e44af6a41b68fd62bc0","f7163a5d37d21f636f6a5cd1c064ce95fada21917859a64b6cc49a8b6fd5c1a8",{"version":"d49f47fa929066b5c6e4ef819e3ea1ba030ef1ab9f1b094a7b8c91f0502d4fa3","signature":"3732c3d57ffa801dce6d8ea7bc0ed09812402a3e3dd6ed17bb479c02173627c3"},{"version":"29fe90be00d60e4bf915c582954763783a7ecac7007ae160506eb8c701ea4c8f","signature":"486f503611f0d9533ff773fd157f289f31e8b5c10a9d13e051378b9375927c74"},{"version":"92acbe5d5758024da1324d7b5fb0786346bbc6d8cf8f4a47100bd2625cf5b07c","signature":"5b345ed0ad436c0f92745ee165e22b17e4e4ff158b9306300ddd2781670fa2e5"}],"root":[[342,344]],"options":{"allowJs":false,"composite":true,"declaration":true,"declarationDir":"./dist","declarationMap":true,"esModuleInterop":true,"module":7,"noUncheckedIndexedAccess":true,"outDir":"./dist","rootDir":"./src","skipLibCheck":true,"sourceMap":true,"strict":true,"target":9},"fileIdsList":[[290],[292],[291],[291,292,293,309,311,313,315,317,319,325,327,331,332,333,337,338,339],[217,290],[290,307],[306],[307,308,310],[307,308,309],[336],[119,158,290,309,313],[312,314],[119,158,290,311],[290,309,327,328],[268,290,309,329],[330],[268,290,311,317,319,320,327,329],[316,318],[290,316,317],[290,309],[325],[322],[320,323,324],[309,320],[309],[321,326],[321,325],[119,158,217,291],[159,170,172],[164,167,186],[163,167,171],[163,167,174],[160,165,169,173,174],[163,164,165,166],[171,172,173],[169,170,172,180],[170],[160,164,169],[161,169,171,172,174,175,181],[161,171,172,175,181,195,197],[161,162,163,171,172,175],[161,162,171,172,175],[161,171,172,175,181],[161,171,172,175,181,195,196],[159,160,161,162,163,164,165,167,169,170,171,172,173,174,175,181,182,183,184,185,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204],[169,172],[164,169,172,174],[161,168,171,172,175,180],[169,171,175],[160],[159,169,170,172,173,180],[163,171],[161,170],[164,167,169,172],[160,169,171,172,173,175,176,177,178,179],[167],[160,161,169,172,176,177],[169,171,172],[180],[172],[160,165,169,173],[220,239],[218,220],[218,220,251],[220,221,222],[220,222,239],[220],[222,251,252,253,254,255,256,257,258,259],[220,221,222,239],[220,222],[220,221,239],[218,219],[218,220,224,239],[220,226,234,239],[220,221,239,245],[220,221,235,236,239,240,241,242,243,244,245,246,247,248,249],[219,220,224,239],[219,224,225,230,231,232,233],[219,220,223,239],[220,224,239],[220,221,222,225,238],[226,227,228,229,237],[220,235,236,239],[222,239],[205,208],[205,207],[205],[205,206],[205,207,209,210],[205,207,210,211],[205,206,207,208,209,210,211,212,213,214,215,216],[271],[276],[270,271,276],[271,274,276,280,286],[261],[250,268,270,273],[250,261,263,265,266,267,269,274,275,276,277,278,279,280,281,282,283,284,285,287,288,289],[263,267,274,275,280,281,282,283],[250,260,262,265],[250,260],[250,260,261,265,266,267,271,272],[250,260,262],[250,260,261,262,263,264,265,266],[250,260,261,262,264],[267,268,269,280,281,283,284],[272],[265,274,277,279],[261,265,270,280],[266],[266,274,278],[266,274,278,280,286],[65],[106],[107,112,142],[108,113,119,120,127,139,150],[108,109,119,127],[110,151],[111,112,120,128],[112,139,147],[113,115,119,127],[106,114],[115,116],[119],[117,119],[106,119],[119,120,121,139,150],[119,120,121,134,139,142],[104,155],[104,115,119,122,127,139,150],[119,120,122,123,127,139,147,150],[122,124,139,147,150],[65,66,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157],[119,125],[126,150,155],[115,119,127,139],[128],[129],[106,130],[65,66,106,107,108,109,110,111,112,113,114,115,116,117,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156],[132],[133],[119,134,135],[134,136,151,153],[107,119,139,140,141,142],[107,139,141],[139,140],[142],[143],[65,139],[119,145,146],[145,146],[112,127,139,147],[148],[127,149],[107,122,133,150],[112,151],[139,152],[126,153],[154],[107,112,119,121,130,139,150,153,155],[139,156],[119,122,124,139,147,150,156,158],[122,158],[119,155,334,335],[119,158],[76,80,150],[76,139,150],[71],[73,76,147,150],[127,147],[158],[71,158],[73,76,127,150],[68,69,72,75,107,119,139,150],[76,83],[68,74],[76,97,98],[72,76,107,142,150,158],[107,158],[97,107,158],[70,71,158],[76],[70,71,72,73,74,75,76,77,78,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,98,99,100,101,102,103],[76,91],[76,83,84],[74,76,84,85],[75],[68,71,76],[76,80,84,85],[80],[74,76,79,150],[68,73,76,83],[107,139],[71,76,97,107,155,158],[305],[294,295,305],[296,297],[294,295,296,298,299,303],[295,296],[304],[296],[294,295,296,299,300,301,302],[343],[112,150,290,320,340,341,342],[150,340,342]],"referencedMap":[[339,1],[293,2],[338,3],[340,4],[291,5],[308,6],[307,7],[311,8],[310,9],[337,10],[314,11],[315,12],[312,13],[329,14],[328,15],[331,16],[330,17],[319,18],[318,19],[316,20],[322,21],[323,22],[325,23],[324,24],[320,25],[313,1],[327,26],[326,27],[321,20],[309,1],[317,20],[292,28],[171,29],[187,30],[190,31],[192,32],[191,33],[167,34],[189,35],[173,36],[161,37],[170,38],[196,39],[198,40],[194,41],[163,42],[199,43],[200,43],[201,43],[195,43],[202,43],[203,43],[197,44],[204,43],[205,45],[188,46],[175,47],[169,48],[172,49],[177,50],[179,51],[166,52],[176,53],[168,54],[180,55],[186,56],[178,57],[185,58],[162,59],[181,59],[165,46],[193,60],[174,61],[242,62],[251,63],[252,64],[253,65],[254,66],[255,67],[260,68],[256,69],[259,67],[257,70],[222,71],[241,62],[220,72],[243,62],[248,73],[244,62],[236,74],[247,75],[250,76],[240,62],[230,67],[225,77],[234,78],[232,67],[224,79],[233,80],[219,67],[223,67],[245,63],[235,74],[246,75],[239,81],[238,82],[237,83],[229,67],[218,84],[209,85],[208,86],[210,86],[211,86],[206,87],[207,88],[212,89],[213,86],[214,86],[215,90],[217,91],[276,92],[288,93],[277,94],[287,95],[269,96],[274,97],[290,98],[284,99],[271,100],[261,101],[273,102],[262,101],[263,103],[267,104],[272,101],[264,101],[265,105],[266,100],[285,106],[275,107],[280,108],[281,109],[278,110],[279,111],[289,112],[65,113],[66,113],[106,114],[107,115],[108,116],[109,117],[110,118],[111,119],[112,120],[113,121],[114,122],[115,123],[116,123],[118,124],[117,125],[119,126],[120,127],[121,128],[105,129],[122,130],[123,131],[124,132],[158,133],[125,134],[126,135],[127,136],[128,137],[129,138],[130,139],[131,140],[132,141],[133,142],[134,143],[135,143],[136,144],[139,145],[141,146],[140,147],[142,148],[143,149],[144,150],[145,151],[146,152],[147,153],[148,154],[149,155],[150,156],[151,157],[152,158],[153,159],[154,160],[155,161],[156,162],[341,163],[334,164],[336,165],[335,166],[83,167],[93,168],[82,167],[103,169],[74,170],[73,171],[102,172],[96,173],[101,174],[76,175],[90,176],[75,177],[99,178],[71,179],[70,180],[100,181],[72,182],[77,183],[81,183],[104,184],[94,185],[85,186],[86,187],[88,188],[84,189],[87,190],[97,172],[79,191],[80,192],[89,193],[69,194],[92,185],[91,183],[98,195],[306,196],[296,197],[298,198],[304,199],[299,200],[302,196],[305,201],[297,202],[303,203],[344,204],[343,205]],"exportedModulesMap":[[339,1],[293,2],[338,3],[340,4],[291,5],[308,6],[307,7],[311,8],[310,9],[337,10],[314,11],[315,12],[312,13],[329,14],[328,15],[331,16],[330,17],[319,18],[318,19],[316,20],[322,21],[323,22],[325,23],[324,24],[320,25],[313,1],[327,26],[326,27],[321,20],[309,1],[317,20],[292,28],[171,29],[187,30],[190,31],[192,32],[191,33],[167,34],[189,35],[173,36],[161,37],[170,38],[196,39],[198,40],[194,41],[163,42],[199,43],[200,43],[201,43],[195,43],[202,43],[203,43],[197,44],[204,43],[205,45],[188,46],[175,47],[169,48],[172,49],[177,50],[179,51],[166,52],[176,53],[168,54],[180,55],[186,56],[178,57],[185,58],[162,59],[181,59],[165,46],[193,60],[174,61],[242,62],[251,63],[252,64],[253,65],[254,66],[255,67],[260,68],[256,69],[259,67],[257,70],[222,71],[241,62],[220,72],[243,62],[248,73],[244,62],[236,74],[247,75],[250,76],[240,62],[230,67],[225,77],[234,78],[232,67],[224,79],[233,80],[219,67],[223,67],[245,63],[235,74],[246,75],[239,81],[238,82],[237,83],[229,67],[218,84],[209,85],[208,86],[210,86],[211,86],[206,87],[207,88],[212,89],[213,86],[214,86],[215,90],[217,91],[276,92],[288,93],[277,94],[287,95],[269,96],[274,97],[290,98],[284,99],[271,100],[261,101],[273,102],[262,101],[263,103],[267,104],[272,101],[264,101],[265,105],[266,100],[285,106],[275,107],[280,108],[281,109],[278,110],[279,111],[289,112],[65,113],[66,113],[106,114],[107,115],[108,116],[109,117],[110,118],[111,119],[112,120],[113,121],[114,122],[115,123],[116,123],[118,124],[117,125],[119,126],[120,127],[121,128],[105,129],[122,130],[123,131],[124,132],[158,133],[125,134],[126,135],[127,136],[128,137],[129,138],[130,139],[131,140],[132,141],[133,142],[134,143],[135,143],[136,144],[139,145],[141,146],[140,147],[142,148],[143,149],[144,150],[145,151],[146,152],[147,153],[148,154],[149,155],[150,156],[151,157],[152,158],[153,159],[154,160],[155,161],[156,162],[341,163],[334,164],[336,165],[335,166],[83,167],[93,168],[82,167],[103,169],[74,170],[73,171],[102,172],[96,173],[101,174],[76,175],[90,176],[75,177],[99,178],[71,179],[70,180],[100,181],[72,182],[77,183],[81,183],[104,184],[94,185],[85,186],[86,187],[88,188],[84,189],[87,190],[97,172],[79,191],[80,192],[89,193],[69,194],[92,185],[91,183],[98,195],[306,196],[296,197],[298,198],[304,199],[299,200],[302,196],[305,201],[297,202],[303,203],[344,204],[343,206]],"semanticDiagnosticsPerFile":[339,293,338,340,291,308,307,311,310,337,314,315,312,329,328,331,330,332,319,318,316,322,323,325,324,320,313,327,326,321,309,317,333,292,159,171,187,190,192,191,167,160,189,173,161,170,196,198,194,163,199,200,201,195,202,203,197,204,205,188,175,169,172,177,179,166,176,168,180,186,178,184,185,182,183,162,181,164,165,193,174,242,251,252,253,254,255,260,256,259,257,258,222,241,220,243,248,244,236,247,250,240,221,249,230,225,234,231,232,224,233,219,223,245,235,246,239,227,226,238,237,228,229,218,286,209,208,210,211,206,207,212,213,214,215,216,217,276,288,277,287,269,274,290,270,284,271,261,273,262,263,267,272,264,265,266,285,275,280,281,282,283,278,279,289,268,65,66,106,107,108,109,110,111,112,113,114,115,116,118,117,119,120,121,105,157,122,123,124,158,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,141,140,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,341,67,334,336,335,62,63,12,10,11,16,15,2,17,18,19,20,21,22,23,24,3,25,4,26,30,27,28,29,31,32,33,5,34,35,36,37,6,41,38,39,40,42,7,43,48,49,44,45,46,47,8,53,50,51,52,54,9,55,64,56,57,60,58,59,1,61,14,13,83,93,82,103,74,73,102,96,101,76,90,75,99,71,70,100,72,77,78,81,68,104,94,85,86,88,84,87,97,79,80,89,69,92,91,95,98,306,296,298,304,300,301,299,302,294,295,305,297,303,344,342,343],"latestChangedDtsFile":"./dist/index.d.ts"},"version":"5.4.5"}