From 2f95fa78555e57ec238ece5dfb589a8f92a3fdcd Mon Sep 17 00:00:00 2001 From: aoife cassidy Date: Tue, 30 Apr 2024 11:14:26 +0300 Subject: [PATCH] Use pnpm instead of Bun --- .github/workflows/build.yml | 34 +- .reuse/dep5 | 4 +- README.md | 13 +- agents/src/cli.ts | 6 +- agents/src/index.ts | 22 +- agents/src/ipc/job_main.ts | 6 +- agents/src/ipc/job_process.ts | 8 +- agents/src/job_request.ts | 2 +- agents/src/stt/index.ts | 4 +- agents/src/stt/stream_adapter.ts | 6 +- agents/src/stt/stt.ts | 2 +- agents/src/tts/index.ts | 10 +- agents/src/tts/stream_adapter.ts | 10 +- agents/src/worker.ts | 12 +- bun.lockb | Bin 77048 -> 0 bytes examples/package.json | 4 + examples/{ => src}/minimal.ts | 4 +- examples/{ => src}/tts.ts | 0 examples/tsconfig.json | 15 + flake.nix | 2 +- package.json | 4 - plugins/elevenlabs/src/index.ts | 2 +- plugins/elevenlabs/src/tts.ts | 2 +- pnpm-lock.yaml | 1498 ++++++++++++++++++++++++++++++ pnpm-workspace.yaml | 4 + 25 files changed, 1605 insertions(+), 69 deletions(-) delete mode 100755 bun.lockb rename examples/{ => src}/minimal.ts (92%) rename examples/{ => src}/tts.ts (100%) create mode 100644 examples/tsconfig.json delete mode 100644 package.json create mode 100644 pnpm-lock.yaml create mode 100644 pnpm-workspace.yaml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 48325f8d..8d07aac4 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -13,14 +13,22 @@ jobs: - uses: actions/checkout@v4 - name: REUSE-3.0 compliance check uses: fsfe/reuse-action@v3 - - uses: oven-sh/setup-bun@v1 + - uses: pnpm/action-setup@v2 + with: + version: 8 + - name: Setup node + uses: actions/setup-node@v4 + with: + node-version: 20 + cache: pnpm + - name: Install dependencies + run: pnpm install - name: ESLint run: | - bun install cd agents - bun lint + pnpm lint cd ../plugins/elevenlabs - bun lint + pnpm lint build: name: Build @@ -28,11 +36,19 @@ jobs: needs: lint steps: - uses: actions/checkout@v4 - - uses: oven-sh/setup-bun@v1 - - name: Bun build + - uses: pnpm/action-setup@v2 + with: + version: 8 + - name: Setup node + uses: actions/setup-node@v4 + with: + node-version: 20 + cache: pnpm + - name: Install dependencies + run: pnpm install + - name: pnpm build run: | - bun install cd agents - bun run build + pnpm build cd ../plugins/elevenlabs - bun run build + pnpm build diff --git a/.reuse/dep5 b/.reuse/dep5 index ed777982..a6f8c655 100644 --- a/.reuse/dep5 +++ b/.reuse/dep5 @@ -9,11 +9,11 @@ Copyright: 2024 LiveKit, Inc. License: Apache-2.0 # global project files -Files: package.json bun.lockb .prettierrc eslint.config.mjs +Files: .prettierrc eslint.config.mjs pnpm-lock.yaml pnpm-workspace.yaml Copyright: 2024 LiveKit, Inc. License: Apache-2.0 # sub-project files -Files: agents/package.json examples/package.json plugins/elevenlabs/package.json agents/tsconfig.json plugins/elevenlabs/tsconfig.json +Files: agents/package.json examples/package.json plugins/elevenlabs/package.json agents/tsconfig.json plugins/elevenlabs/tsconfig.json examples/tsconfig.json Copyright: 2024 LiveKit, Inc. License: Apache-2.0 diff --git a/README.md b/README.md index 3a5fa2b1..602ef835 100644 --- a/README.md +++ b/README.md @@ -8,24 +8,15 @@ SPDX-License-Identifier: Apache-2.0 This is a Node port of the [LiveKit Agents framework](https://livekit.io/agents), originally written in Python. -## Development -This project builds to Node-compatible JavaScript, but is developed using the faster [Bun](https://bun.sh) JavaScript runtime. As a superset of Node, there are some caveats: - -- Bun uses `package.json#workspaces` for monorepo handling, while pnpm uses `pnpm-workspace.yaml`. Using pnpm will therefore generate a new `node_modules/` for every subpackage. -- Running the `build` script invokes the [considerably faster](https://github-production-user-asset-6210df.s3.amazonaws.com/3084745/266451348-e65fa63c-99c7-4bcf-950b-e2fe9408a942.png) `Bun.build` bundler, as opposed to running `tsc`. -- Other incompatibilities which may be added to the project at any time - -For this reason, while it should be possible to use npm, yarn, or pnpm with minor modifications to the builder, it is advised to install Bun. - ## Building This project depends on [`@livekit/rtc-node`](https://npmjs.com/package/@livekit/rtc-node), which itself depends on `libstdc++` version 6 being in PATH. Install the project dependencies and run the build script: ```sh -$ bun install +$ pnpm install $ cd agents -$ bun run build +$ pnpm build ``` Your output will be in the `dist/` directory. diff --git a/agents/src/cli.ts b/agents/src/cli.ts index ff05e36f..e9923298 100644 --- a/agents/src/cli.ts +++ b/agents/src/cli.ts @@ -2,11 +2,11 @@ // // SPDX-License-Identifier: Apache-2.0 -import { version } from '.'; +import { version } from './version.js'; import { Option, Command } from 'commander'; -import { WorkerOptions, Worker } from './worker'; +import { WorkerOptions, Worker } from './worker.js'; import { EventEmitter } from 'events'; -import { log } from './log'; +import { log } from './log.js'; type CliArgs = { opts: WorkerOptions; diff --git a/agents/src/index.ts b/agents/src/index.ts index ac387f14..e546738f 100644 --- a/agents/src/index.ts +++ b/agents/src/index.ts @@ -2,14 +2,14 @@ // // SPDX-License-Identifier: Apache-2.0 -export * from './vad'; -export * from './plugin'; -export * from './version'; -export * from './job_context'; -export * from './job_request'; -export * from './worker'; -export * from './utils'; -export * from './log'; -export * as cli from './cli'; -export * as stt from './stt'; -export * as tts from './tts'; +export * from './vad.js'; +export * from './plugin.js'; +export * from './version.js'; +export * from './job_context.js'; +export * from './job_request.js'; +export * from './worker.js'; +export * from './utils.js'; +export * from './log.js'; +export * as cli from './cli.js'; +export * as stt from './stt/index.js'; +export * as tts from './tts/index.js'; diff --git a/agents/src/ipc/job_main.ts b/agents/src/ipc/job_main.ts index 38a950e9..8ce266dd 100644 --- a/agents/src/ipc/job_main.ts +++ b/agents/src/ipc/job_main.ts @@ -2,11 +2,11 @@ // // SPDX-License-Identifier: Apache-2.0 -import { IPC_MESSAGE, JobMainArgs, Message, Ping } from './protocol'; +import { IPC_MESSAGE, JobMainArgs, Message, Ping } from './protocol.js'; import { Room } from '@livekit/rtc-node'; import { EventEmitter, once } from 'events'; -import { JobContext } from '../job_context'; -import { log } from '../log'; +import { JobContext } from '../job_context.js'; +import { log } from '../log.js'; import { ChildProcess, fork } from 'child_process'; import { JobAssignment, ServerMessage } from '@livekit/protocol'; diff --git a/agents/src/ipc/job_process.ts b/agents/src/ipc/job_process.ts index a8c0a401..0fb069c1 100644 --- a/agents/src/ipc/job_process.ts +++ b/agents/src/ipc/job_process.ts @@ -3,12 +3,12 @@ // SPDX-License-Identifier: Apache-2.0 import { Job } from '@livekit/protocol'; -import { IPC_MESSAGE, JobMainArgs, Message, Pong, StartJobResponse } from './protocol'; -import { runJob } from './job_main'; +import { IPC_MESSAGE, JobMainArgs, Message, Pong, StartJobResponse } from './protocol.js'; +import { runJob } from './job_main.js'; import { once } from 'events'; -import { log } from '../log'; +import { log } from '../log.js'; import { Logger } from 'pino'; -import { AcceptData } from '../job_request'; +import { AcceptData } from '../job_request.js'; import { ChildProcess } from 'child_process'; const START_TIMEOUT = 90 * 1000; diff --git a/agents/src/job_request.ts b/agents/src/job_request.ts index 31ca9d3c..08166405 100644 --- a/agents/src/job_request.ts +++ b/agents/src/job_request.ts @@ -3,7 +3,7 @@ // SPDX-License-Identifier: Apache-2.0 import { Job, ParticipantInfo, Room } from '@livekit/protocol'; -import { log } from './log'; +import { log } from './log.js'; import { EventEmitter } from 'events'; class AnsweredError extends Error { diff --git a/agents/src/stt/index.ts b/agents/src/stt/index.ts index ea958600..85e26c06 100644 --- a/agents/src/stt/index.ts +++ b/agents/src/stt/index.ts @@ -2,5 +2,5 @@ // // SPDX-License-Identifier: Apache-2.0 -export { STT, SpeechEvent, SpeechEventType, SpeechStream } from './stt'; -export { StreamAdapter, StreamAdapterWrapper } from './stream_adapter'; +export { STT, SpeechEvent, SpeechEventType, SpeechStream } from './stt.js'; +export { StreamAdapter, StreamAdapterWrapper } from './stream_adapter.js'; diff --git a/agents/src/stt/stream_adapter.ts b/agents/src/stt/stream_adapter.ts index e1dc8487..0b31843c 100644 --- a/agents/src/stt/stream_adapter.ts +++ b/agents/src/stt/stream_adapter.ts @@ -2,10 +2,10 @@ // // SPDX-License-Identifier: Apache-2.0 -import { STT, SpeechEvent, SpeechEventType, SpeechStream } from './stt'; -import { VADEventType, VADStream } from '../vad'; +import { STT, SpeechEvent, SpeechEventType, SpeechStream } from './stt.js'; +import { VADEventType, VADStream } from '../vad.js'; import { AudioFrame } from '@livekit/rtc-node'; -import { AudioBuffer, mergeFrames } from '../utils'; +import { AudioBuffer, mergeFrames } from '../utils.js'; export class StreamAdapterWrapper extends SpeechStream { closed: boolean; diff --git a/agents/src/stt/stt.ts b/agents/src/stt/stt.ts index c58051be..57196a28 100644 --- a/agents/src/stt/stt.ts +++ b/agents/src/stt/stt.ts @@ -3,7 +3,7 @@ // SPDX-License-Identifier: Apache-2.0 import { AudioFrame } from '@livekit/rtc-node'; -import { AudioBuffer } from '../utils'; +import { AudioBuffer } from '../utils.js'; export enum SpeechEventType { START_OF_SPEECH = 0, diff --git a/agents/src/tts/index.ts b/agents/src/tts/index.ts index 35d6b5c0..2d14d2a5 100644 --- a/agents/src/tts/index.ts +++ b/agents/src/tts/index.ts @@ -2,5 +2,11 @@ // // SPDX-License-Identifier: Apache-2.0 -export { TTS, SynthesisEvent, SynthesisEventType, SynthesizedAudio, SynthesizeStream } from './tts'; -export { StreamAdapter, StreamAdapterWrapper } from './stream_adapter'; +export { + TTS, + SynthesisEvent, + SynthesisEventType, + SynthesizedAudio, + SynthesizeStream, +} from './tts.js'; +export { StreamAdapter, StreamAdapterWrapper } from './stream_adapter.js'; diff --git a/agents/src/tts/stream_adapter.ts b/agents/src/tts/stream_adapter.ts index eff1566e..1be237fb 100644 --- a/agents/src/tts/stream_adapter.ts +++ b/agents/src/tts/stream_adapter.ts @@ -2,8 +2,14 @@ // // SPDX-License-Identifier: Apache-2.0 -import { TTS, SynthesisEvent, SynthesisEventType, SynthesizedAudio, SynthesizeStream } from './tts'; -import { SentenceStream, SentenceTokenizer } from '../tokenize'; +import { + TTS, + SynthesisEvent, + SynthesisEventType, + SynthesizedAudio, + SynthesizeStream, +} from './tts.js'; +import { SentenceStream, SentenceTokenizer } from '../tokenize.js'; export class StreamAdapterWrapper extends SynthesizeStream { closed: boolean; diff --git a/agents/src/worker.ts b/agents/src/worker.ts index f2160b28..faf4c008 100644 --- a/agents/src/worker.ts +++ b/agents/src/worker.ts @@ -4,7 +4,7 @@ import os from 'os'; import { WebSocket } from 'ws'; -import { AvailRes, JobRequest } from './job_request'; +import { AvailRes, JobRequest } from './job_request.js'; import { JobType, Job, @@ -14,13 +14,13 @@ import { AvailabilityRequest, JobAssignment, } from '@livekit/protocol'; -import { AcceptData } from './job_request'; -import { HTTPServer } from './http_server'; -import { log } from './log'; -import { version } from './version'; +import { AcceptData } from './job_request.js'; +import { HTTPServer } from './http_server.js'; +import { log } from './log.js'; +import { version } from './version.js'; import { AccessToken } from 'livekit-server-sdk'; import { EventEmitter } from 'events'; -import { JobProcess } from './ipc/job_process'; +import { JobProcess } from './ipc/job_process.js'; const MAX_RECONNECT_ATTEMPTS = 10; const ASSIGNMENT_TIMEOUT = 15 * 1000; diff --git a/bun.lockb b/bun.lockb deleted file mode 100755 index c15e41cae0af07cad95bb1d8e327eba4aa8b4dc2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 77048 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 Ps$t(R$ydSu7Zd##V|M|d diff --git a/examples/package.json b/examples/package.json index 6094f86e..ffcf8ba7 100644 --- a/examples/package.json +++ b/examples/package.json @@ -2,6 +2,10 @@ "private": true, "name": "livekit-agents-examples", "type": "module", + "scripts": { + "build": "tsc", + "lint": "eslint src" + }, "devDependencies": { "@types/bun": "latest" }, diff --git a/examples/minimal.ts b/examples/src/minimal.ts similarity index 92% rename from examples/minimal.ts rename to examples/src/minimal.ts index f6220d8d..50f5d3c1 100644 --- a/examples/minimal.ts +++ b/examples/src/minimal.ts @@ -8,9 +8,9 @@ import { fileURLToPath } from 'url'; // your entry file *has* to include an exported function [entry]. // this file will be imported from inside the library, and this function // will be called. -export const entry = async (_: JobContext) => { +export const entry = async (job: JobContext) => { console.log('starting voice assistant...'); - + job; // etc }; diff --git a/examples/tts.ts b/examples/src/tts.ts similarity index 100% rename from examples/tts.ts rename to examples/src/tts.ts diff --git a/examples/tsconfig.json b/examples/tsconfig.json new file mode 100644 index 00000000..024255cb --- /dev/null +++ b/examples/tsconfig.json @@ -0,0 +1,15 @@ +{ + "compilerOptions": { + "lib": ["ESNext"], + "target": "ESNext", + "module": "ESNext", + "moduleDetection": "force", + "moduleResolution": "node", + "allowJs": true, + "strict": true, + "skipLibCheck": true, + "esModuleInterop": true, + "outDir": "dist" + }, + "include": ["**/*.ts"] +} diff --git a/flake.nix b/flake.nix index 5a63f0d4..6d936d6c 100644 --- a/flake.nix +++ b/flake.nix @@ -16,7 +16,7 @@ in { devShell = with pkgs; mkShell { - nativeBuildInputs = [ bun reuse ]; + nativeBuildInputs = [ nodejs nodePackages.pnpm reuse ]; LD_LIBRARY_PATH = "${pkgs.stdenv.cc.cc.lib}/lib/"; }; } diff --git a/package.json b/package.json deleted file mode 100644 index e62584e9..00000000 --- a/package.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "private": true, - "workspaces": ["agents", "plugins/*", "examples"] -} diff --git a/plugins/elevenlabs/src/index.ts b/plugins/elevenlabs/src/index.ts index f387fc8c..6b176049 100644 --- a/plugins/elevenlabs/src/index.ts +++ b/plugins/elevenlabs/src/index.ts @@ -2,4 +2,4 @@ // // SPDX-License-Identifier: Apache-2.0 -export * from './tts'; +export * from './tts.js'; diff --git a/plugins/elevenlabs/src/tts.ts b/plugins/elevenlabs/src/tts.ts index e0235d05..dd594f4e 100644 --- a/plugins/elevenlabs/src/tts.ts +++ b/plugins/elevenlabs/src/tts.ts @@ -2,7 +2,7 @@ // // SPDX-License-Identifier: Apache-2.0 -import { TTSModels } from './models'; +import { TTSModels } from './models.js'; import { log, tts } from '@livekit/agents'; import { RawData, WebSocket } from 'ws'; import { URL } from 'url'; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 00000000..b5a4a551 --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,1498 @@ +lockfileVersion: '6.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + agents: + dependencies: + '@livekit/protocol': + specifier: ^1.13.0 + version: 1.14.0 + '@livekit/rtc-node': + specifier: ^0.1.0 + version: 0.1.0 + commander: + specifier: ^12.0.0 + version: 12.0.0 + livekit-server-sdk: + specifier: ^2.1.2 + version: 2.2.0 + pino: + specifier: ^8.19.0 + version: 8.21.0 + pino-pretty: + specifier: ^11.0.0 + version: 11.0.0 + typescript: + specifier: ^5.0.0 + version: 5.4.5 + ws: + specifier: ^8.16.0 + version: 8.17.0 + devDependencies: + '@types/bun': + specifier: latest + version: 1.1.1 + '@types/ws': + specifier: ^8.5.10 + version: 8.5.10 + eslint: + specifier: ^8.57.0 + version: 8.57.0 + eslint-config-prettier: + specifier: ^9.1.0 + version: 9.1.0(eslint@8.57.0) + eslint-plugin-prettier: + specifier: ^5.1.3 + version: 5.1.3(eslint-config-prettier@9.1.0)(eslint@8.57.0)(prettier@3.2.5) + typescript-eslint: + specifier: ^7.4.0 + version: 7.8.0(eslint@8.57.0)(typescript@5.4.5) + + examples: + dependencies: + '@livekit/agents': + specifier: workspace:* + version: link:../agents + '@livekit/elevenlabs': + specifier: workspace:* + version: link:../plugins/elevenlabs + '@livekit/rtc-node': + specifier: ^0.1.0 + version: 0.1.0 + typescript: + specifier: ^5.0.0 + version: 5.4.5 + devDependencies: + '@types/bun': + specifier: latest + version: 1.1.1 + + plugins/elevenlabs: + dependencies: + '@livekit/agents': + specifier: workspace:* + version: link:../../agents + '@livekit/rtc-node': + specifier: ^0.1.0 + version: 0.1.0 + typescript: + specifier: ^5.0.0 + version: 5.4.5 + ws: + specifier: ^8.16.0 + version: 8.17.0 + devDependencies: + '@types/bun': + specifier: latest + version: 1.1.1 + '@types/ws': + specifier: ^8.5.10 + version: 8.5.10 + eslint: + specifier: ^8.57.0 + version: 8.57.0 + eslint-config-prettier: + specifier: ^9.1.0 + version: 9.1.0(eslint@8.57.0) + eslint-plugin-prettier: + specifier: ^5.1.3 + version: 5.1.3(eslint-config-prettier@9.1.0)(eslint@8.57.0)(prettier@3.2.5) + typescript-eslint: + specifier: ^7.4.0 + version: 7.8.0(eslint@8.57.0)(typescript@5.4.5) + +packages: + + /@bufbuild/protobuf@1.9.0: + resolution: {integrity: sha512-W7gp8Q/v1NlCZLsv8pQ3Y0uCu/SHgXOVFK+eUluUKWXmsb6VHkpNx0apdOWWcDbB9sJoKeP8uPrjmehJz6xETQ==} + dev: false + + /@eslint-community/eslint-utils@4.4.0(eslint@8.57.0): + resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + dependencies: + eslint: 8.57.0 + eslint-visitor-keys: 3.4.3 + dev: true + + /@eslint-community/regexpp@4.10.0: + resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + dev: true + + /@eslint/eslintrc@2.1.4: + resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + ajv: 6.12.6 + debug: 4.3.4 + espree: 9.6.1 + globals: 13.24.0 + ignore: 5.3.1 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@eslint/js@8.57.0: + resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /@humanwhocodes/config-array@0.11.14: + resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} + engines: {node: '>=10.10.0'} + dependencies: + '@humanwhocodes/object-schema': 2.0.3 + debug: 4.3.4 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@humanwhocodes/module-importer@1.0.1: + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + dev: true + + /@humanwhocodes/object-schema@2.0.3: + resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} + dev: true + + /@livekit/protocol@1.14.0: + resolution: {integrity: sha512-Fd/xVht+ew+rEFu54Rsq8MNqCQV/ZcJFG0WU264p5yL24Ory+AV9hXt/4MUzWXvPXTLIxovJdJJynYKTBJO6qw==} + dependencies: + '@bufbuild/protobuf': 1.9.0 + dev: false + + /@livekit/rtc-node-darwin-arm64@0.1.0: + resolution: {integrity: sha512-903dWnnnKreQkZiOb6ZP4STmul7dcIE88Y35HucQPswVxJCl717U/pXlx5MHqbPmtNkQQqMLV8YaG3U72tq5kA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /@livekit/rtc-node-darwin-x64@0.1.0: + resolution: {integrity: sha512-scG6jIfEmIgjKaIbKXxZ5hipSXEaNqlZWiueXfGsbmDKAWGhcynBQfiSMJSBZu9AJgnhu+ShJTxfhDq/2cjzVw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /@livekit/rtc-node-linux-arm64-gnu@0.1.0: + resolution: {integrity: sha512-S3o6mfifMGXYQK3opxekyA1nzi97oZ57B+IchBnmX8p2r72CIwhUVlHL0ExnRoQDs57RCRElEaL8vezBEJEJSQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@livekit/rtc-node-linux-x64-gnu@0.1.0: + resolution: {integrity: sha512-F6DyfDEMqwth0JDfhwj2bJqD4dJu2bW0Yncofvq6rhoBUcIUgwzlje9KQA0yPuU6IilGJ9w/G3AsZZhuuA88Bg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@livekit/rtc-node-win32-x64-msvc@0.1.0: + resolution: {integrity: sha512-YVldb6vBuGDQM3VMZ2kQW0FuitdnxzyXR83eBa/lPJqb9vtpBeTz/88kmFLMrsP9td/8qZI51pIaUpf1LenvPg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@livekit/rtc-node@0.1.0: + resolution: {integrity: sha512-RZPt7ASX0pMPGMPSbRI0lJGqxgAg+HHY+yYKC5NhR9X3iEgYyRiG5Z9jzOxQYIKmrZB53NFtkIvwfZPGyzXBkQ==} + engines: {node: '>= 18'} + dependencies: + '@bufbuild/protobuf': 1.9.0 + typed-emitter: 2.1.0 + optionalDependencies: + '@livekit/rtc-node-darwin-arm64': 0.1.0 + '@livekit/rtc-node-darwin-x64': 0.1.0 + '@livekit/rtc-node-linux-arm64-gnu': 0.1.0 + '@livekit/rtc-node-linux-x64-gnu': 0.1.0 + '@livekit/rtc-node-win32-x64-msvc': 0.1.0 + dev: false + + /@nodelib/fs.scandir@2.1.5: + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + dev: true + + /@nodelib/fs.stat@2.0.5: + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + dev: true + + /@nodelib/fs.walk@1.2.8: + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.17.1 + dev: true + + /@pkgr/core@0.1.1: + resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + dev: true + + /@types/bun@1.1.1: + resolution: {integrity: sha512-lUe9rLMhgDCViciZtgDj5CMl2u7uTq/IP149kSZH/Si6FWkCioximABFf+baRQgbm8QlH4bzT0qJRteQFNqeGA==} + dependencies: + bun-types: 1.1.6 + dev: true + + /@types/json-schema@7.0.15: + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + dev: true + + /@types/node@20.11.30: + resolution: {integrity: sha512-dHM6ZxwlmuZaRmUPfv1p+KrdD1Dci04FbdEm/9wEMouFqxYoFl5aMkt0VMAUtYRQDyYvD41WJLukhq/ha3YuTw==} + dependencies: + undici-types: 5.26.5 + dev: true + + /@types/node@20.12.7: + resolution: {integrity: sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg==} + dependencies: + undici-types: 5.26.5 + dev: true + + /@types/semver@7.5.8: + resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} + dev: true + + /@types/ws@8.5.10: + resolution: {integrity: sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==} + dependencies: + '@types/node': 20.12.7 + dev: true + + /@typescript-eslint/eslint-plugin@7.8.0(@typescript-eslint/parser@7.8.0)(eslint@8.57.0)(typescript@5.4.5): + resolution: {integrity: sha512-gFTT+ezJmkwutUPmB0skOj3GZJtlEGnlssems4AjkVweUPGj7jRwwqg0Hhg7++kPGJqKtTYx+R05Ftww372aIg==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + '@typescript-eslint/parser': ^7.0.0 + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@eslint-community/regexpp': 4.10.0 + '@typescript-eslint/parser': 7.8.0(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/scope-manager': 7.8.0 + '@typescript-eslint/type-utils': 7.8.0(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/utils': 7.8.0(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/visitor-keys': 7.8.0 + debug: 4.3.4 + eslint: 8.57.0 + graphemer: 1.4.0 + ignore: 5.3.1 + natural-compare: 1.4.0 + semver: 7.6.0 + ts-api-utils: 1.3.0(typescript@5.4.5) + typescript: 5.4.5 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/parser@7.8.0(eslint@8.57.0)(typescript@5.4.5): + resolution: {integrity: sha512-KgKQly1pv0l4ltcftP59uQZCi4HUYswCLbTqVZEJu7uLX8CTLyswqMLqLN+2QFz4jCptqWVV4SB7vdxcH2+0kQ==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 7.8.0 + '@typescript-eslint/types': 7.8.0 + '@typescript-eslint/typescript-estree': 7.8.0(typescript@5.4.5) + '@typescript-eslint/visitor-keys': 7.8.0 + debug: 4.3.4 + eslint: 8.57.0 + typescript: 5.4.5 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/scope-manager@7.8.0: + resolution: {integrity: sha512-viEmZ1LmwsGcnr85gIq+FCYI7nO90DVbE37/ll51hjv9aG+YZMb4WDE2fyWpUR4O/UrhGRpYXK/XajcGTk2B8g==} + engines: {node: ^18.18.0 || >=20.0.0} + dependencies: + '@typescript-eslint/types': 7.8.0 + '@typescript-eslint/visitor-keys': 7.8.0 + dev: true + + /@typescript-eslint/type-utils@7.8.0(eslint@8.57.0)(typescript@5.4.5): + resolution: {integrity: sha512-H70R3AefQDQpz9mGv13Uhi121FNMh+WEaRqcXTX09YEDky21km4dV1ZXJIp8QjXc4ZaVkXVdohvWDzbnbHDS+A==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/typescript-estree': 7.8.0(typescript@5.4.5) + '@typescript-eslint/utils': 7.8.0(eslint@8.57.0)(typescript@5.4.5) + debug: 4.3.4 + eslint: 8.57.0 + ts-api-utils: 1.3.0(typescript@5.4.5) + typescript: 5.4.5 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/types@7.8.0: + resolution: {integrity: sha512-wf0peJ+ZGlcH+2ZS23aJbOv+ztjeeP8uQ9GgwMJGVLx/Nj9CJt17GWgWWoSmoRVKAX2X+7fzEnAjxdvK2gqCLw==} + engines: {node: ^18.18.0 || >=20.0.0} + dev: true + + /@typescript-eslint/typescript-estree@7.8.0(typescript@5.4.5): + resolution: {integrity: sha512-5pfUCOwK5yjPaJQNy44prjCwtr981dO8Qo9J9PwYXZ0MosgAbfEMB008dJ5sNo3+/BN6ytBPuSvXUg9SAqB0dg==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 7.8.0 + '@typescript-eslint/visitor-keys': 7.8.0 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + minimatch: 9.0.4 + semver: 7.6.0 + ts-api-utils: 1.3.0(typescript@5.4.5) + typescript: 5.4.5 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/utils@7.8.0(eslint@8.57.0)(typescript@5.4.5): + resolution: {integrity: sha512-L0yFqOCflVqXxiZyXrDr80lnahQfSOfc9ELAAZ75sqicqp2i36kEZZGuUymHNFoYOqxRT05up760b4iGsl02nQ==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@types/json-schema': 7.0.15 + '@types/semver': 7.5.8 + '@typescript-eslint/scope-manager': 7.8.0 + '@typescript-eslint/types': 7.8.0 + '@typescript-eslint/typescript-estree': 7.8.0(typescript@5.4.5) + eslint: 8.57.0 + semver: 7.6.0 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/visitor-keys@7.8.0: + resolution: {integrity: sha512-q4/gibTNBQNA0lGyYQCmWRS5D15n8rXh4QjK3KV+MBPlTYHpfBUT3D3PaPR/HeNiI9W6R7FvlkcGhNyAoP+caA==} + engines: {node: ^18.18.0 || >=20.0.0} + dependencies: + '@typescript-eslint/types': 7.8.0 + eslint-visitor-keys: 3.4.3 + dev: true + + /@ungap/structured-clone@1.2.0: + resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} + dev: true + + /abort-controller@3.0.0: + resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} + engines: {node: '>=6.5'} + dependencies: + event-target-shim: 5.0.1 + dev: false + + /acorn-jsx@5.3.2(acorn@8.11.3): + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + acorn: 8.11.3 + dev: true + + /acorn@8.11.3: + resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: true + + /ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + dev: true + + /ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + dev: true + + /ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + dependencies: + color-convert: 2.0.1 + dev: true + + /argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + dev: true + + /array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + dev: true + + /atomic-sleep@1.0.0: + resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} + engines: {node: '>=8.0.0'} + dev: false + + /balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + dev: true + + /base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + dev: false + + /brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + dev: true + + /brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + dependencies: + balanced-match: 1.0.2 + dev: true + + /braces@3.0.2: + resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + engines: {node: '>=8'} + dependencies: + fill-range: 7.0.1 + dev: true + + /buffer@6.0.3: + resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + dev: false + + /bun-types@1.1.6: + resolution: {integrity: sha512-LK2aaJdBBTUkDyN+kRiJHLF3VGrAcdkEHrbBvbmTkccShPw6ZalxxKjWSBJwn4UkikhZdrdA87bZWmfUgkRUYg==} + dependencies: + '@types/node': 20.11.30 + '@types/ws': 8.5.10 + dev: true + + /callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + dev: true + + /camelcase-keys@9.1.3: + resolution: {integrity: sha512-Rircqi9ch8AnZscQcsA1C47NFdaO3wukpmIRzYcDOrmvgt78hM/sj5pZhZNec2NM12uk5vTwRHZ4anGcrC4ZTg==} + engines: {node: '>=16'} + dependencies: + camelcase: 8.0.0 + map-obj: 5.0.0 + quick-lru: 6.1.2 + type-fest: 4.18.0 + dev: false + + /camelcase@8.0.0: + resolution: {integrity: sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==} + engines: {node: '>=16'} + dev: false + + /chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + dev: true + + /color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + dependencies: + color-name: 1.1.4 + dev: true + + /color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + dev: true + + /colorette@2.0.20: + resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + dev: false + + /commander@12.0.0: + resolution: {integrity: sha512-MwVNWlYjDTtOjX5PiD7o5pK0UrFU/OYgcJfjjK4RaHZETNtjJqrZa9Y9ds88+A+f+d5lv+561eZ+yCKoS3gbAA==} + engines: {node: '>=18'} + dev: false + + /concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + dev: true + + /cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + dev: true + + /dateformat@4.6.3: + resolution: {integrity: sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==} + dev: false + + /debug@4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + dev: true + + /deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + dev: true + + /dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + dependencies: + path-type: 4.0.0 + dev: true + + /doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + dependencies: + esutils: 2.0.3 + dev: true + + /end-of-stream@1.4.4: + resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} + dependencies: + once: 1.4.0 + dev: false + + /escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + dev: true + + /eslint-config-prettier@9.1.0(eslint@8.57.0): + resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + dependencies: + eslint: 8.57.0 + dev: true + + /eslint-plugin-prettier@5.1.3(eslint-config-prettier@9.1.0)(eslint@8.57.0)(prettier@3.2.5): + resolution: {integrity: sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + '@types/eslint': '>=8.0.0' + eslint: '>=8.0.0' + eslint-config-prettier: '*' + prettier: '>=3.0.0' + peerDependenciesMeta: + '@types/eslint': + optional: true + eslint-config-prettier: + optional: true + dependencies: + eslint: 8.57.0 + eslint-config-prettier: 9.1.0(eslint@8.57.0) + prettier: 3.2.5 + prettier-linter-helpers: 1.0.0 + synckit: 0.8.8 + dev: true + + /eslint-scope@7.2.2: + resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + dev: true + + /eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /eslint@8.57.0: + resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + hasBin: true + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@eslint-community/regexpp': 4.10.0 + '@eslint/eslintrc': 2.1.4 + '@eslint/js': 8.57.0 + '@humanwhocodes/config-array': 0.11.14 + '@humanwhocodes/module-importer': 1.0.1 + '@nodelib/fs.walk': 1.2.8 + '@ungap/structured-clone': 1.2.0 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.4 + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + esquery: 1.5.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + glob-parent: 6.0.2 + globals: 13.24.0 + graphemer: 1.4.0 + ignore: 5.3.1 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + js-yaml: 4.1.0 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.4 + strip-ansi: 6.0.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + dev: true + + /espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + acorn: 8.11.3 + acorn-jsx: 5.3.2(acorn@8.11.3) + eslint-visitor-keys: 3.4.3 + dev: true + + /esquery@1.5.0: + resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} + engines: {node: '>=0.10'} + dependencies: + estraverse: 5.3.0 + dev: true + + /esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + dependencies: + estraverse: 5.3.0 + dev: true + + /estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + dev: true + + /esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + dev: true + + /event-target-shim@5.0.1: + resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} + engines: {node: '>=6'} + dev: false + + /events@3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + dev: false + + /fast-copy@3.0.2: + resolution: {integrity: sha512-dl0O9Vhju8IrcLndv2eU4ldt1ftXMqqfgN4H1cpmGV7P6jeB9FwpN9a2c8DPGE1Ys88rNUJVYDHq73CGAGOPfQ==} + dev: false + + /fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + dev: true + + /fast-diff@1.3.0: + resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} + dev: true + + /fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} + engines: {node: '>=8.6.0'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.5 + dev: true + + /fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + dev: true + + /fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + dev: true + + /fast-redact@3.5.0: + resolution: {integrity: sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==} + engines: {node: '>=6'} + dev: false + + /fast-safe-stringify@2.1.1: + resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} + dev: false + + /fastq@1.17.1: + resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} + dependencies: + reusify: 1.0.4 + dev: true + + /file-entry-cache@6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flat-cache: 3.2.0 + dev: true + + /fill-range@7.0.1: + resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + engines: {node: '>=8'} + dependencies: + to-regex-range: 5.0.1 + dev: true + + /find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + dev: true + + /flat-cache@3.2.0: + resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flatted: 3.3.1 + keyv: 4.5.4 + rimraf: 3.0.2 + dev: true + + /flatted@3.3.1: + resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} + dev: true + + /fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + dev: true + + /glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + dependencies: + is-glob: 4.0.3 + dev: true + + /glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + dependencies: + is-glob: 4.0.3 + dev: true + + /glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: true + + /globals@13.24.0: + resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} + engines: {node: '>=8'} + dependencies: + type-fest: 0.20.2 + dev: true + + /globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.2 + ignore: 5.3.1 + merge2: 1.4.1 + slash: 3.0.0 + dev: true + + /graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + dev: true + + /has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + dev: true + + /help-me@5.0.0: + resolution: {integrity: sha512-7xgomUX6ADmcYzFik0HzAxh/73YlKR9bmFzf51CZwR+b6YtzU2m0u49hQCqV6SvlqIqsaxovfwdvbnsw3b/zpg==} + dev: false + + /ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + dev: false + + /ignore@5.3.1: + resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} + engines: {node: '>= 4'} + dev: true + + /import-fresh@3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + dev: true + + /imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + dev: true + + /inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + dev: true + + /inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + dev: true + + /is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + dev: true + + /is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + dependencies: + is-extglob: 2.1.1 + dev: true + + /is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + dev: true + + /is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + dev: true + + /isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + dev: true + + /jose@5.2.4: + resolution: {integrity: sha512-6ScbIk2WWCeXkmzF6bRPmEuaqy1m8SbsRFMa/FLrSCkGIhj8OLVG/IH+XHVmNMx/KUo8cVWEE6oKR4dJ+S0Rkg==} + dev: false + + /joycon@3.1.1: + resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} + engines: {node: '>=10'} + dev: false + + /js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + dependencies: + argparse: 2.0.1 + dev: true + + /json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + dev: true + + /json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + dev: true + + /json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + dev: true + + /keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + dependencies: + json-buffer: 3.0.1 + dev: true + + /levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + dev: true + + /livekit-server-sdk@2.2.0: + resolution: {integrity: sha512-FbmEav8Jr5VWQhuzt4JHJAHcBrdSiBIGBEmqxWq2Gl7i7XlAOUtNMuvgHis++mhTnw5jmbvfkZLulDMK1z48zg==} + engines: {node: '>=19'} + dependencies: + '@livekit/protocol': 1.14.0 + camelcase-keys: 9.1.3 + jose: 5.2.4 + dev: false + + /locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + dependencies: + p-locate: 5.0.0 + dev: true + + /lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + dev: true + + /lru-cache@6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} + dependencies: + yallist: 4.0.0 + dev: true + + /map-obj@5.0.0: + resolution: {integrity: sha512-2L3MIgJynYrZ3TYMriLDLWocz15okFakV6J12HXvMXDHui2x/zgChzg1u9mFFGbbGWE+GsLpQByt4POb9Or+uA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: false + + /merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + dev: true + + /micromatch@4.0.5: + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + engines: {node: '>=8.6'} + dependencies: + braces: 3.0.2 + picomatch: 2.3.1 + dev: true + + /minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + dependencies: + brace-expansion: 1.1.11 + dev: true + + /minimatch@9.0.4: + resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + brace-expansion: 2.0.1 + dev: true + + /minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + dev: false + + /ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + dev: true + + /natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + dev: true + + /on-exit-leak-free@2.1.2: + resolution: {integrity: sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==} + engines: {node: '>=14.0.0'} + dev: false + + /once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + dependencies: + wrappy: 1.0.2 + + /optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + engines: {node: '>= 0.8.0'} + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.5 + dev: true + + /p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + dependencies: + yocto-queue: 0.1.0 + dev: true + + /p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + dependencies: + p-limit: 3.1.0 + dev: true + + /parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + dependencies: + callsites: 3.1.0 + dev: true + + /path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + dev: true + + /path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + dev: true + + /path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + dev: true + + /path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + dev: true + + /picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + dev: true + + /pino-abstract-transport@1.2.0: + resolution: {integrity: sha512-Guhh8EZfPCfH+PMXAb6rKOjGQEoy0xlAIn+irODG5kgfYV+BQ0rGYYWTIel3P5mmyXqkYkPmdIkywsn6QKUR1Q==} + dependencies: + readable-stream: 4.5.2 + split2: 4.2.0 + dev: false + + /pino-pretty@11.0.0: + resolution: {integrity: sha512-YFJZqw59mHIY72wBnBs7XhLGG6qpJMa4pEQTRgEPEbjIYbng2LXEZZF1DoyDg9CfejEy8uZCyzpcBXXG0oOCwQ==} + hasBin: true + dependencies: + colorette: 2.0.20 + dateformat: 4.6.3 + fast-copy: 3.0.2 + fast-safe-stringify: 2.1.1 + help-me: 5.0.0 + joycon: 3.1.1 + minimist: 1.2.8 + on-exit-leak-free: 2.1.2 + pino-abstract-transport: 1.2.0 + pump: 3.0.0 + readable-stream: 4.5.2 + secure-json-parse: 2.7.0 + sonic-boom: 3.8.1 + strip-json-comments: 3.1.1 + dev: false + + /pino-std-serializers@6.2.2: + resolution: {integrity: sha512-cHjPPsE+vhj/tnhCy/wiMh3M3z3h/j15zHQX+S9GkTBgqJuTuJzYJ4gUyACLhDaJ7kk9ba9iRDmbH2tJU03OiA==} + dev: false + + /pino@8.21.0: + resolution: {integrity: sha512-ip4qdzjkAyDDZklUaZkcRFb2iA118H9SgRh8yzTkSQK8HilsOJF7rSY8HoW5+I0M46AZgX/pxbprf2vvzQCE0Q==} + hasBin: true + dependencies: + atomic-sleep: 1.0.0 + fast-redact: 3.5.0 + on-exit-leak-free: 2.1.2 + pino-abstract-transport: 1.2.0 + pino-std-serializers: 6.2.2 + process-warning: 3.0.0 + quick-format-unescaped: 4.0.4 + real-require: 0.2.0 + safe-stable-stringify: 2.4.3 + sonic-boom: 3.8.1 + thread-stream: 2.7.0 + dev: false + + /prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + dev: true + + /prettier-linter-helpers@1.0.0: + resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} + engines: {node: '>=6.0.0'} + dependencies: + fast-diff: 1.3.0 + dev: true + + /prettier@3.2.5: + resolution: {integrity: sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==} + engines: {node: '>=14'} + hasBin: true + dev: true + + /process-warning@3.0.0: + resolution: {integrity: sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ==} + dev: false + + /process@0.11.10: + resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} + engines: {node: '>= 0.6.0'} + dev: false + + /pump@3.0.0: + resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} + dependencies: + end-of-stream: 1.4.4 + once: 1.4.0 + dev: false + + /punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + dev: true + + /queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + dev: true + + /quick-format-unescaped@4.0.4: + resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==} + dev: false + + /quick-lru@6.1.2: + resolution: {integrity: sha512-AAFUA5O1d83pIHEhJwWCq/RQcRukCkn/NSm2QsTEMle5f2hP0ChI2+3Xb051PZCkLryI/Ir1MVKviT2FIloaTQ==} + engines: {node: '>=12'} + dev: false + + /readable-stream@4.5.2: + resolution: {integrity: sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + abort-controller: 3.0.0 + buffer: 6.0.3 + events: 3.3.0 + process: 0.11.10 + string_decoder: 1.3.0 + dev: false + + /real-require@0.2.0: + resolution: {integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==} + engines: {node: '>= 12.13.0'} + dev: false + + /resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + dev: true + + /reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + dev: true + + /rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + hasBin: true + dependencies: + glob: 7.2.3 + dev: true + + /run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + dependencies: + queue-microtask: 1.2.3 + dev: true + + /rxjs@7.8.1: + resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} + requiresBuild: true + dependencies: + tslib: 2.6.2 + dev: false + optional: true + + /safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + dev: false + + /safe-stable-stringify@2.4.3: + resolution: {integrity: sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==} + engines: {node: '>=10'} + dev: false + + /secure-json-parse@2.7.0: + resolution: {integrity: sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==} + dev: false + + /semver@7.6.0: + resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==} + engines: {node: '>=10'} + hasBin: true + dependencies: + lru-cache: 6.0.0 + dev: true + + /shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + dependencies: + shebang-regex: 3.0.0 + dev: true + + /shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + dev: true + + /slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + dev: true + + /sonic-boom@3.8.1: + resolution: {integrity: sha512-y4Z8LCDBuum+PBP3lSV7RHrXscqksve/bi0as7mhwVnBW+/wUqKT/2Kb7um8yqcFy0duYbbPxzt89Zy2nOCaxg==} + dependencies: + atomic-sleep: 1.0.0 + dev: false + + /split2@4.2.0: + resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} + engines: {node: '>= 10.x'} + dev: false + + /string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + dependencies: + safe-buffer: 5.2.1 + dev: false + + /strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + dependencies: + ansi-regex: 5.0.1 + dev: true + + /strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + /supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + dependencies: + has-flag: 4.0.0 + dev: true + + /synckit@0.8.8: + resolution: {integrity: sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==} + engines: {node: ^14.18.0 || >=16.0.0} + dependencies: + '@pkgr/core': 0.1.1 + tslib: 2.6.2 + dev: true + + /text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + dev: true + + /thread-stream@2.7.0: + resolution: {integrity: sha512-qQiRWsU/wvNolI6tbbCKd9iKaTnCXsTwVxhhKM6nctPdujTyztjlbUkUTUymidWcMnZ5pWR0ej4a0tjsW021vw==} + dependencies: + real-require: 0.2.0 + dev: false + + /to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + dependencies: + is-number: 7.0.0 + dev: true + + /ts-api-utils@1.3.0(typescript@5.4.5): + resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} + engines: {node: '>=16'} + peerDependencies: + typescript: '>=4.2.0' + dependencies: + typescript: 5.4.5 + dev: true + + /tslib@2.6.2: + resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} + + /type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.2.1 + dev: true + + /type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + dev: true + + /type-fest@4.18.0: + resolution: {integrity: sha512-+dbmiyliDY/2TTcjCS7NpI9yV2iEFlUDk5TKnsbkN7ZoRu5s7bT+zvYtNFhFXC2oLwURGT2frACAZvbbyNBI+w==} + engines: {node: '>=16'} + dev: false + + /typed-emitter@2.1.0: + resolution: {integrity: sha512-g/KzbYKbH5C2vPkaXGu8DJlHrGKHLsM25Zg9WuC9pMGfuvT+X25tZQWo5fK1BjBm8+UrVE9LDCvaY0CQk+fXDA==} + optionalDependencies: + rxjs: 7.8.1 + dev: false + + /typescript-eslint@7.8.0(eslint@8.57.0)(typescript@5.4.5): + resolution: {integrity: sha512-sheFG+/D8N/L7gC3WT0Q8sB97Nm573Yfr+vZFzl/4nBdYcmviBPtwGSX9TJ7wpVg28ocerKVOt+k2eGmHzcgVA==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/eslint-plugin': 7.8.0(@typescript-eslint/parser@7.8.0)(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/parser': 7.8.0(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/utils': 7.8.0(eslint@8.57.0)(typescript@5.4.5) + eslint: 8.57.0 + typescript: 5.4.5 + transitivePeerDependencies: + - supports-color + dev: true + + /typescript@5.4.5: + resolution: {integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==} + engines: {node: '>=14.17'} + hasBin: true + + /undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + dev: true + + /uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + dependencies: + punycode: 2.3.1 + dev: true + + /which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + dependencies: + isexe: 2.0.0 + dev: true + + /word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + dev: true + + /wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + /ws@8.17.0: + resolution: {integrity: sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dev: false + + /yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + dev: true + + /yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + dev: true diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml new file mode 100644 index 00000000..6add439b --- /dev/null +++ b/pnpm-workspace.yaml @@ -0,0 +1,4 @@ +packages: + - "agents" + - "plugins/*" + - "examples"