diff --git a/.vscode/launch.json b/.vscode/launch.json index 73bb1792895..30a1891bdc1 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -7,8 +7,8 @@ { "type": "node", "request": "launch", - "name": "Launch via npm", - "runtimeExecutable": "npm", + "name": "Launch via pnpm", + "runtimeExecutable": "pnpm", "runtimeArgs": ["run", "dev"], "skipFiles": ["/**"] } diff --git a/core/package.json b/core/package.json index d404e41d750..f7fbe5f85ec 100644 --- a/core/package.json +++ b/core/package.json @@ -10,24 +10,24 @@ "lint": "eslint . --fix", "start": "node --loader ts-node/esm src/index.ts", "start:arok": "node --loader ts-node/esm src/index.ts --characters=\"../characters/arok.character.json\"", - "start:service:ruby": "pm2 start npm --name=\"ruby\" --restart-delay=3000 --max-restarts=10 -- run start:ruby", + "start:service:ruby": "pm2 start pnpm --name=\"ruby\" --restart-delay=3000 --max-restarts=10 -- run start:ruby", "stop:service:ruby": "pm2 stop ruby", "start:ruby": "node --loader ts-node/esm src/index.ts --characters=\"../characters/ruby.character.json\"", - "start:service:trump": "pm2 start npm --name=\"trump\" --restart-delay=3000 --max-restarts=10 -- run start:trump", + "start:service:trump": "pm2 start pnpm --name=\"trump\" --restart-delay=3000 --max-restarts=10 -- run start:trump", "stop:service:trump": "pm2 stop trump", - "start:service:degen": "pm2 start npm --name=\"degen\" --restart-delay=3000 --max-restarts=10 -- run start:degen", + "start:service:degen": "pm2 start pnpm --name=\"degen\" --restart-delay=3000 --max-restarts=10 -- run start:degen", "stop:service:degen": "pm2 stop degen", "start:degen": "node --loader ts-node/esm src/index.ts --characters=\"../characters/degenspartan.json\"", - "start:service:all": "pm2 start npm --name=\"all\" --restart-delay=3000 --max-restarts=10 -- run start:degen", + "start:service:all": "pm2 start pnpm --name=\"all\" --restart-delay=3000 --max-restarts=10 -- run start:all", "stop:service:all": "pm2 stop all", - "start:all": "node --loader ts-node/esm src/index.ts --characters=\"../characters/degenspartan.json\",\"../characters/ruby.character.json\"", + "start:all": "node --loader ts-node/esm src/index.ts --characters=\"../characters/degenspartan.json\",\"../characters/ruby.character.json\",\"../characters/pmairca.character.json\"", "start:trump": "node --loader ts-node/esm src/index.ts --characters=\"../characters/trump.character.json\"", - "start:service:tate": "pm2 start npm --name=\"tate\" --restart-delay=3000 --max-restarts=10 -- run start:tate", + "start:service:tate": "pm2 start pnpm --name=\"tate\" --restart-delay=3000 --max-restarts=10 -- run start:tate", "stop:service:tate": "pm2 stop tate", "start:tate": "node --loader ts-node/esm src/index.ts --characters=\"../characters/tate.character.json\"", "watch": "tsc --watch", "dev": "tsc && nodemon", - "build:docs": "cd docs && npm run build", + "build:docs": "cd docs && pnpm run build", "postinstall": "npx playwright install-deps && npx playwright install", "test": "NODE_OPTIONS=\"$NODE_OPTIONS --experimental-vm-modules\" jest --runInBand --watch -f", "test:sqlite": "NODE_OPTIONS=\"$NODE_OPTIONS --experimental-vm-modules\" TEST_DATABASE_CLIENT=sqlite jest --runInBand --watch -f", @@ -59,7 +59,6 @@ "itty-router": "5.0.18", "jest": "29.7.0", "lint-staged": "15.2.10", - "npm-run-all2": "7.0.1", "prettier": "3.3.3", "rimraf": "6.0.1", "rollup": "2.79.2", @@ -83,7 +82,6 @@ "@anthropic-ai/sdk": "^0.30.1", "@cliqz/adblocker-playwright": "1.34.0", "@coral-xyz/anchor": "^0.30.1", - "@discordjs/opus": "github:discordjs/opus", "@discordjs/rest": "2.4.0", "@discordjs/voice": "0.17.0", "@echogarden/espeak-ng-emscripten": "0.3.0", diff --git a/core/src/adapters/postgres.ts b/core/src/adapters/postgres.ts index c2f6d154268..d7180c0a363 100644 --- a/core/src/adapters/postgres.ts +++ b/core/src/adapters/postgres.ts @@ -110,7 +110,7 @@ export class PostgresDatabaseAdapter extends DatabaseAdapter { const placeholders = params.roomIds .map((_, i) => `$${i + 2}`) .join(", "); - + let query = `SELECT * FROM memories WHERE type = $1 AND "roomId" IN (${placeholders})`; let queryParams = [params.tableName, ...params.roomIds]; @@ -635,7 +635,7 @@ export class PostgresDatabaseAdapter extends DatabaseAdapter { if (params.unique) { sql += ` AND "unique" = true`; - } + } // TODO: Test this if (params.agentId) { diff --git a/core/src/adapters/sqlite.ts b/core/src/adapters/sqlite.ts index 6889b2d6544..68afeb1afc6 100644 --- a/core/src/adapters/sqlite.ts +++ b/core/src/adapters/sqlite.ts @@ -160,7 +160,7 @@ export class SqliteDatabaseAdapter extends DatabaseAdapter { const placeholders = params.roomIds.map(() => "?").join(", "); let sql = `SELECT * FROM memories WHERE type = ? AND roomId IN (${placeholders})`; let queryParams = [params.tableName, ...params.roomIds]; - + if (params.agentId) { sql += ` AND userId = ?`; queryParams.push(params.agentId); @@ -171,9 +171,9 @@ export class SqliteDatabaseAdapter extends DatabaseAdapter { content: string; })[]; - return rows.map(row => ({ + return rows.map((row) => ({ ...row, - content: JSON.parse(row.content) + content: JSON.parse(row.content), })); } diff --git a/core/src/adapters/supabase.ts b/core/src/adapters/supabase.ts index 3efe5f2906b..0b97f895b05 100644 --- a/core/src/adapters/supabase.ts +++ b/core/src/adapters/supabase.ts @@ -318,7 +318,6 @@ export class SupabaseDatabaseAdapter extends DatabaseAdapter { tableName: string; } ): Promise { - const queryParams = { query_table_name: params.tableName, query_roomId: params.roomId, @@ -326,7 +325,7 @@ export class SupabaseDatabaseAdapter extends DatabaseAdapter { query_match_threshold: params.match_threshold, query_match_count: params.count, query_unique: !!params.unique, - } + }; if (params.agentId) { (queryParams as any).query_agentId = params.agentId; } diff --git a/core/src/cli/index.ts b/core/src/cli/index.ts index ad14b208c6a..90c5ef46d41 100644 --- a/core/src/cli/index.ts +++ b/core/src/cli/index.ts @@ -123,6 +123,8 @@ export async function createAgentRuntime( const actionConfigs = loadActionConfigs(configPath); const customActions = await loadCustomActions(actionConfigs); + console.log("Creating runtime for character", character.name); + return new AgentRuntime({ databaseAdapter: db, token, diff --git a/core/src/clients/discord/actions/summarize_conversation.ts b/core/src/clients/discord/actions/summarize_conversation.ts index 952b234b0f0..3247b177f37 100644 --- a/core/src/clients/discord/actions/summarize_conversation.ts +++ b/core/src/clients/discord/actions/summarize_conversation.ts @@ -145,7 +145,11 @@ const summarizeAction = { "CONVERSATION_SUMMARY", ], description: "Summarizes the conversation and attachments.", - validate: async (runtime: IAgentRuntime, message: Memory, _state: State) => { + validate: async ( + runtime: IAgentRuntime, + message: Memory, + _state: State + ) => { if (message.content.source !== "discord") { return false; } diff --git a/core/src/clients/discord/messages.ts b/core/src/clients/discord/messages.ts index 20cdd4ac23d..ac3718cbe8b 100644 --- a/core/src/clients/discord/messages.ts +++ b/core/src/clients/discord/messages.ts @@ -1,4 +1,9 @@ -import { ChannelType, Client, Message as DiscordMessage, TextChannel } from "discord.js"; +import { + ChannelType, + Client, + Message as DiscordMessage, + TextChannel, +} from "discord.js"; import { composeContext } from "../../core/context.ts"; import { generateMessageResponse, @@ -153,17 +158,6 @@ export class MessageManager { const messageId = stringToUuid(message.id); - // Check if the message already exists in the cache or database - const existingMessage = - await this.runtime.messageManager.getMemoryById(messageId); - - if (existingMessage) { - // If the message content is the same, return early - if (existingMessage.content.text === message.content) { - return; - } - } - let shouldIgnore = false; let shouldRespond = true; @@ -271,10 +265,11 @@ export class MessageManager { } if (message.channel.type === ChannelType.GuildVoice) { // For voice channels, use text-to-speech - const audioStream = await this.runtime.speechService.generate( - this.runtime, - content.text - ); + const audioStream = + await this.runtime.speechService.generate( + this.runtime, + content.text + ); await this.voiceManager.playAudioStream( userId, audioStream diff --git a/core/src/clients/twitter/base.ts b/core/src/clients/twitter/base.ts index be5cd05ff4d..2bc06e43d78 100644 --- a/core/src/clients/twitter/base.ts +++ b/core/src/clients/twitter/base.ts @@ -404,7 +404,8 @@ export class ClientBase extends EventEmitter { // Save the missing tweets as memories for (const tweet of tweetsToSave) { const roomId = stringToUuid( - tweet.conversationId ?? "default-room-" + this.runtime.agentId + tweet.conversationId ?? + "default-room-" + this.runtime.agentId ); const tweetuserId = tweet.userId === this.twitterUserId @@ -508,7 +509,9 @@ export class ClientBase extends EventEmitter { // Save the new tweets as memories for (const tweet of tweetsToSave) { - const roomId = stringToUuid(tweet.conversationId ?? "default-room-" + this.runtime.agentId); + const roomId = stringToUuid( + tweet.conversationId ?? "default-room-" + this.runtime.agentId + ); const tweetuserId = tweet.userId === this.twitterUserId ? this.runtime.agentId diff --git a/core/src/core/generation.ts b/core/src/core/generation.ts index 0191676978a..db6eb85c206 100644 --- a/core/src/core/generation.ts +++ b/core/src/core/generation.ts @@ -68,64 +68,61 @@ export async function generateText({ switch (provider) { case ModelProvider.OPENAI: - case ModelProvider.LLAMACLOUD: - { - console.log("Initializing OpenAI model."); - const openai = createOpenAI({ apiKey }); - - const { text: openaiResponse } = await aiGenerateText({ - model: openai.languageModel(model), - prompt: context, - temperature: temperature, - maxTokens: max_response_length, - frequencyPenalty: frequency_penalty, - presencePenalty: presence_penalty, - }); - - response = openaiResponse; - console.log("Received response from OpenAI model."); - break; - } - - case ModelProvider.ANTHROPIC: - { - console.log("Initializing Anthropic model."); - const anthropicVertex = createAnthropicVertex(); - - const { text: anthropicResponse } = await aiGenerateText({ - model: anthropicVertex(model), - prompt: context, - temperature: temperature, - maxTokens: max_response_length, - frequencyPenalty: frequency_penalty, - presencePenalty: presence_penalty, - }); - - response = anthropicResponse; - console.log("Received response from Anthropic model."); - break; - } - - case ModelProvider.GROK: - { - console.log("Initializing Grok model."); - const grok = createGroq({ apiKey }); - - const { text: grokResponse } = await aiGenerateText({ - model: grok.languageModel(model, { - parallelToolCalls: false, - }), - prompt: context, - temperature: temperature, - maxTokens: max_response_length, - frequencyPenalty: frequency_penalty, - presencePenalty: presence_penalty, - }); - - response = grokResponse; - console.log("Received response from Grok model."); - break; - } + case ModelProvider.LLAMACLOUD: { + console.log("Initializing OpenAI model."); + const openai = createOpenAI({ apiKey }); + + const { text: openaiResponse } = await aiGenerateText({ + model: openai.languageModel(model), + prompt: context, + temperature: temperature, + maxTokens: max_response_length, + frequencyPenalty: frequency_penalty, + presencePenalty: presence_penalty, + }); + + response = openaiResponse; + console.log("Received response from OpenAI model."); + break; + } + + case ModelProvider.ANTHROPIC: { + console.log("Initializing Anthropic model."); + const anthropicVertex = createAnthropicVertex(); + + const { text: anthropicResponse } = await aiGenerateText({ + model: anthropicVertex(model), + prompt: context, + temperature: temperature, + maxTokens: max_response_length, + frequencyPenalty: frequency_penalty, + presencePenalty: presence_penalty, + }); + + response = anthropicResponse; + console.log("Received response from Anthropic model."); + break; + } + + case ModelProvider.GROK: { + console.log("Initializing Grok model."); + const grok = createGroq({ apiKey }); + + const { text: grokResponse } = await aiGenerateText({ + model: grok.languageModel(model, { + parallelToolCalls: false, + }), + prompt: context, + temperature: temperature, + maxTokens: max_response_length, + frequencyPenalty: frequency_penalty, + presencePenalty: presence_penalty, + }); + + response = grokResponse; + console.log("Received response from Grok model."); + break; + } case ModelProvider.LLAMALOCAL: console.log("Using local Llama model for text completion."); @@ -140,12 +137,11 @@ export async function generateText({ console.log("Received response from local Llama model."); break; - default: - { - const errorMessage = `Unsupported provider: ${provider}`; - console.error(errorMessage); - throw new Error(errorMessage); - } + default: { + const errorMessage = `Unsupported provider: ${provider}`; + console.error(errorMessage); + throw new Error(errorMessage); + } } return response; diff --git a/core/src/core/models.ts b/core/src/core/models.ts index 1c973bca07a..a6903b9c8fb 100644 --- a/core/src/core/models.ts +++ b/core/src/core/models.ts @@ -25,7 +25,7 @@ const models: Models = { model: { [ModelClass.SMALL]: "gpt-4o-mini", [ModelClass.MEDIUM]: "gpt-4o", - [ModelClass.LARGE]: "gpt-4-turbo", + [ModelClass.LARGE]: "gpt-4o", [ModelClass.EMBEDDING]: "text-embedding-3-small", }, }, @@ -104,13 +104,13 @@ const models: Models = { temperature: 0.3, }, model: { - [ModelClass.SMALL]: "bartowski/Llama-3.2-3B-Instruct-GGUF", + [ModelClass.SMALL]: "NousResearch/Hermes-3-Llama-3.1-8B-GGUF/resolve/main/Hermes-3-Llama-3.1-8B.Q8_0.gguf?download=true", [ModelClass.MEDIUM]: - "NousResearch/Hermes-3-Llama-3.1-8B-GGUF/resolve/main/Hermes-3-Llama-3.1-8B.Q8_0.gguf", // TODO: ?download=true + "NousResearch/Hermes-3-Llama-3.1-8B-GGUF/resolve/main/Hermes-3-Llama-3.1-8B.Q8_0.gguf?download=true", // TODO: ?download=true [ModelClass.LARGE]: - "RichardErkhov/NousResearch_-_Meta-Llama-3.1-70B-gguf", // TODO: ?download=true - [ModelClass.EMBEDDING]: - "togethercomputer/m2-bert-80M-32k-retrieval", + "NousResearch/Hermes-3-Llama-3.1-8B-GGUF/resolve/main/Hermes-3-Llama-3.1-8B.Q8_0.gguf?download=true", + // "RichardErkhov/NousResearch_-_Meta-Llama-3.1-70B-gguf", // TODO: + [ModelClass.EMBEDDING]: "togethercomputer/m2-bert-80M-32k-retrieval" }, }, [ModelProvider.GOOGLE]: { diff --git a/core/src/core/runtime.ts b/core/src/core/runtime.ts index 0eb79542050..dce60d50c95 100644 --- a/core/src/core/runtime.ts +++ b/core/src/core/runtime.ts @@ -273,9 +273,12 @@ export class AgentRuntime implements IAgentRuntime { this.registerContextProvider(provider); }); - if (!this.getSetting("OPENAI_API_KEY") && !this.llamaService) { + if ( + this.modelProvider === ModelProvider.LLAMALOCAL && + !this.llamaService + ) { console.log( - "No OpenAI key found, using LlamaLocal for agent", + "Initializing LlamaLocal service for agent", this.agentId, this.character.name ); diff --git a/core/src/services/speech.ts b/core/src/services/speech.ts index b658cbf645e..94ae9787dc0 100644 --- a/core/src/services/speech.ts +++ b/core/src/services/speech.ts @@ -107,10 +107,7 @@ async function textToSpeech(runtime: IAgentRuntime, text: string) { } export class SpeechService implements ISpeechService { - async generate( - runtime: IAgentRuntime, - text: string - ): Promise { + async generate(runtime: IAgentRuntime, text: string): Promise { // check for elevenlabs API key if (runtime.getSetting("ELEVENLABS_XI_API_KEY")) { return textToSpeech(runtime, text); diff --git a/core/tsconfig.json b/core/tsconfig.json index 43b1ed20e5b..3527f3ee01e 100644 --- a/core/tsconfig.json +++ b/core/tsconfig.json @@ -3,7 +3,6 @@ "target": "es2022", "module": "es2022", "lib": ["es2023", "dom"], - "types": ["node"], "moduleResolution": "bundler", "outDir": "./dist", "rootDir": "./src", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 714e216f3a6..c8c30affc79 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -50,15 +50,12 @@ importers: '@coral-xyz/anchor': specifier: ^0.30.1 version: 0.30.1(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@discordjs/opus': - specifier: github:discordjs/opus - version: https://codeload.github.com/discordjs/opus/tar.gz/31da49d8d2cc6c5a2ab1bfd332033ff7d5f9fb02(encoding@0.1.13) '@discordjs/rest': specifier: 2.4.0 version: 2.4.0 '@discordjs/voice': specifier: 0.17.0 - version: 0.17.0(@discordjs/opus@https://codeload.github.com/discordjs/opus/tar.gz/31da49d8d2cc6c5a2ab1bfd332033ff7d5f9fb02(encoding@0.1.13))(bufferutil@4.0.8)(ffmpeg-static@5.2.0)(utf-8-validate@5.0.10) + version: 0.17.0(@discordjs/opus@0.9.0(encoding@0.1.13))(bufferutil@4.0.8)(ffmpeg-static@5.2.0)(utf-8-validate@5.0.10) '@echogarden/espeak-ng-emscripten': specifier: 0.3.0 version: 0.3.0 @@ -250,7 +247,7 @@ importers: version: 5.4.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) prism-media: specifier: 1.3.5 - version: 1.3.5(@discordjs/opus@https://codeload.github.com/discordjs/opus/tar.gz/31da49d8d2cc6c5a2ab1bfd332033ff7d5f9fb02(encoding@0.1.13))(ffmpeg-static@5.2.0) + version: 1.3.5(@discordjs/opus@0.9.0(encoding@0.1.13))(ffmpeg-static@5.2.0) pumpdotfun-sdk: specifier: 1.3.2 version: 1.3.2(bufferutil@4.0.8)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(rollup@2.79.2)(typescript@5.6.3)(utf-8-validate@5.0.10) @@ -384,9 +381,6 @@ importers: lint-staged: specifier: 15.2.10 version: 15.2.10 - npm-run-all2: - specifier: 7.0.1 - version: 7.0.1 prettier: specifier: 3.3.3 version: 3.3.3 @@ -1443,9 +1437,8 @@ packages: resolution: {integrity: sha512-YJOVVZ545x24mHzANfYoy0BJX5PDyeZlpiJjDkUBM/V/Ao7TFX9lcUvCN4nr0tbr5ubeaXxtEBILUrHtTphVeQ==} hasBin: true - '@discordjs/opus@https://codeload.github.com/discordjs/opus/tar.gz/31da49d8d2cc6c5a2ab1bfd332033ff7d5f9fb02': - resolution: {tarball: https://codeload.github.com/discordjs/opus/tar.gz/31da49d8d2cc6c5a2ab1bfd332033ff7d5f9fb02} - version: 0.9.0 + '@discordjs/opus@0.9.0': + resolution: {integrity: sha512-NEE76A96FtQ5YuoAVlOlB3ryMPrkXbUCTQICHGKb8ShtjXyubGicjRMouHtP1RpuDdm16cDa+oI3aAMo1zQRUQ==} engines: {node: '>=12.0.0'} '@discordjs/rest@2.4.0': @@ -1458,7 +1451,6 @@ packages: '@discordjs/voice@0.17.0': resolution: {integrity: sha512-hArn9FF5ZYi1IkxdJEVnJi+OxlwLV0NJYWpKXsmNOojtGtAZHxmsELA+MZlu2KW1F/K1/nt7lFOfcMXNYweq9w==} - version: 0.17.0 engines: {node: '>=16.11.0'} '@discordjs/ws@1.1.1': @@ -6715,10 +6707,6 @@ packages: resolution: {integrity: sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - json-parse-even-better-errors@4.0.0: - resolution: {integrity: sha512-lR4MXjGNgkJc7tkQ97kb2nuEMnNCyU//XYVH0MKTGcXEiSudQ5MKGKen3C5QubYy0vmq+JGitUg92uuywGEwIA==} - engines: {node: ^18.17.0 || >=20.5.0} - json-schema-traverse@0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} @@ -7139,10 +7127,6 @@ packages: memory-stream@1.0.0: resolution: {integrity: sha512-Wm13VcsPIMdG96dzILfij09PvuS3APtcKNh7M28FsCA/w6+1mjR7hhPmfFNoilX9xU7wTdhsH5lJAm6XNzdtww==} - memorystream@0.3.1: - resolution: {integrity: sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==} - engines: {node: '>= 0.10.0'} - meow@8.1.2: resolution: {integrity: sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==} engines: {node: '>=10'} @@ -7582,6 +7566,9 @@ packages: resolution: {integrity: sha512-SZ40vRiy/+wRTf21hxkkEjPJZpARzUMVcJoQse2EF8qkUWbbO2z7vd5oA/H6bVH6SZQ5STGcu0KRDS7biNRfxw==} engines: {node: '>=10'} + node-addon-api@5.1.0: + resolution: {integrity: sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==} + node-addon-api@8.2.1: resolution: {integrity: sha512-vmEOvxwiH8tlOcv4SyE8RH34rI5/nWVaigUeAUPawC6f0+HoDthwI0vkMu4tbtsZrXq6QXFfrkhjofzKEs5tpA==} engines: {node: ^18 || ^20 || >= 21} @@ -7720,10 +7707,6 @@ packages: resolution: {integrity: sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - npm-normalize-package-bin@4.0.0: - resolution: {integrity: sha512-TZKxPvItzai9kN9H/TkmCtx/ZN/hvr3vUycjlfmH0ootY9yFBzNOpiXAdIn1Iteqsvk4lQn6B5PTrt+n6h8k/w==} - engines: {node: ^18.17.0 || >=20.5.0} - npm-package-arg@11.0.2: resolution: {integrity: sha512-IGN0IAwmhDJwy13Wc8k+4PEbTPhpJnMtfR53ZbOyjkvmEcLS4nCwp6mvMWjS5sUjeiW3mpx6cHmuhKEu9XmcQw==} engines: {node: ^16.14.0 || >=18.0.0} @@ -7740,11 +7723,6 @@ packages: resolution: {integrity: sha512-5+bKQRH0J1xG1uZ1zMNvxW0VEyoNWgJpY9UDuluPFLKDfJ9u2JmmjmTJV1srBGQOROfdBMiVvnH2Zvpbm+xkVA==} engines: {node: ^16.14.0 || >=18.0.0} - npm-run-all2@7.0.1: - resolution: {integrity: sha512-Adbv+bJQ8UTAM03rRODqrO5cx0YU5KCG2CvHtSURiadvdTjjgGJXdbc1oQ9CXBh9dnGfHSoSB1Web/0Dzp6kOQ==} - engines: {node: ^18.17.0 || >=20.5.0, npm: '>= 9'} - hasBin: true - npm-run-path@4.0.1: resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} engines: {node: '>=8'} @@ -8597,7 +8575,6 @@ packages: prism-media@1.3.5: resolution: {integrity: sha512-IQdl0Q01m4LrkN1EGIE9lphov5Hy7WWlH6ulf5QdGePLlPas9p2mhgddTEHrlaXYjjFToM1/rWuwF37VF4taaA==} - version: 1.3.5 peerDependencies: '@discordjs/opus': '>=0.8.0 <1.0.0' ffmpeg-static: ^5.0.2 || ^4.2.7 || ^3.0.0 || ^2.4.0 @@ -8905,10 +8882,6 @@ packages: resolution: {integrity: sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - read-package-json-fast@4.0.0: - resolution: {integrity: sha512-qpt8EwugBWDw2cgE2W+/3oxC+KTez2uSVR8JU9Q36TXPAGCaozfQUs59v4j4GFpWTaw0i6hAZSvOmu1J0uOEUg==} - engines: {node: ^18.17.0 || >=20.5.0} - read-pkg-up@3.0.0: resolution: {integrity: sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw==} engines: {node: '>=4'} @@ -10459,11 +10432,6 @@ packages: engines: {node: ^16.13.0 || >=18.0.0} hasBin: true - which@5.0.0: - resolution: {integrity: sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==} - engines: {node: ^18.17.0 || >=20.5.0} - hasBin: true - whisper-turbo@0.11.0: resolution: {integrity: sha512-h2tGY1VwNAjFsEUkn2fE5NrpyNioHLQu8CSHF2s6N3mhkvPytYSNLhqUNER5OMr8s7bLtV6aQHt4jZkSmE5B6g==} @@ -11952,14 +11920,16 @@ snapshots: transitivePeerDependencies: - encoding - supports-color + optional: true - '@discordjs/opus@https://codeload.github.com/discordjs/opus/tar.gz/31da49d8d2cc6c5a2ab1bfd332033ff7d5f9fb02(encoding@0.1.13)': + '@discordjs/opus@0.9.0(encoding@0.1.13)': dependencies: '@discordjs/node-pre-gyp': 0.4.5(encoding@0.1.13) - node-addon-api: 8.2.1 + node-addon-api: 5.1.0 transitivePeerDependencies: - encoding - supports-color + optional: true '@discordjs/rest@2.4.0': dependencies: @@ -11975,11 +11945,11 @@ snapshots: '@discordjs/util@1.1.1': {} - '@discordjs/voice@0.17.0(@discordjs/opus@https://codeload.github.com/discordjs/opus/tar.gz/31da49d8d2cc6c5a2ab1bfd332033ff7d5f9fb02(encoding@0.1.13))(bufferutil@4.0.8)(ffmpeg-static@5.2.0)(utf-8-validate@5.0.10)': + '@discordjs/voice@0.17.0(@discordjs/opus@0.9.0(encoding@0.1.13))(bufferutil@4.0.8)(ffmpeg-static@5.2.0)(utf-8-validate@5.0.10)': dependencies: '@types/ws': 8.5.12 discord-api-types: 0.37.83 - prism-media: 1.3.5(@discordjs/opus@https://codeload.github.com/discordjs/opus/tar.gz/31da49d8d2cc6c5a2ab1bfd332033ff7d5f9fb02(encoding@0.1.13))(ffmpeg-static@5.2.0) + prism-media: 1.3.5(@discordjs/opus@0.9.0(encoding@0.1.13))(ffmpeg-static@5.2.0) tslib: 2.8.0 ws: 8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) transitivePeerDependencies: @@ -15216,6 +15186,7 @@ snapshots: dependencies: delegates: 1.0.0 readable-stream: 3.6.2 + optional: true are-we-there-yet@3.0.1: dependencies: @@ -18833,8 +18804,6 @@ snapshots: json-parse-even-better-errors@3.0.2: {} - json-parse-even-better-errors@4.0.0: {} - json-schema-traverse@0.4.1: {} json-schema-traverse@1.0.0: {} @@ -19241,6 +19210,7 @@ snapshots: make-dir@3.1.0: dependencies: semver: 6.3.1 + optional: true make-dir@4.0.0: dependencies: @@ -19502,8 +19472,6 @@ snapshots: dependencies: readable-stream: 3.6.2 - memorystream@0.3.1: {} - meow@8.1.2: dependencies: '@types/minimist': 1.2.5 @@ -20092,6 +20060,9 @@ snapshots: dependencies: semver: 7.6.3 + node-addon-api@5.1.0: + optional: true + node-addon-api@8.2.1: {} node-api-headers@1.3.0: {} @@ -20224,6 +20195,7 @@ snapshots: nopt@5.0.0: dependencies: abbrev: 1.1.1 + optional: true nopt@7.2.1: dependencies: @@ -20267,8 +20239,6 @@ snapshots: npm-normalize-package-bin@3.0.1: {} - npm-normalize-package-bin@4.0.0: {} - npm-package-arg@11.0.2: dependencies: hosted-git-info: 7.0.2 @@ -20300,17 +20270,6 @@ snapshots: transitivePeerDependencies: - supports-color - npm-run-all2@7.0.1: - dependencies: - ansi-styles: 6.2.1 - cross-spawn: 7.0.3 - memorystream: 0.3.1 - minimatch: 9.0.5 - pidtree: 0.6.0 - read-package-json-fast: 4.0.0 - shell-quote: 1.8.1 - which: 5.0.0 - npm-run-path@4.0.1: dependencies: path-key: 3.1.1 @@ -20325,6 +20284,7 @@ snapshots: console-control-strings: 1.1.0 gauge: 3.0.2 set-blocking: 2.0.0 + optional: true npmlog@6.0.2: dependencies: @@ -21262,9 +21222,9 @@ snapshots: printable-characters@1.0.42: {} - prism-media@1.3.5(@discordjs/opus@https://codeload.github.com/discordjs/opus/tar.gz/31da49d8d2cc6c5a2ab1bfd332033ff7d5f9fb02(encoding@0.1.13))(ffmpeg-static@5.2.0): + prism-media@1.3.5(@discordjs/opus@0.9.0(encoding@0.1.13))(ffmpeg-static@5.2.0): optionalDependencies: - '@discordjs/opus': https://codeload.github.com/discordjs/opus/tar.gz/31da49d8d2cc6c5a2ab1bfd332033ff7d5f9fb02(encoding@0.1.13) + '@discordjs/opus': 0.9.0(encoding@0.1.13) ffmpeg-static: 5.2.0 prism-react-renderer@2.3.1(react@18.2.0): @@ -21640,11 +21600,6 @@ snapshots: json-parse-even-better-errors: 3.0.2 npm-normalize-package-bin: 3.0.1 - read-package-json-fast@4.0.0: - dependencies: - json-parse-even-better-errors: 4.0.0 - npm-normalize-package-bin: 4.0.0 - read-pkg-up@3.0.0: dependencies: find-up: 2.1.0 @@ -23469,10 +23424,6 @@ snapshots: dependencies: isexe: 3.1.1 - which@5.0.0: - dependencies: - isexe: 3.1.1 - whisper-turbo@0.11.0: dependencies: comlink: 4.3.1