@livekit/agents 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (114) hide show
  1. package/.turbo/turbo-build.log +4 -0
  2. package/api-extractor.json +20 -0
  3. package/dist/cli.d.ts +3 -0
  4. package/dist/cli.d.ts.map +1 -0
  5. package/dist/cli.js +58 -0
  6. package/dist/cli.js.map +1 -0
  7. package/dist/generator.d.ts +12 -0
  8. package/dist/generator.d.ts.map +1 -0
  9. package/dist/generator.js +8 -0
  10. package/dist/generator.js.map +1 -0
  11. package/dist/http_server.d.ts +11 -0
  12. package/dist/http_server.d.ts.map +1 -0
  13. package/dist/http_server.js +45 -0
  14. package/dist/http_server.js.map +1 -0
  15. package/dist/index.d.ts +14 -0
  16. package/dist/index.d.ts.map +1 -0
  17. package/dist/index.js +17 -0
  18. package/dist/index.js.map +1 -0
  19. package/dist/ipc/job_main.d.ts +5 -0
  20. package/dist/ipc/job_main.d.ts.map +1 -0
  21. package/dist/ipc/job_main.js +77 -0
  22. package/dist/ipc/job_main.js.map +1 -0
  23. package/dist/ipc/job_process.d.ts +22 -0
  24. package/dist/ipc/job_process.d.ts.map +1 -0
  25. package/dist/ipc/job_process.js +73 -0
  26. package/dist/ipc/job_process.js.map +1 -0
  27. package/dist/ipc/protocol.d.ts +40 -0
  28. package/dist/ipc/protocol.d.ts.map +1 -0
  29. package/dist/ipc/protocol.js +14 -0
  30. package/dist/ipc/protocol.js.map +1 -0
  31. package/dist/job_context.d.ts +16 -0
  32. package/dist/job_context.d.ts.map +1 -0
  33. package/dist/job_context.js +31 -0
  34. package/dist/job_context.js.map +1 -0
  35. package/dist/job_request.d.ts +42 -0
  36. package/dist/job_request.d.ts.map +1 -0
  37. package/dist/job_request.js +79 -0
  38. package/dist/job_request.js.map +1 -0
  39. package/dist/log.d.ts +2 -0
  40. package/dist/log.d.ts.map +1 -0
  41. package/dist/log.js +13 -0
  42. package/dist/log.js.map +1 -0
  43. package/dist/plugin.d.ts +10 -0
  44. package/dist/plugin.d.ts.map +1 -0
  45. package/dist/plugin.js +22 -0
  46. package/dist/plugin.js.map +1 -0
  47. package/dist/stt/index.d.ts +3 -0
  48. package/dist/stt/index.d.ts.map +1 -0
  49. package/dist/stt/index.js +6 -0
  50. package/dist/stt/index.js.map +1 -0
  51. package/dist/stt/stream_adapter.d.ts +28 -0
  52. package/dist/stt/stream_adapter.d.ts.map +1 -0
  53. package/dist/stt/stream_adapter.js +82 -0
  54. package/dist/stt/stream_adapter.js.map +1 -0
  55. package/dist/stt/stt.d.ts +34 -0
  56. package/dist/stt/stt.d.ts.map +1 -0
  57. package/dist/stt/stt.js +30 -0
  58. package/dist/stt/stt.js.map +1 -0
  59. package/dist/tokenize.d.ts +15 -0
  60. package/dist/tokenize.d.ts.map +1 -0
  61. package/dist/tokenize.js +12 -0
  62. package/dist/tokenize.js.map +1 -0
  63. package/dist/tts/index.d.ts +4 -0
  64. package/dist/tts/index.d.ts.map +1 -0
  65. package/dist/tts/index.js +7 -0
  66. package/dist/tts/index.js.map +1 -0
  67. package/dist/tts/stream_adapter.d.ts +26 -0
  68. package/dist/tts/stream_adapter.d.ts.map +1 -0
  69. package/dist/tts/stream_adapter.js +77 -0
  70. package/dist/tts/stream_adapter.js.map +1 -0
  71. package/dist/tts/tts.d.ts +37 -0
  72. package/dist/tts/tts.d.ts.map +1 -0
  73. package/dist/tts/tts.js +48 -0
  74. package/dist/tts/tts.js.map +1 -0
  75. package/dist/utils.d.ts +4 -0
  76. package/dist/utils.d.ts.map +1 -0
  77. package/dist/utils.js +29 -0
  78. package/dist/utils.js.map +1 -0
  79. package/dist/vad.d.ts +28 -0
  80. package/dist/vad.d.ts.map +1 -0
  81. package/dist/vad.js +14 -0
  82. package/dist/vad.js.map +1 -0
  83. package/dist/version.d.ts +2 -0
  84. package/dist/version.d.ts.map +1 -0
  85. package/dist/version.js +5 -0
  86. package/dist/version.js.map +1 -0
  87. package/dist/worker.d.ts +84 -0
  88. package/dist/worker.d.ts.map +1 -0
  89. package/dist/worker.js +296 -0
  90. package/dist/worker.js.map +1 -0
  91. package/package.json +31 -0
  92. package/src/cli.ts +79 -0
  93. package/src/generator.ts +18 -0
  94. package/src/http_server.ts +47 -0
  95. package/src/index.ts +18 -0
  96. package/src/ipc/job_main.ts +83 -0
  97. package/src/ipc/job_process.ts +96 -0
  98. package/src/ipc/protocol.ts +51 -0
  99. package/src/job_context.ts +49 -0
  100. package/src/job_request.ts +118 -0
  101. package/src/log.ts +13 -0
  102. package/src/plugin.ts +28 -0
  103. package/src/stt/index.ts +6 -0
  104. package/src/stt/stream_adapter.ts +104 -0
  105. package/src/stt/stt.ts +58 -0
  106. package/src/tokenize.ts +22 -0
  107. package/src/tts/index.ts +23 -0
  108. package/src/tts/stream_adapter.ts +92 -0
  109. package/src/tts/tts.ts +78 -0
  110. package/src/utils.ts +37 -0
  111. package/src/vad.ts +42 -0
  112. package/src/version.ts +5 -0
  113. package/src/worker.ts +384 -0
  114. package/tsconfig.json +10 -0
@@ -0,0 +1,4 @@
1
+
2
+ > @livekit/agents@0.1.0 build /home/runner/work/agents-js/agents-js/agents
3
+ > tsc
4
+
@@ -0,0 +1,20 @@
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/dist/cli.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ import { type WorkerOptions } from './worker.js';
2
+ export declare const runApp: (opts: WorkerOptions) => void;
3
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAOA,OAAO,EAAU,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AA4BzD,eAAO,MAAM,MAAM,SAAU,aAAa,SA2CzC,CAAC"}
package/dist/cli.js ADDED
@@ -0,0 +1,58 @@
1
+ // SPDX-FileCopyrightText: 2024 LiveKit, Inc.
2
+ //
3
+ // SPDX-License-Identifier: Apache-2.0
4
+ import { Command, Option } from 'commander';
5
+ import { log } from './log.js';
6
+ import { version } from './version.js';
7
+ import { Worker } from './worker.js';
8
+ const runWorker = async (args) => {
9
+ log.level = args.logLevel;
10
+ const worker = new Worker(args.opts);
11
+ process.on('SIGINT', async () => {
12
+ await worker.close();
13
+ log.info('worker closed');
14
+ process.exit(130); // SIGINT exit code
15
+ });
16
+ try {
17
+ await worker.run();
18
+ }
19
+ catch {
20
+ log.fatal('worker failed');
21
+ process.exit(1);
22
+ }
23
+ };
24
+ export const runApp = (opts) => {
25
+ const program = new Command()
26
+ .name('agents')
27
+ .description('LiveKit Agents CLI')
28
+ .version(version)
29
+ .addOption(new Option('--log-level <level>', 'Set the logging level')
30
+ .choices(['trace', 'debug', 'info', 'warn', 'error', 'fatal'])
31
+ .default('trace'))
32
+ .addOption(new Option('--url <string>', 'LiveKit server or Cloud project websocket URL')
33
+ .makeOptionMandatory(true)
34
+ .env('LIVEKIT_URL'))
35
+ .addOption(new Option('--api-key <string>', "LiveKit server or Cloud project's API key")
36
+ .makeOptionMandatory(true)
37
+ .env('LIVEKIT_API_KEY'))
38
+ .addOption(new Option('--api-secret <string>', "LiveKit server or Cloud project's API secret")
39
+ .makeOptionMandatory(true)
40
+ .env('LIVEKIT_API_SECRET'));
41
+ program
42
+ .command('start')
43
+ .description('Start the worker in production mode')
44
+ .action(() => {
45
+ const options = program.optsWithGlobals();
46
+ opts.wsURL = options.url || opts.wsURL;
47
+ opts.apiKey = options.apiKey || opts.apiKey;
48
+ opts.apiSecret = options.apiSecret || opts.apiSecret;
49
+ runWorker({
50
+ opts,
51
+ production: true,
52
+ watch: false,
53
+ logLevel: options.logLevel,
54
+ });
55
+ });
56
+ program.parse();
57
+ };
58
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,EAAE;AACF,sCAAsC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAE5C,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,MAAM,EAAsB,MAAM,aAAa,CAAC;AAUzD,MAAM,SAAS,GAAG,KAAK,EAAE,IAAa,EAAE,EAAE;IACxC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC;IAC1B,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAErC,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;QAC9B,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QACrB,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC1B,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,mBAAmB;IACxC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,GAAG,EAAE,CAAC;IACrB,CAAC;IAAC,MAAM,CAAC;QACP,GAAG,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;QAC3B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,IAAmB,EAAE,EAAE;IAC5C,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE;SAC1B,IAAI,CAAC,QAAQ,CAAC;SACd,WAAW,CAAC,oBAAoB,CAAC;SACjC,OAAO,CAAC,OAAO,CAAC;SAChB,SAAS,CACR,IAAI,MAAM,CAAC,qBAAqB,EAAE,uBAAuB,CAAC;SACvD,OAAO,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;SAC7D,OAAO,CAAC,OAAO,CAAC,CACpB;SACA,SAAS,CACR,IAAI,MAAM,CAAC,gBAAgB,EAAE,+CAA+C,CAAC;SAC1E,mBAAmB,CAAC,IAAI,CAAC;SACzB,GAAG,CAAC,aAAa,CAAC,CACtB;SACA,SAAS,CACR,IAAI,MAAM,CAAC,oBAAoB,EAAE,2CAA2C,CAAC;SAC1E,mBAAmB,CAAC,IAAI,CAAC;SACzB,GAAG,CAAC,iBAAiB,CAAC,CAC1B;SACA,SAAS,CACR,IAAI,MAAM,CAAC,uBAAuB,EAAE,8CAA8C,CAAC;SAChF,mBAAmB,CAAC,IAAI,CAAC;SACzB,GAAG,CAAC,oBAAoB,CAAC,CAC7B,CAAC;IAEJ,OAAO;SACJ,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,qCAAqC,CAAC;SAClD,MAAM,CAAC,GAAG,EAAE;QACX,MAAM,OAAO,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;QAC1C,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC;QACvC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC;QAC5C,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC;QACrD,SAAS,CAAC;YACR,IAAI;YACJ,UAAU,EAAE,IAAI;YAChB,KAAK,EAAE,KAAK;YACZ,QAAQ,EAAE,OAAO,CAAC,QAAQ;SAC3B,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEL,OAAO,CAAC,KAAK,EAAE,CAAC;AAClB,CAAC,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { JobContext } from './job_context.js';
2
+ type entryFunction = (job: JobContext) => Promise<void>;
3
+ export interface Agent {
4
+ entry: entryFunction;
5
+ }
6
+ /**
7
+ * Helper to define an agent according to the required interface.
8
+ * @example `export default defineAgent(myAgent);`
9
+ */
10
+ export declare function defineAgent(entry: entryFunction): Agent;
11
+ export {};
12
+ //# sourceMappingURL=generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,KAAK,aAAa,GAAG,CAAC,GAAG,EAAE,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAExD,MAAM,WAAW,KAAK;IACpB,KAAK,EAAE,aAAa,CAAC;CACtB;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,aAAa,GAAG,KAAK,CAEvD"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Helper to define an agent according to the required interface.
3
+ * @example `export default defineAgent(myAgent);`
4
+ */
5
+ export function defineAgent(entry) {
6
+ return { entry };
7
+ }
8
+ //# sourceMappingURL=generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":"AAWA;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,KAAoB;IAC9C,OAAO,EAAE,KAAK,EAAE,CAAC;AACnB,CAAC"}
@@ -0,0 +1,11 @@
1
+ /// <reference types="node" resolution-mode="require"/>
2
+ import { type Server } from 'http';
3
+ export declare class HTTPServer {
4
+ host: string;
5
+ port: number;
6
+ app: Server;
7
+ constructor(host: string, port: number);
8
+ run(): Promise<void>;
9
+ close(): Promise<void>;
10
+ }
11
+ //# sourceMappingURL=http_server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http_server.d.ts","sourceRoot":"","sources":["../src/http_server.ts"],"names":[],"mappings":";AAGA,OAAO,EAAwB,KAAK,MAAM,EAAqC,MAAM,MAAM,CAAC;AAO5F,qBAAa,UAAU;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;gBAEA,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IAchC,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;IASpB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAQ7B"}
@@ -0,0 +1,45 @@
1
+ // SPDX-FileCopyrightText: 2024 LiveKit, Inc.
2
+ //
3
+ // SPDX-License-Identifier: Apache-2.0
4
+ import { createServer } from 'http';
5
+ const healthCheck = async (res) => {
6
+ res.writeHead(200);
7
+ res.end('OK');
8
+ };
9
+ export class HTTPServer {
10
+ host;
11
+ port;
12
+ app;
13
+ constructor(host, port) {
14
+ this.host = host;
15
+ this.port = port;
16
+ this.app = createServer((req, res) => {
17
+ if (req.url === '/') {
18
+ healthCheck(res);
19
+ }
20
+ else {
21
+ res.writeHead(404);
22
+ res.end('not found');
23
+ }
24
+ });
25
+ }
26
+ async run() {
27
+ return new Promise((resolve, reject) => {
28
+ this.app.listen(this.port, this.host, (err) => {
29
+ if (err)
30
+ reject(err);
31
+ resolve();
32
+ });
33
+ });
34
+ }
35
+ async close() {
36
+ return new Promise((resolve, reject) => {
37
+ this.app.close((err) => {
38
+ if (err)
39
+ reject(err);
40
+ resolve();
41
+ });
42
+ });
43
+ }
44
+ }
45
+ //# sourceMappingURL=http_server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http_server.js","sourceRoot":"","sources":["../src/http_server.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,EAAE;AACF,sCAAsC;AACtC,OAAO,EAA0D,YAAY,EAAE,MAAM,MAAM,CAAC;AAE5F,MAAM,WAAW,GAAG,KAAK,EAAE,GAAmB,EAAE,EAAE;IAChD,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IACnB,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,OAAO,UAAU;IACrB,IAAI,CAAS;IACb,IAAI,CAAS;IACb,GAAG,CAAS;IAEZ,YAAY,IAAY,EAAE,IAAY;QACpC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QAEjB,IAAI,CAAC,GAAG,GAAG,YAAY,CAAC,CAAC,GAAoB,EAAE,GAAmB,EAAE,EAAE;YACpE,IAAI,GAAG,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;gBACpB,WAAW,CAAC,GAAG,CAAC,CAAC;YACnB,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;gBACnB,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YACvB,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,GAAG;QACP,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,GAAW,EAAE,EAAE;gBACpD,IAAI,GAAG;oBAAE,MAAM,CAAC,GAAG,CAAC,CAAC;gBACrB,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,KAAK;QACT,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAW,EAAE,EAAE;gBAC7B,IAAI,GAAG;oBAAE,MAAM,CAAC,GAAG,CAAC,CAAC;gBACrB,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;CACF"}
@@ -0,0 +1,14 @@
1
+ import * as cli from './cli.js';
2
+ import * as stt from './stt/index.js';
3
+ import * as tts from './tts/index.js';
4
+ export * from './vad.js';
5
+ export * from './plugin.js';
6
+ export * from './version.js';
7
+ export * from './job_context.js';
8
+ export * from './job_request.js';
9
+ export * from './worker.js';
10
+ export * from './utils.js';
11
+ export * from './log.js';
12
+ export * from './generator.js';
13
+ export { cli, stt, tts };
14
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAChC,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAC;AACtC,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAC;AAEtC,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAE/B,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,17 @@
1
+ // SPDX-FileCopyrightText: 2024 LiveKit, Inc.
2
+ //
3
+ // SPDX-License-Identifier: Apache-2.0
4
+ import * as cli from './cli.js';
5
+ import * as stt from './stt/index.js';
6
+ import * as tts from './tts/index.js';
7
+ export * from './vad.js';
8
+ export * from './plugin.js';
9
+ export * from './version.js';
10
+ export * from './job_context.js';
11
+ export * from './job_request.js';
12
+ export * from './worker.js';
13
+ export * from './utils.js';
14
+ export * from './log.js';
15
+ export * from './generator.js';
16
+ export { cli, stt, tts };
17
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,EAAE;AACF,sCAAsC;AACtC,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAChC,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAC;AACtC,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAC;AAEtC,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAE/B,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC"}
@@ -0,0 +1,5 @@
1
+ /// <reference types="node" resolution-mode="require"/>
2
+ import { type ChildProcess } from 'child_process';
3
+ import { type JobMainArgs } from './protocol.js';
4
+ export declare const runJob: (args: JobMainArgs) => ChildProcess;
5
+ //# sourceMappingURL=job_main.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"job_main.d.ts","sourceRoot":"","sources":["../../src/ipc/job_main.ts"],"names":[],"mappings":";AAKA,OAAO,EAAE,KAAK,YAAY,EAAQ,MAAM,eAAe,CAAC;AAIxD,OAAO,EAAe,KAAK,WAAW,EAA2B,MAAM,eAAe,CAAC;AAEvF,eAAO,MAAM,MAAM,SAAU,WAAW,KAAG,YAE1C,CAAC"}
@@ -0,0 +1,77 @@
1
+ // SPDX-FileCopyrightText: 2024 LiveKit, Inc.
2
+ //
3
+ // SPDX-License-Identifier: Apache-2.0
4
+ import { ServerMessage } from '@livekit/protocol';
5
+ import { Room } from '@livekit/rtc-node';
6
+ import { fork } from 'child_process';
7
+ import { EventEmitter, once } from 'events';
8
+ import { JobContext } from '../job_context.js';
9
+ import { log } from '../log.js';
10
+ import { IPC_MESSAGE } from './protocol.js';
11
+ export const runJob = (args) => {
12
+ return fork(import.meta.filename, [args.raw, args.entry, args.fallbackURL]);
13
+ };
14
+ if (process.send) {
15
+ // process.argv:
16
+ // [0] `node'
17
+ // [1] import.meta.filename
18
+ // [2] proto.JobAssignment, serialized to JSON string
19
+ // [3] import.meta.filename of function containing entry file
20
+ // [4] fallback URL in case JobAssignment.url is empty
21
+ const msg = new ServerMessage();
22
+ msg.fromJsonString(process.argv[2]);
23
+ const args = msg.message.value;
24
+ const room = new Room();
25
+ const closeEvent = new EventEmitter();
26
+ let shuttingDown = false;
27
+ let closed = false;
28
+ process.on('message', (msg) => {
29
+ if (msg.type === IPC_MESSAGE.ShutdownRequest) {
30
+ shuttingDown = true;
31
+ closed = true;
32
+ closeEvent.emit('close');
33
+ }
34
+ else if (msg.type === IPC_MESSAGE.Ping) {
35
+ process.send({
36
+ type: IPC_MESSAGE.Pong,
37
+ lastTimestamp: msg.timestamp,
38
+ timestamp: Date.now(),
39
+ });
40
+ }
41
+ });
42
+ // don't do anything on C-c
43
+ process.on('SIGINT', () => { });
44
+ const conn = room.connect(args.url || process.argv[4], args.token);
45
+ const start = () => {
46
+ if (room.isConnected && !closed) {
47
+ process.send({ type: IPC_MESSAGE.StartJobResponse });
48
+ // here we import the file containing the exported entry function, and call it.
49
+ // the file must export default an Agent, usually using defineAgent().
50
+ import(process.argv[3]).then((agent) => {
51
+ agent.default.entry(new JobContext(closeEvent, args.job, room));
52
+ });
53
+ }
54
+ };
55
+ new Promise(() => {
56
+ conn
57
+ .then(() => {
58
+ if (!closed)
59
+ start();
60
+ })
61
+ .catch((err) => {
62
+ if (!closed)
63
+ process.send({ type: IPC_MESSAGE.StartJobResponse, err });
64
+ });
65
+ });
66
+ await once(closeEvent, 'close');
67
+ log.debug('disconnecting from room');
68
+ await room.disconnect();
69
+ if (shuttingDown) {
70
+ process.send({ type: IPC_MESSAGE.ShutdownResponse });
71
+ }
72
+ else {
73
+ process.send({ type: IPC_MESSAGE.UserExit });
74
+ }
75
+ process.exit();
76
+ }
77
+ //# sourceMappingURL=job_main.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"job_main.js","sourceRoot":"","sources":["../../src/ipc/job_main.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ /// <reference types="node" resolution-mode="require"/>
2
+ /// <reference types="node" resolution-mode="require"/>
3
+ import type { Job } from '@livekit/protocol';
4
+ import type { ChildProcess } from 'child_process';
5
+ import type { Logger } from 'pino';
6
+ import type { AcceptData } from '../job_request.js';
7
+ import { type JobMainArgs } from './protocol.js';
8
+ export declare class JobProcess {
9
+ #private;
10
+ args: JobMainArgs;
11
+ logger: Logger;
12
+ process?: ChildProcess;
13
+ startTimeout?: ReturnType<typeof setTimeout>;
14
+ pongTimeout?: ReturnType<typeof setTimeout>;
15
+ pingInterval?: ReturnType<typeof setInterval>;
16
+ constructor(job: Job, acceptData: AcceptData, raw: string, fallbackURL: string);
17
+ get job(): Job;
18
+ close(): Promise<void>;
19
+ clear(): Promise<void>;
20
+ run(): Promise<void>;
21
+ }
22
+ //# sourceMappingURL=job_process.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"job_process.d.ts","sourceRoot":"","sources":["../../src/ipc/job_process.ts"],"names":[],"mappings":";;AAGA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAElD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AACnC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EAEL,KAAK,WAAW,EAIjB,MAAM,eAAe,CAAC;AAOvB,qBAAa,UAAU;;IAErB,IAAI,EAAE,WAAW,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,YAAY,CAAC,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC;IAC7C,WAAW,CAAC,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC;IAC5C,YAAY,CAAC,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC;gBAElC,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;IAM9E,IAAI,GAAG,IAAI,GAAG,CAEb;IAEK,KAAK;IAQL,KAAK;IAML,GAAG;CAwCV"}
@@ -0,0 +1,73 @@
1
+ import { once } from 'events';
2
+ import { log } from '../log.js';
3
+ import { IPC_MESSAGE, } from './protocol.js';
4
+ const START_TIMEOUT = 90 * 1000;
5
+ const PING_INTERVAL = 5 * 1000;
6
+ const PING_TIMEOUT = 90 * 1000;
7
+ const HIGH_PING_THRESHOLD = 10;
8
+ export class JobProcess {
9
+ #job;
10
+ args;
11
+ logger;
12
+ process;
13
+ startTimeout;
14
+ pongTimeout;
15
+ pingInterval;
16
+ constructor(job, acceptData, raw, fallbackURL) {
17
+ this.#job = job;
18
+ this.args = { entry: acceptData.entry, raw, fallbackURL };
19
+ this.logger = log.child({ job_id: this.#job.id });
20
+ }
21
+ get job() {
22
+ return this.#job;
23
+ }
24
+ async close() {
25
+ this.logger.debug('closing job process');
26
+ await this.clear();
27
+ this.process.send({ type: IPC_MESSAGE.ShutdownRequest });
28
+ await once(this.process, 'disconnect');
29
+ this.logger.info('job process closed');
30
+ }
31
+ async clear() {
32
+ clearTimeout(this.startTimeout);
33
+ clearTimeout(this.pongTimeout);
34
+ clearInterval(this.pingInterval);
35
+ }
36
+ async run() {
37
+ let resp = undefined;
38
+ this.startTimeout = setTimeout(() => {
39
+ if (resp === undefined) {
40
+ this.logger.error('process start timed out, killing job');
41
+ this.process?.kill();
42
+ this.clear();
43
+ }
44
+ }, START_TIMEOUT);
45
+ this.pingInterval = setInterval(() => {
46
+ this.process?.send({ type: IPC_MESSAGE.Ping, timestamp: Date.now() });
47
+ }, PING_INTERVAL);
48
+ this.pongTimeout = setTimeout(() => {
49
+ this.logger.error('job ping timed out, killing job');
50
+ this.process?.kill();
51
+ this.clear();
52
+ }, PING_TIMEOUT);
53
+ this.process = await import('./job_main.js').then((main) => main.runJob(this.args));
54
+ this.process.on('message', (msg) => {
55
+ if (msg.type === IPC_MESSAGE.StartJobResponse) {
56
+ resp = msg;
57
+ }
58
+ else if (msg.type === IPC_MESSAGE.Pong) {
59
+ const delay = Date.now() - msg.timestamp;
60
+ if (delay > HIGH_PING_THRESHOLD) {
61
+ this.logger.warn(`job is unresponsive (${delay}ms delay)`);
62
+ }
63
+ this.pongTimeout?.refresh();
64
+ }
65
+ else if (msg.type === IPC_MESSAGE.UserExit || msg.type === IPC_MESSAGE.ShutdownResponse) {
66
+ this.logger.debug('job exiting');
67
+ this.clear();
68
+ }
69
+ });
70
+ await once(this.process, 'disconnect');
71
+ }
72
+ }
73
+ //# sourceMappingURL=job_process.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"job_process.js","sourceRoot":"","sources":["../../src/ipc/job_process.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ export type JobMainArgs = {
2
+ entry: string;
3
+ raw: string;
4
+ fallbackURL: string;
5
+ };
6
+ export interface Message {
7
+ type: IPC_MESSAGE;
8
+ }
9
+ export interface StartJobResponse extends Message {
10
+ type: IPC_MESSAGE.StartJobResponse;
11
+ err?: Error;
12
+ }
13
+ export interface Ping extends Message {
14
+ type: IPC_MESSAGE.Ping;
15
+ timestamp: number;
16
+ }
17
+ export interface Pong extends Message {
18
+ type: IPC_MESSAGE.Pong;
19
+ lastTimestamp: number;
20
+ timestamp: number;
21
+ }
22
+ export interface ShutdownRequest extends Message {
23
+ type: IPC_MESSAGE.ShutdownRequest;
24
+ }
25
+ export interface ShutdownResponse extends Message {
26
+ type: IPC_MESSAGE.ShutdownResponse;
27
+ }
28
+ export interface UserExit extends Message {
29
+ type: IPC_MESSAGE.UserExit;
30
+ }
31
+ export declare enum IPC_MESSAGE {
32
+ StartJobRequest = 0,
33
+ StartJobResponse = 1,
34
+ Ping = 2,
35
+ Pong = 3,
36
+ ShutdownRequest = 4,
37
+ ShutdownResponse = 5,
38
+ UserExit = 6
39
+ }
40
+ //# sourceMappingURL=protocol.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../src/ipc/protocol.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,WAAW,CAAC;CACnB;AAED,MAAM,WAAW,gBAAiB,SAAQ,OAAO;IAC/C,IAAI,EAAE,WAAW,CAAC,gBAAgB,CAAC;IACnC,GAAG,CAAC,EAAE,KAAK,CAAC;CACb;AAED,MAAM,WAAW,IAAK,SAAQ,OAAO;IACnC,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,IAAK,SAAQ,OAAO;IACnC,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,eAAgB,SAAQ,OAAO;IAC9C,IAAI,EAAE,WAAW,CAAC,eAAe,CAAC;CACnC;AAED,MAAM,WAAW,gBAAiB,SAAQ,OAAO;IAC/C,IAAI,EAAE,WAAW,CAAC,gBAAgB,CAAC;CACpC;AAED,MAAM,WAAW,QAAS,SAAQ,OAAO;IACvC,IAAI,EAAE,WAAW,CAAC,QAAQ,CAAC;CAC5B;AAED,oBAAY,WAAW;IACrB,eAAe,IAAA;IACf,gBAAgB,IAAA;IAChB,IAAI,IAAA;IACJ,IAAI,IAAA;IACJ,eAAe,IAAA;IACf,gBAAgB,IAAA;IAChB,QAAQ,IAAA;CACT"}
@@ -0,0 +1,14 @@
1
+ // SPDX-FileCopyrightText: 2024 LiveKit, Inc.
2
+ //
3
+ // SPDX-License-Identifier: Apache-2.0
4
+ export var IPC_MESSAGE;
5
+ (function (IPC_MESSAGE) {
6
+ IPC_MESSAGE[IPC_MESSAGE["StartJobRequest"] = 0] = "StartJobRequest";
7
+ IPC_MESSAGE[IPC_MESSAGE["StartJobResponse"] = 1] = "StartJobResponse";
8
+ IPC_MESSAGE[IPC_MESSAGE["Ping"] = 2] = "Ping";
9
+ IPC_MESSAGE[IPC_MESSAGE["Pong"] = 3] = "Pong";
10
+ IPC_MESSAGE[IPC_MESSAGE["ShutdownRequest"] = 4] = "ShutdownRequest";
11
+ IPC_MESSAGE[IPC_MESSAGE["ShutdownResponse"] = 5] = "ShutdownResponse";
12
+ IPC_MESSAGE[IPC_MESSAGE["UserExit"] = 6] = "UserExit";
13
+ })(IPC_MESSAGE || (IPC_MESSAGE = {}));
14
+ //# sourceMappingURL=protocol.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/ipc/protocol.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,EAAE;AACF,sCAAsC;AAwCtC,MAAM,CAAN,IAAY,WAQX;AARD,WAAY,WAAW;IACrB,mEAAe,CAAA;IACf,qEAAgB,CAAA;IAChB,6CAAI,CAAA;IACJ,6CAAI,CAAA;IACJ,mEAAe,CAAA;IACf,qEAAgB,CAAA;IAChB,qDAAQ,CAAA;AACV,CAAC,EARW,WAAW,KAAX,WAAW,QAQtB"}
@@ -0,0 +1,16 @@
1
+ /// <reference types="node" resolution-mode="require"/>
2
+ import type { Job } from '@livekit/protocol';
3
+ import type { LocalParticipant, RemoteParticipant, Room } from '@livekit/rtc-node';
4
+ import type { EventEmitter } from 'events';
5
+ export declare class JobContext {
6
+ #private;
7
+ tx: EventEmitter;
8
+ constructor(tx: EventEmitter, job: Job, room: Room, publisher?: RemoteParticipant | undefined);
9
+ get id(): string;
10
+ get job(): Job;
11
+ get room(): Room;
12
+ get publisher(): RemoteParticipant | undefined;
13
+ get agent(): LocalParticipant | undefined;
14
+ shutdown(): Promise<void>;
15
+ }
16
+ //# sourceMappingURL=job_context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"job_context.d.ts","sourceRoot":"","sources":["../src/job_context.ts"],"names":[],"mappings":";AAGA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACnF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAE3C,qBAAa,UAAU;;IAIrB,EAAE,EAAE,YAAY,CAAC;gBAGf,EAAE,EAAE,YAAY,EAChB,GAAG,EAAE,GAAG,EACR,IAAI,EAAE,IAAI,EACV,SAAS,GAAE,iBAAiB,GAAG,SAAqB;IAQtD,IAAI,EAAE,IAAI,MAAM,CAEf;IAED,IAAI,GAAG,IAAI,GAAG,CAEb;IAED,IAAI,IAAI,IAAI,IAAI,CAEf;IAED,IAAI,SAAS,IAAI,iBAAiB,GAAG,SAAS,CAE7C;IAED,IAAI,KAAK,IAAI,gBAAgB,GAAG,SAAS,CAExC;IAEK,QAAQ;CAGf"}
@@ -0,0 +1,31 @@
1
+ export class JobContext {
2
+ #job;
3
+ #room;
4
+ #publisher;
5
+ tx;
6
+ constructor(tx, job, room, publisher = undefined) {
7
+ this.#job = job;
8
+ this.#room = room;
9
+ this.#publisher = publisher;
10
+ this.tx = tx;
11
+ }
12
+ get id() {
13
+ return this.#job.id;
14
+ }
15
+ get job() {
16
+ return this.#job;
17
+ }
18
+ get room() {
19
+ return this.#room;
20
+ }
21
+ get publisher() {
22
+ return this.#publisher;
23
+ }
24
+ get agent() {
25
+ return this.#room.localParticipant;
26
+ }
27
+ async shutdown() {
28
+ this.tx.emit('close');
29
+ }
30
+ }
31
+ //# sourceMappingURL=job_context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"job_context.js","sourceRoot":"","sources":["../src/job_context.ts"],"names":[],"mappings":"AAOA,MAAM,OAAO,UAAU;IACrB,IAAI,CAAM;IACV,KAAK,CAAO;IACZ,UAAU,CAAqB;IAC/B,EAAE,CAAe;IAEjB,YACE,EAAgB,EAChB,GAAQ,EACR,IAAU,EACV,YAA2C,SAAS;QAEpD,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;QAChB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACf,CAAC;IAED,IAAI,EAAE;QACJ,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IACtB,CAAC;IAED,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACxB,CAAC;CACF"}
@@ -0,0 +1,42 @@
1
+ /// <reference types="node" resolution-mode="require"/>
2
+ import type { Job, ParticipantInfo, Room } from '@livekit/protocol';
3
+ import { EventEmitter } from 'events';
4
+ declare enum AutoDisconnect {
5
+ ROOM_EMPTY = 0,
6
+ PUBLISHER_LEFT = 1,
7
+ NONE = 2
8
+ }
9
+ export declare enum AutoSubscribe {
10
+ SUBSCRIBE_ALL = 0,
11
+ SUBSCRIBE_NONE = 1,
12
+ VIDEO_ONLY = 2,
13
+ AUDIO_ONLY = 3
14
+ }
15
+ export type AcceptData = {
16
+ entry: string;
17
+ autoSubscribe: AutoSubscribe;
18
+ autoDisconnect: AutoDisconnect;
19
+ name: string;
20
+ identity: string;
21
+ metadata: string;
22
+ assign: EventEmitter;
23
+ };
24
+ export type AvailRes = {
25
+ avail: boolean;
26
+ data?: AcceptData;
27
+ };
28
+ export declare class JobRequest {
29
+ #private;
30
+ tx: EventEmitter;
31
+ logger: import("pino").default.Logger<never>;
32
+ constructor(job: Job, tx: EventEmitter);
33
+ get id(): string;
34
+ get job(): Job;
35
+ get room(): Room | undefined;
36
+ get publisher(): ParticipantInfo | undefined;
37
+ get answered(): boolean;
38
+ reject(): Promise<void>;
39
+ accept(entry: string, autoSubscribe?: AutoSubscribe, autoDisconnect?: AutoDisconnect, name?: string, identity?: string, metadata?: string): Promise<void>;
40
+ }
41
+ export {};
42
+ //# sourceMappingURL=job_request.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"job_request.d.ts","sourceRoot":"","sources":["../src/job_request.ts"],"names":[],"mappings":";AAGA,OAAO,KAAK,EAAE,GAAG,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAWtC,aAAK,cAAc;IACjB,UAAU,IAAA;IACV,cAAc,IAAA;IACd,IAAI,IAAA;CACL;AAED,oBAAY,aAAa;IACvB,aAAa,IAAA;IACb,cAAc,IAAA;IACd,UAAU,IAAA;IACV,UAAU,IAAA;CACX;AAED,MAAM,MAAM,UAAU,GAAG;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,aAAa,CAAC;IAC7B,cAAc,EAAE,cAAc,CAAC;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,YAAY,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG;IACrB,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,UAAU,CAAC;CACnB,CAAC;AAEF,qBAAa,UAAU;;IAGrB,EAAE,EAAE,YAAY,CAAC;IACjB,MAAM,uCAAgC;gBAE1B,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,YAAY;IAKtC,IAAI,EAAE,IAAI,MAAM,CAEf;IAED,IAAI,GAAG,IAAI,GAAG,CAEb;IAED,IAAI,IAAI,IAAI,IAAI,GAAG,SAAS,CAE3B;IAED,IAAI,SAAS,IAAI,eAAe,GAAG,SAAS,CAE3C;IAED,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAEK,MAAM;IASN,MAAM,CACV,KAAK,EAAE,MAAM,EACb,aAAa,GAAE,aAA2C,EAC1D,cAAc,GAAE,cAA0C,EAC1D,IAAI,GAAE,MAAW,EACjB,QAAQ,GAAE,MAAW,EACrB,QAAQ,GAAE,MAAW;CA4BxB"}