From 25aac5075eeb157bd77ba474a9b71c91070bd8ae Mon Sep 17 00:00:00 2001 From: Gavrila Andrei Date: Thu, 5 Dec 2024 11:39:39 +0200 Subject: [PATCH 01/15] Init mvx plugin --- .env.example | 4 +- agent/package.json | 1 + packages/plugin-multiversx/.npmignore | 6 + packages/plugin-multiversx/eslint.config.mjs | 3 + packages/plugin-multiversx/package.json | 31 + packages/plugin-multiversx/readme.md | 12 + .../src/actions/createToken.ts | 212 +++ .../plugin-multiversx/src/actions/transfer.ts | 262 ++++ packages/plugin-multiversx/src/enviroment.ts | 29 + packages/plugin-multiversx/src/index.ts | 19 + packages/plugin-multiversx/tsconfig.json | 8 + packages/plugin-multiversx/tsup.config.ts | 20 + pnpm-lock.yaml | 1347 ++++++++++++++++- 13 files changed, 1951 insertions(+), 3 deletions(-) create mode 100644 packages/plugin-multiversx/.npmignore create mode 100644 packages/plugin-multiversx/eslint.config.mjs create mode 100644 packages/plugin-multiversx/package.json create mode 100644 packages/plugin-multiversx/readme.md create mode 100644 packages/plugin-multiversx/src/actions/createToken.ts create mode 100644 packages/plugin-multiversx/src/actions/transfer.ts create mode 100644 packages/plugin-multiversx/src/enviroment.ts create mode 100644 packages/plugin-multiversx/src/index.ts create mode 100644 packages/plugin-multiversx/tsconfig.json create mode 100644 packages/plugin-multiversx/tsup.config.ts diff --git a/.env.example b/.env.example index 0d808f655b0..d46236bdc2c 100644 --- a/.env.example +++ b/.env.example @@ -271,6 +271,8 @@ AWS_REGION= AWS_S3_BUCKET= AWS_S3_UPLOAD_PATH= - # Deepgram DEEPGRAM_API_KEY= + +# MultiversX +MVX_WALLET_SECRET_KEY= # MultiversX private key diff --git a/agent/package.json b/agent/package.json index e27d4aa5ee5..304f1b9b099 100644 --- a/agent/package.json +++ b/agent/package.json @@ -41,6 +41,7 @@ "@ai16z/plugin-solana": "workspace:*", "@ai16z/plugin-starknet": "workspace:*", "@ai16z/plugin-tee": "workspace:*", + "@ai16z/plugin-multiversx": "workspace:*", "readline": "1.3.0", "ws": "8.18.0", "yargs": "17.7.2" diff --git a/packages/plugin-multiversx/.npmignore b/packages/plugin-multiversx/.npmignore new file mode 100644 index 00000000000..078562eceab --- /dev/null +++ b/packages/plugin-multiversx/.npmignore @@ -0,0 +1,6 @@ +* + +!dist/** +!package.json +!readme.md +!tsup.config.ts \ No newline at end of file diff --git a/packages/plugin-multiversx/eslint.config.mjs b/packages/plugin-multiversx/eslint.config.mjs new file mode 100644 index 00000000000..c6b6b1a9daa --- /dev/null +++ b/packages/plugin-multiversx/eslint.config.mjs @@ -0,0 +1,3 @@ +import eslintGlobalConfig from "../../eslint.global.mjs"; + +export default [...eslintGlobalConfig]; diff --git a/packages/plugin-multiversx/package.json b/packages/plugin-multiversx/package.json new file mode 100644 index 00000000000..42f0a0c37e0 --- /dev/null +++ b/packages/plugin-multiversx/package.json @@ -0,0 +1,31 @@ +{ + "name": "@ai16z/plugin-multiversx", + "version": "0.1.5-alpha.0", + "main": "dist/index.js", + "type": "module", + "types": "dist/index.d.ts", + "dependencies": { + "@ai16z/eliza": "workspace:*", + "@multiversx/sdk-core": "13.15.0", + "browserify": "^17.0.1", + "esbuild-plugin-polyfill-node": "^0.3.0", + "esmify": "^2.1.1", + "tsup": "8.3.5", + "vitest": "2.1.5" + }, + "devDependencies": { + "eslint": "9.13.0", + "eslint-config-prettier": "9.1.0", + "eslint-plugin-prettier": "5.2.1", + "eslint-plugin-vitest": "0.5.4" + }, + "scripts": { + "build": "tsup --format esm --dts", + "test": "vitest run", + "test:watch": "vitest", + "lint": "eslint . --fix" + }, + "peerDependencies": { + "whatwg-url": "7.1.0" + } +} diff --git a/packages/plugin-multiversx/readme.md b/packages/plugin-multiversx/readme.md new file mode 100644 index 00000000000..0c26c8b537b --- /dev/null +++ b/packages/plugin-multiversx/readme.md @@ -0,0 +1,12 @@ +# MultiversX Plugin + +## Overview + +This plugin aims to be the basis of all interactions with the MultiversX ecosystem. + +## Adding a new action + +Reuse providers and utilities from the existing actions where possible. Add more utilities if you think they will be useful for other actions. + +1. Add the action to the `actions` directory. Try to follow the naming convention of the other actions. +2. Export the action in the `index.ts` file. diff --git a/packages/plugin-multiversx/src/actions/createToken.ts b/packages/plugin-multiversx/src/actions/createToken.ts new file mode 100644 index 00000000000..3c501229b73 --- /dev/null +++ b/packages/plugin-multiversx/src/actions/createToken.ts @@ -0,0 +1,212 @@ +import { + UserWallet, + UserSigner, + ApiNetworkProvider, + UserSecretKey, + TransactionsFactoryConfig, + TokenManagementTransactionsFactory, + Address, + TransactionComputer, +} from "@multiversx/sdk-core"; +import { + elizaLogger, + ActionExample, + Content, + HandlerCallback, + IAgentRuntime, + Memory, + ModelClass, + State, + generateObject, + composeContext, + type Action, +} from "@ai16z/eliza"; + +export interface CreateTokenContent extends Content { + tokenName: string; + tokenTicker: string; + decimals: string; + amount: string; +} + +function isTransferContent( + runtime: IAgentRuntime, + content: any +): content is CreateTokenContent { + console.log("Content for create token", content); + return ( + content.tokenName && + content.tokenTicker && + content.decimals && + content.amount + ); +} + +const createTokenTemplate = `Respond with a JSON markdown block containing only the extracted values. Use null for any values that cannot be determined. + +Example response: +\`\`\`json +{ + "tokenName": "TEST", + "tokenTicker": "TST", + "amount: 100, + "decimals": 18 +} +\`\`\` + +{{recentMessages}} + +Given the recent messages, extract the following information about the requested token creation: +- Token name +- Token ticker +- Amount +- Decimals + +Respond with a JSON markdown block containing only the extracted values.`; + +export default { + name: "CREATE_TOKEN", + similes: ["DEPLOY_TOKEN"], + validate: async (runtime: IAgentRuntime, message: Memory) => { + console.log("Starting new token creation from user:", message.userId); + //add custom validate logic here + /* + const adminIds = runtime.getSetting("ADMIN_USER_IDS")?.split(",") || []; + //console.log("Admin IDs from settings:", adminIds); + + const isAdmin = adminIds.includes(message.userId); + + if (isAdmin) { + //console.log(`Authorized transfer from user: ${message.userId}`); + return true; + } + else + { + //console.log(`Unauthorized transfer attempt from user: ${message.userId}`); + return false; + } + */ + return true; + }, + description: "Create a new token.", + handler: async ( + runtime: IAgentRuntime, + message: Memory, + state: State, + _options: { [key: string]: unknown }, + callback?: HandlerCallback + ) => { + elizaLogger.log("Starting CREATE_TOKEN handler..."); + + // Initialize or update state + if (!state) { + state = (await runtime.composeState(message)) as State; + } else { + state = await runtime.updateRecentMessageState(state); + } + + // Compose transfer context + const transferContext = composeContext({ + state, + template: createTokenTemplate, + }); + + // Generate transfer content + const content = await generateObject({ + runtime, + context: transferContext, + modelClass: ModelClass.SMALL, + }); + + // Validate transfer content + if (!isTransferContent(runtime, content)) { + console.error("Invalid content for TRANSFER_TOKEN action."); + if (callback) { + callback({ + text: "Unable to process transfer request. Invalid content provided.", + content: { error: "Invalid transfer content" }, + }); + } + return false; + } + + try { + const password = runtime.getSetting("MVX_WALLET_PASSWORD"); + const secretKeyHex = runtime.getSetting("MVX_WALLET_SECRET_KEY"); + + const secretKey = UserSecretKey.fromString(secretKeyHex); + + const signer = new UserSigner(secretKey); + const address = signer.getAddress(); + + const apiNetworkProvider = new ApiNetworkProvider( + "https://devnet-api.multiversx.com", + { clientName: "eliza-mvx" } + ); + + const factoryConfig = new TransactionsFactoryConfig({ + chainID: "D", + }); + const factory = new TokenManagementTransactionsFactory({ + config: factoryConfig, + }); + + const decimals = parseInt(content.decimals); + const amount = + Number(content.amount) * 10 ** Number(content.decimals); + + const account = await apiNetworkProvider.getAccount(address); + + const transaction = factory.createTransactionForIssuingFungible({ + sender: new Address(address), + tokenName: content.tokenName, + tokenTicker: content.tokenTicker.toUpperCase(), + initialSupply: BigInt(amount), + numDecimals: BigInt(decimals), + canFreeze: false, + canWipe: false, + canPause: false, + canChangeOwner: false, + canUpgrade: false, + canAddSpecialRoles: false, + }); + + const computer = new TransactionComputer(); + transaction.nonce = BigInt(account.nonce); + const serializedTx = computer.computeBytesForSigning(transaction); + transaction.signature = await signer.sign(serializedTx); + + const txHash = + await apiNetworkProvider.sendTransaction(transaction); + console.log("TxHash", txHash); + return true; + } catch (error) { + console.error("Error during creating token:", error); + if (callback) { + callback({ + text: `Error creating token: ${error.message}`, + content: { error: error.message }, + }); + } + return false; + } + }, + + examples: [ + [ + { + user: "{{user1}}", + content: { + text: "Create a token called TEST with ticker TST, 18 decimals and amount of 10000", + action: "CREATE_TOKEN", + }, + }, + { + user: "{{user2}}", + content: { + text: "Succesfully created token.", + }, + }, + ], + ] as ActionExample[][], +} as Action; diff --git a/packages/plugin-multiversx/src/actions/transfer.ts b/packages/plugin-multiversx/src/actions/transfer.ts new file mode 100644 index 00000000000..736a362a901 --- /dev/null +++ b/packages/plugin-multiversx/src/actions/transfer.ts @@ -0,0 +1,262 @@ +import { + UserWallet, + UserSigner, + Address, + Transaction, + TransactionPayload, + TransactionComputer, + ApiNetworkProvider, + UserSecretKey, + TokenTransfer, + TransferTransactionsFactory, + GasEstimator, +} from "@multiversx/sdk-core"; +import { + elizaLogger, + ActionExample, + Content, + HandlerCallback, + IAgentRuntime, + Memory, + ModelClass, + State, + composeContext, + generateObject, + type Action, +} from "@ai16z/eliza"; + +export interface TransferContent extends Content { + tokenAddress: string; + amount: string | number; + tokenIdentifier?: string; +} + +function isTransferContent( + runtime: IAgentRuntime, + content: any +): content is TransferContent { + console.log("Content for transfer", content); + return ( + typeof content.tokenAddress === "string" && + (typeof content.amount === "string" || + typeof content.amount === "number") + ); +} + +const transferTemplate = `Respond with a JSON markdown block containing only the extracted values. Use null for any values that cannot be determined. + +Example response: +\`\`\`json +{ + "tokenAddress": "erd12r22hx2q4jjt8e0gukxt5shxqjp9ys5nwdtz0gpds25zf8qwtjdqyzfgzm", + "amount": "1", + "tokenIdentifier": "PEPE-3eca7c" +} +\`\`\` + +{{recentMessages}} + +Given the recent messages, extract the following information about the requested token transfer: +- Token address +- Amount to transfer +- Token identifier + +Respond with a JSON markdown block containing only the extracted values.`; + +export default { + name: "SEND_TOKEN", + similes: [ + "TRANSFER_TOKEN", + "TRANSFER_TOKENS", + "SEND_TOKENS", + "SEND_EGLD", + "PAY", + ], + validate: async (runtime: IAgentRuntime, message: Memory) => { + console.log("Executing transfer from user:", message.userId); + //add custom validate logic here + /* + const adminIds = runtime.getSetting("ADMIN_USER_IDS")?.split(",") || []; + //console.log("Admin IDs from settings:", adminIds); + + const isAdmin = adminIds.includes(message.userId); + + if (isAdmin) { + //console.log(`Authorized transfer from user: ${message.userId}`); + return true; + } + else + { + //console.log(`Unauthorized transfer attempt from user: ${message.userId}`); + return false; + } + */ + return true; + }, + description: "Transfer tokens from the agent's wallet to another address", + handler: async ( + runtime: IAgentRuntime, + message: Memory, + state: State, + _options: { [key: string]: unknown }, + callback?: HandlerCallback + ) => { + elizaLogger.log("Starting SEND_TOKEN handler..."); + + // Initialize or update state + if (!state) { + state = (await runtime.composeState(message)) as State; + } else { + state = await runtime.updateRecentMessageState(state); + } + + // Compose transfer context + const transferContext = composeContext({ + state, + template: transferTemplate, + }); + + // Generate transfer content + const content = await generateObject({ + runtime, + context: transferContext, + modelClass: ModelClass.SMALL, + }); + + // Validate transfer content + if (!isTransferContent(runtime, content)) { + console.error("Invalid content for TRANSFER_TOKEN action."); + if (callback) { + callback({ + text: "Unable to process transfer request. Invalid content provided.", + content: { error: "Invalid transfer content" }, + }); + } + return false; + } + + try { + const password = runtime.getSetting("MVX_WALLET_PASSWORD"); + const secretKeyHex = runtime.getSetting("MVX_WALLET_SECRET_KEY"); + + const secretKey = UserSecretKey.fromString(secretKeyHex); + const userWallet = UserWallet.fromSecretKey({ + secretKey, + password, + }); + + const signer = UserSigner.fromWallet(userWallet.toJSON(), password); + const address = signer.getAddress(); + const computer = new TransactionComputer(); + const apiNetworkProvider = new ApiNetworkProvider( + "https://devnet-api.multiversx.com", + { clientName: "eliza-mvx" } + ); + const account = await apiNetworkProvider.getAccount(address); + + if ( + content.tokenIdentifier && + content.tokenIdentifier.toLowerCase() !== "egld" + ) { + console.log(`Sending ESDT ${content.tokenIdentifier}...`); + const factory = new TransferTransactionsFactory( + new GasEstimator() + ); + const token = + await apiNetworkProvider.getFungibleTokenOfAccount( + address, + content.tokenIdentifier + ); + const transfer1 = TokenTransfer.fungibleFromAmount( + content.tokenIdentifier, + content.amount, + Number(token.rawResponse.decimals) + ); + + const esdtTx = factory.createESDTTransfer({ + tokenTransfer: transfer1, + nonce: 7, + sender: address, + receiver: new Address(content.tokenAddress), + chainID: "D", + }); + + esdtTx.nonce = BigInt(account.nonce); + const serializedTx = computer.computeBytesForSigning(esdtTx); + esdtTx.signature = await signer.sign(serializedTx); + + const txHash = await apiNetworkProvider.sendTransaction(esdtTx); + console.log("TX hash:", txHash); + + return true; + } + + const recipient = new Address(content.tokenAddress); + const value = Number(content.amount) * 10 ** 18; + const gasLimit = 500000; + + const payloadData = new TransactionPayload(""); + const transaction = new Transaction({ + nonce: account.nonce + 1, + value, + receiver: recipient, + sender: address, + gasLimit, + data: payloadData, + chainID: "D", + version: 1, + }); + + const serializedTx = computer.computeBytesForSigning(transaction); + transaction.signature = await signer.sign(serializedTx); + + const txHash = + await apiNetworkProvider.sendTransaction(transaction); + console.log("TX hash:", txHash); + + return true; + } catch (error) { + console.error("Error during token transfer:", error); + if (callback) { + callback({ + text: `Error transferring tokens: ${error.message}`, + content: { error: error.message }, + }); + } + return false; + } + }, + + examples: [ + [ + { + user: "{{user1}}", + content: { + text: "Send 1 EGLD to erd12r22hx2q4jjt8e0gukxt5shxqjp9ys5nwdtz0gpds25zf8qwtjdqyzfgzm", + }, + }, + { + user: "{{user2}}", + content: { + text: "I'll send 1 EGLD tokens now...", + action: "SEND_TOKEN", + }, + }, + ], + [ + { + user: "{{user1}}", + content: { + text: "Send 1 TST-a8b23d to erd12r22hx2q4jjt8e0gukxt5shxqjp9ys5nwdtz0gpds25zf8qwtjdqyzfgzm", + }, + }, + { + user: "{{user2}}", + content: { + text: "I'll send 1 TST-a8b23d tokens now...", + action: "SEND_TOKEN", + }, + }, + ], + ] as ActionExample[][], +} as Action; diff --git a/packages/plugin-multiversx/src/enviroment.ts b/packages/plugin-multiversx/src/enviroment.ts new file mode 100644 index 00000000000..edfa4eacf4a --- /dev/null +++ b/packages/plugin-multiversx/src/enviroment.ts @@ -0,0 +1,29 @@ +import { IAgentRuntime } from "@ai16z/eliza"; +import { z } from "zod"; + +export const multiversxEnvSchema = z.object({ +}); + +export type MultiversxConfig = z.infer; + +export async function validateMultiversxConfig( + runtime: IAgentRuntime +): Promise { + try { + const config = { + + }; + + return multiversxEnvSchema.parse(config); + } catch (error) { + if (error instanceof z.ZodError) { + const errorMessages = error.errors + .map((err) => `${err.path.join(".")}: ${err.message}`) + .join("\n"); + throw new Error( + `MultiversX configuration validation failed:\n${errorMessages}` + ); + } + throw error; + } +} diff --git a/packages/plugin-multiversx/src/index.ts b/packages/plugin-multiversx/src/index.ts new file mode 100644 index 00000000000..462f9760e87 --- /dev/null +++ b/packages/plugin-multiversx/src/index.ts @@ -0,0 +1,19 @@ +import { Plugin } from "@ai16z/eliza"; +import transfer from "./actions/transfer"; +import createToken from "./actions/createToken"; + +export const PROVIDER_CONFIG = { + MVX_API: "https://devnet-api.multiversx.com/", + MAX_RETRIES: 3, + RETRY_DELAY: 2000, +}; + +export const multiversxPlugin: Plugin = { + name: "multiversx", + description: "MultiversX Plugin for Eliza", + actions: [transfer, createToken], + evaluators: [], + providers: [], +}; + +export default multiversxPlugin; diff --git a/packages/plugin-multiversx/tsconfig.json b/packages/plugin-multiversx/tsconfig.json new file mode 100644 index 00000000000..005fbac9d36 --- /dev/null +++ b/packages/plugin-multiversx/tsconfig.json @@ -0,0 +1,8 @@ +{ + "extends": "../core/tsconfig.json", + "compilerOptions": { + "outDir": "dist", + "rootDir": "src" + }, + "include": ["src/**/*.ts"] +} diff --git a/packages/plugin-multiversx/tsup.config.ts b/packages/plugin-multiversx/tsup.config.ts new file mode 100644 index 00000000000..4f0ac8513de --- /dev/null +++ b/packages/plugin-multiversx/tsup.config.ts @@ -0,0 +1,20 @@ +import { defineConfig } from "tsup"; +import { polyfillNode } from "esbuild-plugin-polyfill-node"; + +export default defineConfig({ + entry: ["src/index.ts"], + outDir: "dist", + sourcemap: true, + clean: true, + format: ["esm"], // Ensure you're targeting CommonJS + external: [ + "dotenv", // Externalize dotenv to prevent bundling + "@reflink/reflink", + "@node-llama-cpp", + "agentkeepalive", + "zod", + "zlib", + // Add other modules you want to externalize + ], + esbuildPlugins: [polyfillNode()], +}); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1332136fa17..53681dc2f5b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -17,6 +17,9 @@ importers: '@coinbase/coinbase-sdk': specifier: 0.10.0 version: 0.10.0(bufferutil@4.0.8)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8) + '@deepgram/sdk': + specifier: ^3.9.0 + version: 3.9.0(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10) '@vitest/eslint-plugin': specifier: 1.0.1 version: 1.0.1(@typescript-eslint/utils@8.16.0(eslint@9.16.0(jiti@2.4.0))(typescript@5.6.3))(eslint@9.16.0(jiti@2.4.0))(typescript@5.6.3)(vitest@2.1.5(@types/node@22.8.4)(jsdom@25.0.1(bufferutil@4.0.8)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) @@ -159,6 +162,9 @@ importers: '@ai16z/plugin-intiface': specifier: workspace:* version: link:../packages/plugin-intiface + '@ai16z/plugin-multiversx': + specifier: workspace:* + version: link:../packages/plugin-multiversx '@ai16z/plugin-node': specifier: workspace:* version: link:../packages/plugin-node @@ -1092,6 +1098,46 @@ importers: specifier: 7.1.0 version: 7.1.0 + packages/plugin-multiversx: + dependencies: + '@ai16z/eliza': + specifier: workspace:* + version: link:../core + '@multiversx/sdk-core': + specifier: 13.15.0 + version: 13.15.0(bignumber.js@9.1.2)(protobufjs@7.4.0) + browserify: + specifier: ^17.0.1 + version: 17.0.1 + esbuild-plugin-polyfill-node: + specifier: ^0.3.0 + version: 0.3.0(esbuild@0.24.0) + esmify: + specifier: ^2.1.1 + version: 2.1.1 + tsup: + specifier: 8.3.5 + version: 8.3.5(@swc/core@1.10.1(@swc/helpers@0.5.15))(jiti@2.4.0)(postcss@8.4.49)(typescript@5.6.3)(yaml@2.6.1) + vitest: + specifier: 2.1.5 + version: 2.1.5(@types/node@22.8.4)(jsdom@25.0.1(bufferutil@4.0.8)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0) + whatwg-url: + specifier: 7.1.0 + version: 7.1.0 + devDependencies: + eslint: + specifier: 9.13.0 + version: 9.13.0(jiti@2.4.0) + eslint-config-prettier: + specifier: 9.1.0 + version: 9.1.0(eslint@9.13.0(jiti@2.4.0)) + eslint-plugin-prettier: + specifier: 5.2.1 + version: 5.2.1(@types/eslint@9.6.1)(eslint-config-prettier@9.1.0(eslint@9.13.0(jiti@2.4.0)))(eslint@9.13.0(jiti@2.4.0))(prettier@3.4.1) + eslint-plugin-vitest: + specifier: 0.5.4 + version: 0.5.4(@typescript-eslint/eslint-plugin@8.16.0(@typescript-eslint/parser@8.16.0(eslint@9.16.0(jiti@2.4.0))(typescript@5.6.3))(eslint@9.16.0(jiti@2.4.0))(typescript@5.6.3))(eslint@9.13.0(jiti@2.4.0))(typescript@5.6.3)(vitest@2.1.5(@types/node@22.8.4)(jsdom@25.0.1(bufferutil@4.0.8)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)) + packages/plugin-node: dependencies: '@ai16z/eliza': @@ -3026,6 +3072,14 @@ packages: peerDependencies: postcss: ^8.4 + '@deepgram/captions@1.2.0': + resolution: {integrity: sha512-8B1C/oTxTxyHlSFubAhNRgCbQ2SQ5wwvtlByn8sDYZvdDtdn/VE2yEPZ4BvUnrKWmsbTQY6/ooLV+9Ka2qmDSQ==} + engines: {node: '>=18.0.0'} + + '@deepgram/sdk@3.9.0': + resolution: {integrity: sha512-X/7JzoYjCObyEaPb2Dgnkwk2LwRe4bw0FJJCLdkjpnFfJCFgA9IWgRD8FEUI6/hp8dW/CqqXkGPA2Q3DIsVG8A==} + engines: {node: '>=18.0.0'} + '@derhuerst/http-basic@8.2.4': resolution: {integrity: sha512-F9rL9k9Xjf5blCz8HsJRO4diy111cayL2vkY2XE4r4t3n0yPXVYy3KD3nJ1qbrSn9743UWSXH4IwuCa/HWlGFw==} engines: {node: '>=6.0.0'} @@ -3088,6 +3142,7 @@ packages: resolution: {integrity: sha512-hArn9FF5ZYi1IkxdJEVnJi+OxlwLV0NJYWpKXsmNOojtGtAZHxmsELA+MZlu2KW1F/K1/nt7lFOfcMXNYweq9w==} version: 0.17.0 engines: {node: '>=16.11.0'} + deprecated: This version uses deprecated encryption modes. Please use a newer version. '@discordjs/ws@1.1.1': resolution: {integrity: sha512-PZ+vLpxGCRtmr2RMkqh8Zp+BenUaJqlS6xhgWKEZcgC/vfHLEzpHtKkB0sl3nZWpwtcKk6YWy+pU3okL2I97FA==} @@ -3796,10 +3851,18 @@ packages: resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + '@eslint/config-array@0.18.0': + resolution: {integrity: sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/config-array@0.19.1': resolution: {integrity: sha512-fo6Mtm5mWyKjA/Chy1BYTdn5mGJoDNjC7C64ug20ADsRDGrA85bN3uK3MaKbeRkRuuIEAR5N33Jr1pbm411/PA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/core@0.7.0': + resolution: {integrity: sha512-xp5Jirz5DyPYlPiKat8jaq0EmYvDXKKpzTbxXMpT9eqlRJkRKIz9AGMdlvYjih+im+QlhWrpvVjl8IPC/lHlUw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/core@0.9.1': resolution: {integrity: sha512-GuUdqkyyzQI5RMIWkHhvTWLCyLo1jNK3vzkSyaExH5kHPDHcuL2VOpHjmMY+y3+NC69qAKToBqldTBgYeLSr9Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -3816,6 +3879,10 @@ packages: resolution: {integrity: sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@eslint/js@9.13.0': + resolution: {integrity: sha512-IFLyoY4d72Z5y/6o/BazFBezupzI/taV8sGumxTAVw3lXG9A6md1Dc34T9s1FoD/an9pJH8RHbAxsaEbBed9lA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/js@9.16.0': resolution: {integrity: sha512-tw2HxzQkrbeuvyj1tG2Yqq+0H9wGoI2IMk4EOsQeX+vmd75FtJAzf+gTA69WF+baUKRYQ3x2kbLE08js5OsTVg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -4199,6 +4266,9 @@ packages: '@jridgewell/trace-mapping@0.3.9': resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} + '@jspm/core@2.1.0': + resolution: {integrity: sha512-3sRl+pkyFY/kLmHl0cgHiFp2xEqErA8N3ECjMs7serSUBmoJ70lBa0PG5t0IM6WJgdZNyyI0R8YFfi5wM8+mzg==} + '@kikobeats/time-span@1.0.5': resolution: {integrity: sha512-txRAdmi35N1wnsLS1AO5mTlbY5Cv5/61WXqek2y3L9Q7u4mgdUVq819so5xe753hL5gYeLzlWoJ/VJfXg9nx8g==} engines: {node: '>= 18'} @@ -4304,6 +4374,19 @@ packages: resolution: {integrity: sha512-y+l1PNV0XDyY8sM3YtuMLK5vE3/hkfId+Do8pLo/OPxfxuFAUwcGz3oiiUuV46/aBpwTzZ+mRWVMtlSKbradhw==} engines: {node: '>= 14'} + '@multiversx/sdk-bls-wasm@0.3.5': + resolution: {integrity: sha512-c0tIdQUnbBLSt6NYU+OpeGPYdL0+GV547HeHT8Xc0BKQ7Cj0v82QUoA2QRtWrR1G4MNZmLsIacZSsf6DrIS2Bw==} + engines: {node: '>=8.9.0'} + + '@multiversx/sdk-core@13.15.0': + resolution: {integrity: sha512-5RRLMxSDd0XZGopIrPsWLbA8nWxC7WQYjea8/jPvkRApLyggheQU8gaC6ZSgSE0EBrSHl+oC3+YH8nbVayZ2gw==} + peerDependencies: + bignumber.js: ^9.0.1 + protobufjs: ^7.2.6 + + '@multiversx/sdk-transaction-decoder@1.0.2': + resolution: {integrity: sha512-j43QsKquu8N51WLmVlJ7dV2P3A1448R7/ktvl8r3i6wRMpfdtzDPNofTdHmMRT7DdQdvs4+RNgz8hVKL11Etsw==} + '@napi-rs/wasm-runtime@0.2.4': resolution: {integrity: sha512-9zESzOO5aDByvhIAsOy9TbpZ0Ur2AJbUI7UT73kcUTS2mxAMHOBaa1st/jAymNoCtvrit99kkzT1FZuXVcgfIQ==} @@ -4362,6 +4445,12 @@ packages: resolution: {integrity: sha512-UTMhXK9SeDhFJVrHeUJ5uZlI6ajXg10O6Ddocf9S6GjbSBVZsJo88HzKwXznNfGpMTRDyJkqMjNDPYgf0qFWnw==} engines: {node: ^14.21.3 || >=16} + '@noble/ed25519@1.7.3': + resolution: {integrity: sha512-iR8GBkDt0Q3GyaVcIu7mSsVIqnFbkbRzGLWlvhwunacoLwt4J3swfKhfaM6rN6WY+TBGoYT1GtT1mIh2/jGbRQ==} + + '@noble/hashes@1.3.0': + resolution: {integrity: sha512-ilHEACi9DwqJB0pw7kv+Apvh50jiiSyR/cQ3y4W7lOR5mhvn/50FLUfsnfJz0BDZtl/RR16kXvptiv6q1msYZg==} + '@noble/hashes@1.3.2': resolution: {integrity: sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==} engines: {node: '>= 16'} @@ -4995,6 +5084,10 @@ packages: resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} + '@pkgr/core@0.1.1': + resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + '@pm2/agent@2.0.4': resolution: {integrity: sha512-n7WYvvTJhHLS2oBb1PjOtgLpMhgImOq8sXkPBw6smeg9LJBWZjiEgPKOpR8mn9UJZsB5P3W4V/MyvNnp31LKeA==} @@ -6594,6 +6687,9 @@ packages: '@types/node@10.17.60': resolution: {integrity: sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==} + '@types/node@11.11.6': + resolution: {integrity: sha512-Exw4yUWMBXM3X+8oqzJNRqZSwUAaS4+7NdvHqQuFi/d+synz++xmX3QIf+BFqneW8N31R8Ky+sikfZUXq07ggQ==} + '@types/node@12.20.55': resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} @@ -6797,6 +6893,10 @@ packages: resolution: {integrity: sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==} engines: {node: ^16.0.0 || >=18.0.0} + '@typescript-eslint/scope-manager@7.18.0': + resolution: {integrity: sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==} + engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/scope-manager@8.11.0': resolution: {integrity: sha512-Uholz7tWhXmA4r6epo+vaeV7yjdKy5QFCERMjs1kMVsLRKIrSdM6o21W2He9ftp5PP6aWOVpD5zvrvuHZC0bMQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -6838,6 +6938,10 @@ packages: resolution: {integrity: sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==} engines: {node: ^16.0.0 || >=18.0.0} + '@typescript-eslint/types@7.18.0': + resolution: {integrity: sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==} + engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/types@8.11.0': resolution: {integrity: sha512-tn6sNMHf6EBAYMvmPUaKaVeYvhUsrE6x+bXQTxjQRp360h1giATU0WvgeEys1spbvb5R+VpNOZ+XJmjD8wOUHw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -6855,6 +6959,15 @@ packages: typescript: optional: true + '@typescript-eslint/typescript-estree@7.18.0': + resolution: {integrity: sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + '@typescript-eslint/typescript-estree@8.11.0': resolution: {integrity: sha512-yHC3s1z1RCHoCz5t06gf7jH24rr3vns08XXhfEqzYpd6Hll3z/3g23JRi0jM8A47UFKNc3u/y5KIMx8Ynbjohg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -6879,6 +6992,12 @@ packages: peerDependencies: eslint: ^7.0.0 || ^8.0.0 + '@typescript-eslint/utils@7.18.0': + resolution: {integrity: sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + '@typescript-eslint/utils@8.11.0': resolution: {integrity: sha512-CYiX6WZcbXNJV7UNB4PLDIBtSdRmRI/nb0FMyqHPTQD1rMjA0foPLaPUV39C/MxkTd/QKSeX+Gb34PPsDVC35g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -6899,6 +7018,10 @@ packages: resolution: {integrity: sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==} engines: {node: ^16.0.0 || >=18.0.0} + '@typescript-eslint/visitor-keys@7.18.0': + resolution: {integrity: sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==} + engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/visitor-keys@8.11.0': resolution: {integrity: sha512-EaewX6lxSjRJnc+99+dqzTeoDZUfyrA52d2/HRrkI830kgovWsmIiTfmr0NZorzqic7ga+1bS60lRBUgR3n/Bw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -7239,15 +7362,27 @@ packages: peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + acorn-node@1.8.2: + resolution: {integrity: sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==} + acorn-typescript@1.4.13: resolution: {integrity: sha512-xsc9Xv0xlVfwp2o7sQ+GCQ1PgbkdcpWdTzrwXxO3xDMTAywVS3oXVOcOHuRjAPkS4P9b+yc/qNF15460v+jp4Q==} peerDependencies: acorn: '>=8.9.0' + acorn-walk@7.2.0: + resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==} + engines: {node: '>=0.4.0'} + acorn-walk@8.3.4: resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} engines: {node: '>=0.4.0'} + acorn@7.4.1: + resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} + engines: {node: '>=0.4.0'} + hasBin: true + acorn@8.14.0: resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} engines: {node: '>=0.4.0'} @@ -7381,6 +7516,10 @@ packages: engines: {'0': node >= 0.8.0} hasBin: true + ansi-regex@2.1.1: + resolution: {integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==} + engines: {node: '>=0.10.0'} + ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} @@ -7389,6 +7528,10 @@ packages: resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} engines: {node: '>=12'} + ansi-styles@2.2.1: + resolution: {integrity: sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==} + engines: {node: '>=0.10.0'} + ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} @@ -7486,6 +7629,9 @@ packages: resolution: {integrity: sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==} engines: {node: '>=8'} + asn1.js@4.10.1: + resolution: {integrity: sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==} + asn1@0.2.6: resolution: {integrity: sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==} @@ -7497,6 +7643,9 @@ packages: resolution: {integrity: sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==} engines: {node: '>=0.8'} + assert@1.5.1: + resolution: {integrity: sha512-zzw1uCAgLbsKwBfFc8CX78DDg+xZeBksSO3vwVIDDN5i94eOrPsSSyiVhmsSABFDM/OcpE2aagCat9dnWQLG1A==} + assertion-error@2.0.1: resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} engines: {node: '>=12'} @@ -7546,6 +7695,10 @@ packages: peerDependencies: postcss: ^8.1.0 + available-typed-arrays@1.0.7: + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} + engines: {node: '>= 0.4'} + aws-sign2@0.7.0: resolution: {integrity: sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==} @@ -7581,6 +7734,9 @@ packages: b4a@1.6.7: resolution: {integrity: sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==} + babel-code-frame@6.26.0: + resolution: {integrity: sha512-XqYMR2dfdGMW+hd0IUZ2PwK+fGeFkOxZJ0wY+JaQAHzt1Zx8LcvpiZD2NiGkEG8qx0CfkAOr5xt76d1e8vG90g==} + babel-jest@29.7.0: resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -7594,9 +7750,15 @@ packages: '@babel/core': ^7.12.0 webpack: '>=5' + babel-messages@6.23.0: + resolution: {integrity: sha512-Bl3ZiA+LjqaMtNYopA9TYE9HP1tQ+E5dLxE0XrAzcIJeK2UqF0/EaqXwBn9esd4UmTfEab+P+UYQ1GnioFIb/w==} + babel-plugin-dynamic-import-node@2.3.3: resolution: {integrity: sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==} + babel-plugin-import-to-require@1.0.0: + resolution: {integrity: sha512-dc843CwrFivjO8AVgxcHvxl0cb7J7Ed8ZGFP8+PjH3X1CnyzYtAU1WL1349m9Wc/+oqk4ETx2+cIEO2jlp3XyQ==} + babel-plugin-istanbul@6.1.1: resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} engines: {node: '>=8'} @@ -7631,6 +7793,22 @@ packages: peerDependencies: '@babel/core': ^7.0.0 + babel-runtime@6.26.0: + resolution: {integrity: sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==} + + babel-template@6.26.0: + resolution: {integrity: sha512-PCOcLFW7/eazGUKIoqH97sO9A2UYMahsn/yRQ7uOk37iutwjq7ODtcTNF+iFDSHNfkctqsLRjLP7URnOx0T1fg==} + + babel-traverse@6.26.0: + resolution: {integrity: sha512-iSxeXx7apsjCHe9c7n8VtRXGzI2Bk1rBSOJgCCjfyXb6v1aCqE1KSEpq/8SXuVN8Ka/Rh1WDTF0MDzkvTA4MIA==} + + babel-types@6.26.0: + resolution: {integrity: sha512-zhe3V/26rCWsEZK8kZN+HaQj5yQ1CilTObixFzKW1UWjqG7618Twz6YEsCnjfg5gBcJh02DrpCkS9h98ZqDY+g==} + + babylon@6.18.0: + resolution: {integrity: sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==} + hasBin: true + bail@1.0.5: resolution: {integrity: sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==} @@ -7685,6 +7863,9 @@ packages: bcrypt-pbkdf@1.0.2: resolution: {integrity: sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==} + bech32@1.1.4: + resolution: {integrity: sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==} + bech32@2.0.0: resolution: {integrity: sha512-LcknSilhIGatDAsY1ak2I8VtGaHNhgMSYVxFrGLXv+xLHytaKZKcaUJJUE7qmBr7h33o5YQwP55pMI0xmkpJwg==} @@ -7742,6 +7923,9 @@ packages: resolution: {integrity: sha512-aOGy88DDlVUhspIXJN+dVEtclhIsfAUppD43V0j40cPTld3pv/0X/MlrZSZ6jowIaQQzFwP8M6rFU2z2mVYjDQ==} engines: {node: '>=6.0.0'} + bip39@3.0.2: + resolution: {integrity: sha512-J4E1r2N0tUylTKt07ibXvhpT2c5pyAFgvuA5q1H9uDy6dEGpjV8jmymh3MTYJDLCNbIVClSB9FbND49I6N24MQ==} + bip39@3.1.0: resolution: {integrity: sha512-c9kiwdk45Do5GL0vJMe7tS95VjCii65mYAH7DfWl3uW8AVzXKQVUm64i3hzVybBDMp9r7j9iNxR85+ul8MdN/A==} @@ -7752,6 +7936,12 @@ packages: bl@4.1.0: resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + blake2b-wasm@1.1.7: + resolution: {integrity: sha512-oFIHvXhlz/DUgF0kq5B1CqxIDjIJwh9iDeUUGQUcvgiGz7Wdw03McEO7CfLBy7QKGdsydcMCgO9jFNBAFCtFcA==} + + blake2b@2.1.3: + resolution: {integrity: sha512-pkDss4xFVbMb4270aCyGD3qLv92314Et+FsKzilCLxDz5DuZ2/1g3w4nmBbu6nKApPspnjG7JcwTjGZnduB1yg==} + blessed@0.1.81: resolution: {integrity: sha512-LoF5gae+hlmfORcG1M5+5XZi4LBmvlXTzwJWzUlPryN/SJdSflZvROM2TwkT0GMpq7oqT48NRd4GS7BiVBc5OQ==} engines: {node: '>= 0.8.0'} @@ -7813,6 +8003,38 @@ packages: browser-headers@0.4.1: resolution: {integrity: sha512-CA9hsySZVo9371qEHjHZtYxV2cFtVj5Wj/ZHi8ooEsrtm4vOnl9Y9HmyYWk9q+05d7K3rdoAE0j3MVEFVvtQtg==} + browser-pack@6.1.0: + resolution: {integrity: sha512-erYug8XoqzU3IfcU8fUgyHqyOXqIE4tUTTQ+7mqUjQlvnXkOO6OlT9c/ZoJVHYoAaqGxr09CN53G7XIsO4KtWA==} + hasBin: true + + browser-resolve@2.0.0: + resolution: {integrity: sha512-7sWsQlYL2rGLy2IWm8WL8DCTJvYLc/qlOnsakDac87SOoCd16WLsaAMdCiAqsTNHIe+SXfaqyxyo6THoWqs8WQ==} + + browserify-aes@1.2.0: + resolution: {integrity: sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==} + + browserify-cipher@1.0.1: + resolution: {integrity: sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==} + + browserify-des@1.0.2: + resolution: {integrity: sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==} + + browserify-rsa@4.1.1: + resolution: {integrity: sha512-YBjSAiTqM04ZVei6sXighu679a3SqWORA3qZTEqZImnlkDIFtKc6pNutpjyZ8RJTjQtuYfeetkxM11GwoYXMIQ==} + engines: {node: '>= 0.10'} + + browserify-sign@4.2.3: + resolution: {integrity: sha512-JWCZW6SKhfhjJxO8Tyiiy+XYB7cqd2S5/+WeYHsKdNKFlCBhKbblba1A/HN/90YwtxKc8tCErjffZl++UNmGiw==} + engines: {node: '>= 0.12'} + + browserify-zlib@0.2.0: + resolution: {integrity: sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==} + + browserify@17.0.1: + resolution: {integrity: sha512-pxhT00W3ylMhCHwG5yfqtZjNnFuX5h2IJdaBfSo4ChaaBsIp9VLrEMQ1bHV+Xr1uLPXuNDDM1GlJkjli0qkRsw==} + engines: {node: '>= 0.8'} + hasBin: true + browserslist@4.24.3: resolution: {integrity: sha512-1CPmv8iobE2fyRMV97dAcMVegvvWKxmq94hkLiAkUGwKVTyDLw33K+ZxiFrREKmmps4rIw6grcCFCnTMSZ/YiA==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} @@ -7862,6 +8084,12 @@ packages: buffer-more-ints@1.0.0: resolution: {integrity: sha512-EMetuGFz5SLsT0QTnXzINh4Ksr+oo4i+UGTXEshiGCQWnsgSs7ZhJ8fzlwQ+OzEMs0MpDAMr1hxnblp5a4vcHg==} + buffer-xor@1.0.3: + resolution: {integrity: sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==} + + buffer@5.2.1: + resolution: {integrity: sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg==} + buffer@5.7.1: resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} @@ -7876,6 +8104,9 @@ packages: resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} engines: {node: '>=6'} + builtin-status-codes@3.0.0: + resolution: {integrity: sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==} + bundle-require@5.0.0: resolution: {integrity: sha512-GuziW3fSSmopcx4KRymQEJVbZUfqlCqcq7dvs6TYwKRZiegK/2buMxQTPs6MGlNv50wms1699qYO54R8XfRX4w==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -7936,6 +8167,9 @@ packages: resolution: {integrity: sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==} engines: {node: '>=8'} + cached-path-relative@1.1.0: + resolution: {integrity: sha512-WF0LihfemtesFcJgO7xfOoOcnWzY/QHR4qeDqV44jPU3HTI54+LnfXK3SA27AVVGCdZFgjjFFaqUA9Jx7dMJZA==} + call-bind-apply-helpers@1.0.1: resolution: {integrity: sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==} engines: {node: '>= 0.4'} @@ -8006,6 +8240,10 @@ packages: resolution: {integrity: sha512-aGtmf24DW6MLHHG5gCx4zaI3uBq3KRtxeVs0DjFH6Z0rDNbsvTxFASFvdj79pxjxZ8/5u3PIiN3IwEIQkiiuPw==} engines: {node: '>=12'} + chalk@1.1.3: + resolution: {integrity: sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==} + engines: {node: '>=0.10.0'} + chalk@3.0.0: resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} engines: {node: '>=8'} @@ -8266,6 +8504,9 @@ packages: resolution: {integrity: sha512-VcQB1ziGD0NXrhKxiwyNbCDmRzs/OShMs2GqW2DlU2A/Sd0nQxE1oWDAE5O0ygSx5mgQOn9eIFh7yKPgFRVkPQ==} engines: {node: '>=10'} + combine-source-map@0.8.0: + resolution: {integrity: sha512-UlxQ9Vw0b/Bt/KYwCFqdEwsQ1eL8d1gibiFb7lxQJFdvTgc2hIZi6ugsg+kyhzhPV+QEpUiEIwInIAIrgoEkrg==} + combined-stream@1.0.8: resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} engines: {node: '>= 0.8'} @@ -8382,6 +8623,9 @@ packages: resolution: {integrity: sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==} engines: {node: ^14.18.0 || >=16.10.0} + console-browserify@1.2.0: + resolution: {integrity: sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==} + console-control-strings@1.1.0: resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} @@ -8392,6 +8636,9 @@ packages: consolidated-events@2.0.2: resolution: {integrity: sha512-2/uRVMdRypf5z/TW/ncD/66l75P5hH2vM/GR8Jf8HLc2xnfJtmina6F6du8+v4Z2vTrMo7jC+W1tmEEuuELgkQ==} + constants-browserify@1.0.0: + resolution: {integrity: sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==} + content-disposition@0.5.2: resolution: {integrity: sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA==} engines: {node: '>= 0.6'} @@ -8452,6 +8699,9 @@ packages: resolution: {integrity: sha512-lOETlkIeYSJWcbbcvjRKGxVMXJR+8+OQb/mTPbA4ObPMytYIsUbuOE0Jzy60hjARYszq1id0j8KgVhC+WGZVTg==} engines: {node: '>=12'} + convert-source-map@1.1.3: + resolution: {integrity: sha512-Y8L5rp6jo+g9VEPgvqNfEopjTR4OTYct8lXlS8iVQdmnjDvbdbzYe9rjtFCB9egC86JoNCU61WRY+ScjkZpnIg==} + convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} @@ -8481,6 +8731,10 @@ packages: core-js-pure@3.39.0: resolution: {integrity: sha512-7fEcWwKI4rJinnK+wLTezeg2smbFFdSBP6E2kQZNbnzM2s1rpKQ6aaRteZSSg7FLU3P0HGGVo/gbpfanU36urg==} + core-js@2.6.12: + resolution: {integrity: sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==} + deprecated: core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js. + core-js@3.39.0: resolution: {integrity: sha512-raM0ew0/jJUqkJ0E6e8UDtl+y/7ktFivgWvqw8dNSQeNWoSDLvQ1H/RN3aPXB9tBd4/FhyR4RDPGhsNIMsAn7g==} @@ -8525,9 +8779,15 @@ packages: typescript: optional: true + create-ecdh@4.0.4: + resolution: {integrity: sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==} + create-hash@1.2.0: resolution: {integrity: sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==} + create-hmac@1.1.7: + resolution: {integrity: sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==} + create-jest@29.7.0: resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -8560,6 +8820,10 @@ packages: crossws@0.3.1: resolution: {integrity: sha512-HsZgeVYaG+b5zA+9PbIPGq4+J/CJynJuearykPsXx4V/eMhyQ5EDVg3Ak2FBZtVXCiOLu/U7IiwDHTr9MA+IKw==} + crypto-browserify@3.12.1: + resolution: {integrity: sha512-r4ESw/IlusD17lgQi1O20Fa3qNnsckR126TdUuBgAu7GBYSIPvdNyONd3Zrxh0xCwA4+6w/TDArBPsMvhur+KQ==} + engines: {node: '>= 0.10'} + crypto-hash@1.3.0: resolution: {integrity: sha512-lyAZ0EMyjDkVvz8WOeVnuCPvKVBXcMv1l5SVqO1yC7PzTwrD/pPje/BIRbWhMoPe436U+Y2nD7f5bFx0kt+Sbg==} engines: {node: '>=8'} @@ -8887,6 +9151,9 @@ packages: resolution: {integrity: sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==} engines: {node: '>=8'} + dash-ast@1.0.0: + resolution: {integrity: sha512-Vy4dx7gquTeMcQR/hDkYLGUnwVil6vk4FOOct+djUnHOUWt+zJPJAaRIXaAFkPXtJjvlY7o3rfRu0/3hpnwoUA==} + dashdash@1.14.1: resolution: {integrity: sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==} engines: {node: '>=0.10'} @@ -9052,6 +9319,9 @@ packages: resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} engines: {node: '>= 0.4'} + defined@1.0.1: + resolution: {integrity: sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==} + defu@6.1.4: resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} @@ -9095,10 +9365,17 @@ packages: deprecation@2.3.1: resolution: {integrity: sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==} + deps-sort@2.0.1: + resolution: {integrity: sha512-1orqXQr5po+3KI6kQb9A4jnXT1PBwggGl2d7Sq2xsnOeI9GPcE/tGcF9UiSZtZBM7MukY4cAh7MemS6tZYipfw==} + hasBin: true + dequal@2.0.3: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} + des.js@1.1.0: + resolution: {integrity: sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==} + destr@2.0.3: resolution: {integrity: sha512-2N3BOUU4gYMpTP24s5rF5iP7BDr7uNTCs4ozw3kf/eKfvWSIu93GEBi5m427YoyJoeOzQ5smuu4nNAPGb8idSQ==} @@ -9142,6 +9419,11 @@ packages: engines: {node: '>= 4.0.0'} hasBin: true + detective@5.2.1: + resolution: {integrity: sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==} + engines: {node: '>=0.8.0'} + hasBin: true + devlop@1.1.0: resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} @@ -9166,6 +9448,9 @@ packages: resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} engines: {node: '>=0.3.1'} + diffie-hellman@5.0.3: + resolution: {integrity: sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==} + dijkstrajs@1.0.3: resolution: {integrity: sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==} @@ -9223,6 +9508,10 @@ packages: dom-serializer@2.0.0: resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} + domain-browser@1.2.0: + resolution: {integrity: sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==} + engines: {node: '>=0.4', npm: '>=1.2'} + domelementtype@2.3.0: resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} @@ -9269,6 +9558,9 @@ packages: resolution: {integrity: sha512-9+Sj30DIu+4KvHqMfLUGLFYL2PkURSYMVXJyXe92nFRvlYq5hBjLEhblKB+vkd/WVlUYMWigiY07T91Fkk0+4A==} engines: {node: '>= 0.4'} + duplexer2@0.1.4: + resolution: {integrity: sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==} + duplexer@0.1.2: resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} @@ -9301,6 +9593,12 @@ packages: winax: optional: true + ed25519-hd-key@1.1.2: + resolution: {integrity: sha512-/0y9y6N7vM6Kj5ASr9J9wcMVDTtygxSOvYX+PJiMD7VcxCx2G03V5bLRl8Dug9EgkLFsLhGqBtQWQRcElEeWTA==} + + ed2curve@0.3.0: + resolution: {integrity: sha512-8w2fmmq3hv9rCrcI7g9hms2pMunQr1JINfcjwR9tAyZqhtyaMN991lF/ZfHfr5tzZQ8c7y7aBgZbjfbd0fjFwQ==} + ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} @@ -9450,6 +9748,11 @@ packages: esast-util-from-js@2.0.1: resolution: {integrity: sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw==} + esbuild-plugin-polyfill-node@0.3.0: + resolution: {integrity: sha512-SHG6CKUfWfYyYXGpW143NEZtcVVn8S/WHcEOxk62LuDXnY4Zpmc+WmxJKN6GMTgTClXJXhEM5KQlxKY6YjbucQ==} + peerDependencies: + esbuild: '*' + esbuild@0.19.12: resolution: {integrity: sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==} engines: {node: '>=12'} @@ -9509,6 +9812,20 @@ packages: peerDependencies: eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 + eslint-plugin-prettier@5.2.1: + resolution: {integrity: sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw==} + 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 + eslint-plugin-react-hooks@5.0.0: resolution: {integrity: sha512-hIOwI+5hYGpJEc4uPRmz2ulCjAGD/N13Lukkh8cLV0i2IRk/bdZDYjgLVHj+U9Z704kLIdIO6iueGvxNur0sgw==} engines: {node: '>=10'} @@ -9520,6 +9837,19 @@ packages: peerDependencies: eslint: '>=7' + eslint-plugin-vitest@0.5.4: + resolution: {integrity: sha512-um+odCkccAHU53WdKAw39MY61+1x990uXjSPguUCq3VcEHdqJrOb8OTMrbYlY6f9jAKx7x98kLVlIe3RJeJqoQ==} + engines: {node: ^18.0.0 || >= 20.0.0} + peerDependencies: + '@typescript-eslint/eslint-plugin': '*' + eslint: ^8.57.0 || ^9.0.0 + vitest: '*' + peerDependenciesMeta: + '@typescript-eslint/eslint-plugin': + optional: true + vitest: + optional: true + eslint-scope@5.1.1: resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} engines: {node: '>=8.0.0'} @@ -9546,6 +9876,16 @@ packages: deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. hasBin: true + eslint@9.13.0: + resolution: {integrity: sha512-EYZK6SX6zjFHST/HRytOdA/zE72Cq/bfw45LSyuwrdvcclb/gqV8RRQxywOBEWO2+WDpva6UZa4CcDeJKzUCFA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + hasBin: true + peerDependencies: + jiti: '*' + peerDependenciesMeta: + jiti: + optional: true + eslint@9.16.0: resolution: {integrity: sha512-whp8mSQI4C8VXd+fLgSM0lh3UlmcFtVwUQjyKCFfsp+2ItAIYhlq/hqGahGqHE6cv9unM41VlqKk2VtKYR2TaA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -9559,6 +9899,9 @@ packages: esm-env@1.2.1: resolution: {integrity: sha512-U9JedYYjCnadUlXk7e1Kr+aENQhtUaoaV9+gZm1T8LC/YBAPJx3NSPIAurFOC0U5vrdSevnUJS2/wUVxGwPhng==} + esmify@2.1.1: + resolution: {integrity: sha512-GyOVgjG7sNyYB5Mbo15Ll4aGrcXZzZ3LI22rbLOjCI7L/wYelzQpBHRZkZkqbPNZ/QIRilcaHqzgNCLcEsi1lQ==} + esniff@2.0.1: resolution: {integrity: sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==} engines: {node: '>=0.10'} @@ -9682,6 +10025,9 @@ packages: resolution: {integrity: sha512-T1C0XCUimhxVQzW4zFipdx0SficT651NnkR0ZSH3yQwh+mFMdLfgjABVi4YtMTtaL4s168593DaoaRLMqryavA==} engines: {node: '>=18.0.0'} + evp_bytestokey@1.0.3: + resolution: {integrity: sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==} + execa@5.0.0: resolution: {integrity: sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ==} engines: {node: '>=10'} @@ -9750,6 +10096,9 @@ packages: fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + fast-diff@1.3.0: + resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} + fast-fifo@1.3.2: resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==} @@ -9942,6 +10291,9 @@ packages: debug: optional: true + for-each@0.3.3: + resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} + for-in@0.1.8: resolution: {integrity: sha512-F0to7vbBSHP8E3l6dCjxNOLuSFAACIxFy3UehTUlG7svlXi37HHsDkyVcHo0Pq8QwrE+pXvWSVX3ZT1T9wAZ9g==} engines: {node: '>=0.10.0'} @@ -10088,6 +10440,9 @@ packages: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} + get-assigned-identifiers@1.2.0: + resolution: {integrity: sha512-mBBwmeGTrxEMO4pMaaf/uUEFHnYtwr8FTe8Y/mer4rcV/bye0qGm6pw1bGZFGStxC5O76c5ZAVBGnqHmOaJpdQ==} + get-caller-file@2.0.5: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} @@ -10278,6 +10633,10 @@ packages: resolution: {integrity: sha512-49TewVEz0UxZjr1WYYsWpPrhyC/B/pA8Bq0fUmet2n+eR7yn0IvNzNaoBwnK6mdkzcN+se7Ez9zUgULTz2QH4g==} engines: {node: '>=18'} + globals@9.18.0: + resolution: {integrity: sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==} + engines: {node: '>=0.10.0'} + globby@11.1.0: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} engines: {node: '>=10'} @@ -10364,6 +10723,10 @@ packages: resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} engines: {node: '>=6'} + has-ansi@2.0.0: + resolution: {integrity: sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==} + engines: {node: '>=0.10.0'} + has-flag@3.0.0: resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} engines: {node: '>=4'} @@ -10379,6 +10742,10 @@ packages: resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} engines: {node: '>= 0.4'} + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + has-unicode@2.0.1: resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} @@ -10386,6 +10753,10 @@ packages: resolution: {integrity: sha512-IrsVwUHhEULx3R8f/aA8AHuEzAorplsab/v8HBzEiIukwq5i/EC+xmOW+HfP1OaDP+2JkgT1yILHN2O3UFIbcA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + hash-base@3.0.5: + resolution: {integrity: sha512-vXm0l45VbcHEVlTCzs8M+s0VeYsB2lnlAaThoLKGXr3bE/VWDOelNUnycUPEhKEaXARL2TEFjBOyUiM6+55KBg==} + engines: {node: '>= 0.10'} + hash-base@3.1.0: resolution: {integrity: sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==} engines: {node: '>=4'} @@ -10537,6 +10908,10 @@ packages: webpack: optional: true + htmlescape@1.1.1: + resolution: {integrity: sha512-eVcrzgbR4tim7c7soKQKtxa/kQM4TzjnlU83rcZ9bHU6t31ehfV7SktN6McWgwPWg+JYMA/O3qpGxBvFq1z2Jg==} + engines: {node: '>=0.10'} + htmlparser2@6.1.0: resolution: {integrity: sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==} @@ -10596,6 +10971,9 @@ packages: resolution: {integrity: sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==} engines: {node: '>=10.19.0'} + https-browserify@1.0.0: + resolution: {integrity: sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==} + https-proxy-agent@4.0.0: resolution: {integrity: sha512-zoDhWrkR3of1l9QAL8/scJZyLu8j/gBkcwcaQOZh7Gyh/+uJQzGVETdgT30akuwkpL8HTRfssqI3BZuV18teDg==} engines: {node: '>= 6.0.0'} @@ -10684,6 +11062,9 @@ packages: engines: {node: '>=8'} hasBin: true + import-meta-resolve@3.1.1: + resolution: {integrity: sha512-qeywsE/KC3w9Fd2ORrRDUw6nS/nLwZpXgfrOc2IILvZYnCaEMd+D56Vfg9k4G29gIeVi3XKql1RQatME8iYsiw==} + import-meta-resolve@4.1.0: resolution: {integrity: sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==} @@ -10728,6 +11109,9 @@ packages: resolution: {integrity: sha512-Zfeb5ol+H+eqJWHTaGca9BovufyGeIfr4zaaBorPmJBMrJ+KBnN+kQx2ZtXdsotUTgldHmHQV44xvUWOUA7E2w==} engines: {node: ^16.14.0 || >=18.0.0} + inline-source-map@0.6.3: + resolution: {integrity: sha512-1aVsPEsJWMJq/pdMU61CDlm1URcW702MTB4w9/zUjMus6H/Py8o7g68Pr9D4I6QluWGt/KdmswuRhaA05xVR1w==} + inline-style-parser@0.1.1: resolution: {integrity: sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==} @@ -10738,6 +11122,10 @@ packages: resolution: {integrity: sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==} engines: {node: '>=12.0.0'} + insert-module-globals@7.2.1: + resolution: {integrity: sha512-ufS5Qq9RZN+Bu899eA9QCAYThY+gGW7oRkmb0vC93Vlyu/CFGcH0OYPEjVkDXA5FEbTt1+VWzdoOD3Ny9N+8tg==} + hasBin: true + int64-buffer@0.1.10: resolution: {integrity: sha512-v7cSY1J8ydZ0GyjUHqF+1bshJ6cnEVLo9EnjB8p+4HDRPZc9N5jjmvUV7NvEsqQOKyH0pmIBFWXVQbiS0+OBbA==} @@ -10784,6 +11172,10 @@ packages: is-alphanumerical@2.0.1: resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==} + is-arguments@1.2.0: + resolution: {integrity: sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==} + engines: {node: '>= 0.4'} + is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} @@ -10805,6 +11197,10 @@ packages: resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==} engines: {node: '>=6'} + is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + is-ci@3.0.1: resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==} hasBin: true @@ -10850,6 +11246,10 @@ packages: resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} engines: {node: '>=6'} + is-generator-function@1.0.10: + resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} + engines: {node: '>= 0.4'} + is-glob@4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} @@ -10975,6 +11375,10 @@ packages: resolution: {integrity: sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==} engines: {node: '>=8'} + is-typed-array@1.1.13: + resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} + engines: {node: '>= 0.4'} + is-typedarray@1.0.0: resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} @@ -11276,6 +11680,9 @@ packages: js-tiktoken@1.0.15: resolution: {integrity: sha512-65ruOWWXDEZHHbAo7EjOcNxOGasQKbL4Fq3jEr2xsCqSsoOo6VVSqzWQb6PRIqypFSDcma4jO90YP0w5X8qVXQ==} + js-tokens@3.0.2: + resolution: {integrity: sha512-RjTcuD4xjtthQkaWH7dFlH85L+QaVtSoOyGdZ3g6HFhS9dFNDfLyqgm2NFe2X6cQpeFmt0452FJjFG5UameExg==} + js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} @@ -11421,6 +11828,10 @@ packages: resolution: {integrity: sha512-yE9YJIEAk2aZ+FL/G8r+UGw0CTUzEA8ZFy6E+8tc3spHUKq3qBnzCkI1CQwGoI9atJhVyFPEypQsTY7mJ1Pi9w==} hasBin: true + keccak@3.0.2: + resolution: {integrity: sha512-PyKKjkH53wDMLGrvmRGSNWgmSxZOUqbnXwKL9tmgbFYA1iAYqW21kfR7mZXV0MlESiefxQQE9X9fTa3X+2MPDQ==} + engines: {node: '>=10.0.0'} + keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} @@ -11452,6 +11863,9 @@ packages: kuromoji@0.1.2: resolution: {integrity: sha512-V0dUf+C2LpcPEXhoHLMAop/bOht16Dyr+mDiIE39yX3vqau7p80De/koFqpiTcL1zzdZlc3xuHZ8u5gjYRfFaQ==} + labeled-stream-splicer@2.0.2: + resolution: {integrity: sha512-Ca4LSXFFZUjPScRaqOcFxneA0VpKZr4MMYCljyQr4LIewTLb3Y0IUTIsnBBsVubIeEfxeSZpSjSsRM8APEQaAw==} + langchain@0.3.6: resolution: {integrity: sha512-erZOIKXzwCOrQHqY9AyjkQmaX62zUap1Sigw1KrwMUOnVoLKkVNRmAyxFlNZDZ9jLs/58MaQcaT9ReJtbj3x6w==} engines: {node: '>=18'} @@ -11704,6 +12118,9 @@ packages: lodash.kebabcase@4.1.1: resolution: {integrity: sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==} + lodash.memoize@3.0.4: + resolution: {integrity: sha512-eDn9kqrAmVUC1wmZvlQ6Uhde44n+tXpqPrN8olQJbttgh0oKclk+SF54P47VEGE9CEiMeRwAP8BaM7UHvBkz2A==} + lodash.memoize@4.1.2: resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} @@ -12128,6 +12545,10 @@ packages: microsoft-cognitiveservices-speech-sdk@1.41.0: resolution: {integrity: sha512-96jyuCBK5TDQm9sHriYuR0UeJ5OsE2WuggDgYSn8L72AsgmjOZxM2BlxgS5BLZuwhIOw91KSc6l1eoTqs+zwfg==} + miller-rabin@4.0.1: + resolution: {integrity: sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==} + hasBin: true + mime-db@1.33.0: resolution: {integrity: sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==} engines: {node: '>= 0.6'} @@ -12329,6 +12750,11 @@ packages: resolution: {integrity: sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==} engines: {node: '>=0.10.0'} + module-deps@6.2.3: + resolution: {integrity: sha512-fg7OZaQBcL4/L+AK5f4iVqf9OMbCclXfy/znXRxTVhJSeW5AIlS9AwheYwDaXM3lVW7OBeaeUEY3gbaC6cLlSA==} + engines: {node: '>= 0.8.0'} + hasBin: true + module-details-from-path@1.0.3: resolution: {integrity: sha512-ySViT69/76t8VhE1xXHK6Ch4NcDd26gx0MzKXLO+F7NOtnqH68d9zF94nT8ZWSxXh8ELOERsnJO/sWt1xZYw5A==} @@ -12394,6 +12820,9 @@ packages: nan@2.22.0: resolution: {integrity: sha512-nbajikzWTMwsW+eSsNm3QwlOs7het9gGJU5dDZzRTQGk03vyBOauxgI4VakDzE0PtsGTmXPsXTbbjVhRwR5mpw==} + nanoassert@1.1.0: + resolution: {integrity: sha512-C40jQ3NzfkP53NsO8kEOFd79p4b9kDXQMwgiY1z8ZwrDZgUyom0AHwGegF4Dm99L+YoYhuaB0ceerUcXmqr1rQ==} + nanoid@3.3.6: resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} @@ -12457,6 +12886,9 @@ packages: resolution: {integrity: sha512-SZ40vRiy/+wRTf21hxkkEjPJZpARzUMVcJoQse2EF8qkUWbbO2z7vd5oA/H6bVH6SZQ5STGcu0KRDS7biNRfxw==} engines: {node: '>=10'} + node-addon-api@2.0.2: + resolution: {integrity: sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==} + node-addon-api@5.1.0: resolution: {integrity: sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==} @@ -12819,6 +13251,9 @@ packages: resolution: {integrity: sha512-YWielGi1XzG1UTvOaCFaNgEnuhZVMSHYkW/FQ7UX8O26PtlpdM84c0f7wLPlkvx2RfiQmnzd61d/MGxmpQeJPw==} engines: {node: '>=18'} + os-browserify@0.3.0: + resolution: {integrity: sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==} + os-tmpdir@1.0.2: resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} engines: {node: '>=0.10.0'} @@ -12952,6 +13387,9 @@ packages: pako@0.2.9: resolution: {integrity: sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==} + pako@1.0.11: + resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} + pako@2.1.0: resolution: {integrity: sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==} @@ -12962,6 +13400,13 @@ packages: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} + parents@1.0.1: + resolution: {integrity: sha512-mXKF3xkoUt5td2DoxpLmtOmZvko9VfFpwRwkKDHSNvgmpLAeBo18YDhcPbBzJq+QLCHMbGOfzia2cX4U+0v9Mg==} + + parse-asn1@5.1.7: + resolution: {integrity: sha512-CTM5kuWR3sx9IFamcl5ErfPl6ea/N8IYwiJ+vpeB2g+1iknv7zBl5uPwbMbRVznRVbrNY6lGuDoE5b30grmbqg==} + engines: {node: '>= 0.10'} + parse-cache-control@1.0.1: resolution: {integrity: sha512-60zvsJReQPX5/QP0Kzfd/VrpjScIQ7SHBW6bFCYfEP+fp0Eppr1SHhIO5nd1PjZtvclzSzES9D/p5nFJurwfWg==} @@ -13026,6 +13471,9 @@ packages: pascal-case@3.1.2: resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} + path-browserify@1.0.1: + resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} + path-data-parser@0.1.0: resolution: {integrity: sha512-NOnmBpt5Y2RWbuv0LMzsayp3lVylAHLPUTut412ZA3l+C4uw4ZVkQbjShYCQ8TCpUMdPapr4YjUqLYD6v68j+w==} @@ -13064,6 +13512,10 @@ packages: path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + path-platform@0.11.15: + resolution: {integrity: sha512-Y30dB6rab1A/nfEKsZxmr01nUotHX0c/ZiIAsCTatEe1CmS5Pm5He7fZ195bPT7RdquoaL8lLxFCMQi/bS7IJg==} + engines: {node: '>= 0.8.0'} + path-scurry@1.11.1: resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} engines: {node: '>=16 || 14 >=14.18'} @@ -13104,6 +13556,10 @@ packages: resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} engines: {node: '>= 14.16'} + pbkdf2@3.1.2: + resolution: {integrity: sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==} + engines: {node: '>=0.12'} + pdfjs-dist@4.7.76: resolution: {integrity: sha512-8y6wUgC/Em35IumlGjaJOCm3wV4aY/6sqnIT3fVW/67mXsOZ9HWBn8GDKmJUK0GSzpbmX3gQqwfoFayp78Mtqw==} engines: {node: '>=18'} @@ -13293,6 +13749,10 @@ packages: poseidon-lite@0.2.1: resolution: {integrity: sha512-xIr+G6HeYfOhCuswdqcFpSX47SPhm0EpisWJ6h7fHlWwaVIvH3dLnejpatrtw6Xc6HaLrpq05y7VRfvDmDGIog==} + possible-typed-array-names@1.0.0: + resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} + engines: {node: '>= 0.4'} + postcss-attribute-case-insensitive@7.0.1: resolution: {integrity: sha512-Uai+SupNSqzlschRyNx3kbCTWgY/2hcwtHEI/ej2LJWc9JJ77qKgGptd8DHwY1mXtZ7Aoh4z4yxfwMBue9eNgw==} engines: {node: '>=18'} @@ -13969,6 +14429,10 @@ packages: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} + prettier-linter-helpers@1.0.0: + resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} + engines: {node: '>=6.0.0'} + prettier@3.4.1: resolution: {integrity: sha512-G+YdqtITVZmOJje6QkXQWzl3fSfMxFwm1tjTyo9exhkmWSqC4Yhd1+lug++IlR2mvRVAxEDDWYkQdeSztajqgg==} engines: {node: '>=14'} @@ -14129,6 +14593,9 @@ packages: pstree.remy@1.1.8: resolution: {integrity: sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==} + public-encrypt@4.0.3: + resolution: {integrity: sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==} + pump@3.0.2: resolution: {integrity: sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==} @@ -14139,6 +14606,9 @@ packages: resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==} engines: {node: '>=6'} + punycode@1.4.1: + resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==} + punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} @@ -14217,6 +14687,10 @@ packages: resolution: {integrity: sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==} engines: {node: '>=6'} + querystring-es3@0.2.1: + resolution: {integrity: sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==} + engines: {node: '>=0.4.x'} + querystringify@2.2.0: resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} @@ -14246,6 +14720,9 @@ packages: randombytes@2.1.0: resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + randomfill@1.0.4: + resolution: {integrity: sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==} + range-parser@1.2.0: resolution: {integrity: sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A==} engines: {node: '>= 0.6'} @@ -14395,6 +14872,9 @@ packages: resolution: {integrity: sha512-yILWifhaSEEytfXI76kB9xEEiG1AiozaCJZ83A87ytjRiN+jVibXjedjCRNjoZviinhG+4UkalO3mWTd8u5O0Q==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + read-only-stream@2.0.0: + resolution: {integrity: sha512-3ALe0bjBVZtkdWKIcThYpQCLbBMd/+Tbh2CDSrAIDO3UsZ4Xs+tnyjv2MjCOMMgBG+AsUOeuP1cgtY1INISc8w==} + read-package-json-fast@3.0.2: resolution: {integrity: sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} @@ -14513,6 +14993,9 @@ packages: regenerate@1.4.2: resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} + regenerator-runtime@0.11.1: + resolution: {integrity: sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==} + regenerator-runtime@0.14.1: resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} @@ -14814,6 +15297,9 @@ packages: resolution: {integrity: sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g==} engines: {node: '>= 10.13.0'} + scryptsy@2.1.0: + resolution: {integrity: sha512-1CdSqHQowJBnMAFyPEBRfqag/YP9OF394FV+4YREIJX4ljD7OxvQRDayyoyyCk+senRjSkP6VnUNQmVQqB6g7w==} + scule@1.3.0: resolution: {integrity: sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==} @@ -14936,6 +15422,9 @@ packages: resolution: {integrity: sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + shasum-object@1.0.0: + resolution: {integrity: sha512-Iqo5rp/3xVi6M4YheapzZhhGPVs0yZwHj7wvwQ1B9z8H6zk+FEnI7y3Teq7qwnekfEhu8WmG2z0z4iWZaxLWVg==} + shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} @@ -15089,6 +15578,10 @@ packages: source-map-support@0.5.21: resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + source-map@0.5.7: + resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} + engines: {node: '>=0.10.0'} + source-map@0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} @@ -15235,12 +15728,24 @@ packages: resolution: {integrity: sha512-yhPIQXjrlt1xv7dyPQg2P17URmXbuM5pdGkpiMB3RenprfiBlvK415Lctfe0eshk90oA7/tNq7WEiMK8RSP39A==} engines: {node: '>=18'} + stream-browserify@3.0.0: + resolution: {integrity: sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==} + + stream-combiner2@1.1.1: + resolution: {integrity: sha512-3PnJbYgS56AeWgtKF5jtJRT6uFJe56Z0Hc5Ngg/6sI6rIt8iiMBTa9cvdyFfpMQjaVHr8dusbNeFGIIonxOvKw==} + + stream-http@3.2.0: + resolution: {integrity: sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==} + stream-parser@0.3.1: resolution: {integrity: sha512-bJ/HgKq41nlKvlhccD5kaCr/P+Hu0wPNKPJOH7en+YrJu/9EgqUF+88w5Jb6KNcjOFMhfX4B2asfeAtIGuHObQ==} stream-shift@1.0.3: resolution: {integrity: sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==} + stream-splicer@2.0.1: + resolution: {integrity: sha512-Xizh4/NPuYSyAXyT7g8IvdJ9HJpxIGL9PjyhtywCZvvP0OPIdqyrr4dMikeuvY8xahpdKEBlBTySe583totajg==} + streamsearch@1.1.0: resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} engines: {node: '>=10.0.0'} @@ -15288,6 +15793,10 @@ packages: resolution: {integrity: sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==} engines: {node: '>=4'} + strip-ansi@3.0.1: + resolution: {integrity: sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==} + engines: {node: '>=0.10.0'} + strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} @@ -15361,6 +15870,9 @@ packages: stylis@4.3.4: resolution: {integrity: sha512-osIBl6BGUmSfDkyH2mB7EFvCJntXDrLhKjHTRj/rK6xLH0yuPrHULDRQzKokSOD4VoorhtKpfcfW1GAntu8now==} + subarg@1.0.0: + resolution: {integrity: sha512-RIrIdRY0X1xojthNcVtgT9sjpOGagEUKpZdgBUi054OEPFo282yg+zE+t1Rj3+RqKq2xStL7uUHhY+AjbC4BXg==} + sucrase@3.35.0: resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} engines: {node: '>=16 || 14 >=14.17'} @@ -15380,6 +15892,10 @@ packages: resolution: {integrity: sha512-uV+TFRZdXsqXTL2pRvujROjdZQ4RAlBUS5BTh9IGm+jTqQntYThciG/qu57Gs69yjnVUSqdxF9YLmSnpupBW9A==} engines: {node: '>=14.0.0'} + supports-color@2.0.0: + resolution: {integrity: sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==} + engines: {node: '>=0.8.0'} + supports-color@5.5.0: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} engines: {node: '>=4'} @@ -15424,6 +15940,13 @@ packages: symbol-tree@3.2.4: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} + synckit@0.9.2: + resolution: {integrity: sha512-vrozgXDQwYO72vHjUb/HnFbQx1exDjoKzqx23aXEg2a9VIg2TSFZ8FmeZpTjUCFMYw7mpX4BE2SFu8wI7asYsw==} + engines: {node: ^14.18.0 || >=16.0.0} + + syntax-error@1.4.0: + resolution: {integrity: sha512-YPPlu67mdnHGTup2A8ff7BC2Pjq0e0Yp/IyTFN03zWO0RcK07uLcbi7C2KpGR2FvWbaB0+bfE27a+sBKebSo7w==} + system-architecture@0.1.0: resolution: {integrity: sha512-ulAk51I9UVUyJgxlv9M6lFot2WP3e7t8Kz9+IS6D4rVba1tR9kON+Ey69f+1R4Q8cd45Lod6a4IcJIxnzGc/zA==} engines: {node: '>=18'} @@ -15567,6 +16090,10 @@ packages: resolution: {integrity: sha512-75voc/9G4rDIJleOo4jPvN4/YC4GRZrY8yy1uU4lwrB3XEQbWve8zXoO5No4eFrGcTAMYyoY67p8jRQdtA1HbA==} engines: {node: '>=12'} + timers-browserify@1.4.2: + resolution: {integrity: sha512-PIxwAupJZiYU4JmVZYwXp9FKsHMXb5h0ZEFyuXTAn8WLHOlcij+FEcbrvDsom1o5dr1YggEtFbECvGCW2sT53Q==} + engines: {node: '>=0.6.0'} + timers-ext@0.1.8: resolution: {integrity: sha512-wFH7+SEAcKfJpfLPkrgMPvvwnEtj8W4IurvEyrKsDleXnKLCDw71w8jltvfLa8Rm4qQxxT4jmDBYbJG/z7qoww==} engines: {node: '>=0.12'} @@ -15629,6 +16156,10 @@ packages: tmpl@1.0.5: resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} + to-fast-properties@1.0.3: + resolution: {integrity: sha512-lxrWP8ejsq+7E3nNjwYmUBMAgjMTZoTI+sdBOpvNyijeDLa29LUn9QaoXAHv4+Z578hbmHHJKZknzxVtvo77og==} + engines: {node: '>=0.10.0'} + to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} @@ -15801,6 +16332,9 @@ packages: typescript: optional: true + tty-browserify@0.0.1: + resolution: {integrity: sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==} + tuf-js@2.2.1: resolution: {integrity: sha512-GwIJau9XaA8nLVbUXsN3IlFi7WmQ48gBUrl3FTkkL/XLu/POhBzfmX9hd33FNMX1qAsfl6ozO1iMmW9NC8YniA==} engines: {node: ^16.14.0 || >=18.0.0} @@ -15849,6 +16383,9 @@ packages: tweetnacl@0.14.5: resolution: {integrity: sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==} + tweetnacl@1.0.3: + resolution: {integrity: sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==} + twitter-api-v2@1.18.2: resolution: {integrity: sha512-ggImmoAeVgETYqrWeZy+nWnDpwgTP+IvFEc03Pitt1HcgMX+Yw17rP38Fb5FFTinuyNvS07EPtAfZ184uIyB0A==} @@ -15964,6 +16501,10 @@ packages: uint8arrays@3.1.0: resolution: {integrity: sha512-ei5rfKtoRO8OyOIor2Rz5fhzjThwIHJZ3uyDPnDHTXbP0aMQ1RN/6AI5B5d9dBxJOU+BvOAk7ZQ1xphsX8Lrog==} + umd@3.0.3: + resolution: {integrity: sha512-4IcGSufhFshvLNcMCV80UnQVlZ5pMOC8mvNPForqwA4+lzYQuetTESLDQkeLmihq8bRcnpbQa48Wb8Lh16/xow==} + hasBin: true + unbuild@2.0.0: resolution: {integrity: sha512-JWCUYx3Oxdzvw2J9kTAp+DKE8df/BnH/JTSj6JyA4SH40ECdFu7FoJJcrm8G92B7TjofQ6GZGjJs50TRxoH6Wg==} hasBin: true @@ -15979,6 +16520,10 @@ packages: uncrypto@0.1.3: resolution: {integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==} + undeclared-identifiers@1.1.3: + resolution: {integrity: sha512-pJOW4nxjlmfwKApE4zvxLScM/njmwj/DiUBv7EabwE4O8kRUy+HIwxQtZLBPll/jx1LJyBcqNfB3/cpv9EZwOw==} + hasBin: true + undefsafe@2.0.5: resolution: {integrity: sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==} @@ -16189,6 +16734,10 @@ packages: url-parse@1.5.10: resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} + url@0.11.4: + resolution: {integrity: sha512-oCwdVC7mTuWiPyjLUz/COz5TLk6wgp0RCsN+wHZ2Ekneac9w8uuV0njcbbie2ME+Vs+d6duwmYuR3HgQXs1fOg==} + engines: {node: '>= 0.4'} + use-callback-ref@1.3.2: resolution: {integrity: sha512-elOQwe6Q8gqZgDA8mrh44qRTQqpIHDcZ3hXTLjBe1i4ph8XpNJnO+aQf3NaG+lriLopI4HMx9VjQLfPQ6vhnoA==} engines: {node: '>=10'} @@ -16229,6 +16778,12 @@ packages: util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + util@0.10.4: + resolution: {integrity: sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==} + + util@0.12.5: + resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} + utila@0.4.0: resolution: {integrity: sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==} @@ -16440,6 +16995,9 @@ packages: resolution: {integrity: sha512-sfAcO2yeSU0CSPFI/DmZp3FsFE9T+8913nv1xWBOyzODv13fwkn6Vl7HqxGpkr9F608M+8SuFId3s+BlZqfXww==} engines: {node: '>=4.0'} + vm-browserify@1.1.2: + resolution: {integrity: sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==} + vscode-jsonrpc@8.2.0: resolution: {integrity: sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==} engines: {node: '>=14.0.0'} @@ -16624,6 +17182,10 @@ packages: resolution: {integrity: sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA==} engines: {node: '>=4'} + which-typed-array@1.1.16: + resolution: {integrity: sha512-g+N+GAWiRj66DngFwHvISJd+ITsyphZvD1vChfVg6cEdnzy53GzB3oy0fUNlvhz7H7+MiqhYr26qxQShCpKTTQ==} + engines: {node: '>= 0.4'} + which@1.3.1: resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} hasBin: true @@ -19268,6 +19830,23 @@ snapshots: dependencies: postcss: 8.4.49 + '@deepgram/captions@1.2.0': + dependencies: + dayjs: 1.11.13 + + '@deepgram/sdk@3.9.0(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10)': + dependencies: + '@deepgram/captions': 1.2.0 + '@types/node': 18.19.68 + cross-fetch: 3.1.8(encoding@0.1.13) + deepmerge: 4.3.1 + events: 3.3.0 + ws: 8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + transitivePeerDependencies: + - bufferutil + - encoding + - utf-8-validate + '@derhuerst/http-basic@8.2.4': dependencies: caseless: 0.12.0 @@ -20500,6 +21079,11 @@ snapshots: eslint: 8.57.1 eslint-visitor-keys: 3.4.3 + '@eslint-community/eslint-utils@4.4.1(eslint@9.13.0(jiti@2.4.0))': + dependencies: + eslint: 9.13.0(jiti@2.4.0) + eslint-visitor-keys: 3.4.3 + '@eslint-community/eslint-utils@4.4.1(eslint@9.16.0(jiti@2.4.0))': dependencies: eslint: 9.16.0(jiti@2.4.0) @@ -20507,6 +21091,14 @@ snapshots: '@eslint-community/regexpp@4.12.1': {} + '@eslint/config-array@0.18.0': + dependencies: + '@eslint/object-schema': 2.1.5 + debug: 4.4.0(supports-color@5.5.0) + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + '@eslint/config-array@0.19.1': dependencies: '@eslint/object-schema': 2.1.5 @@ -20515,6 +21107,8 @@ snapshots: transitivePeerDependencies: - supports-color + '@eslint/core@0.7.0': {} + '@eslint/core@0.9.1': dependencies: '@types/json-schema': 7.0.15 @@ -20549,6 +21143,8 @@ snapshots: '@eslint/js@8.57.1': {} + '@eslint/js@9.13.0': {} + '@eslint/js@9.16.0': {} '@eslint/object-schema@2.1.5': {} @@ -21109,6 +21705,8 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.0 + '@jspm/core@2.1.0': {} + '@kikobeats/time-span@1.0.5': {} '@kwsites/file-exists@1.1.1': @@ -21368,6 +21966,37 @@ snapshots: '@msgpack/msgpack@3.0.0-beta2': {} + '@multiversx/sdk-bls-wasm@0.3.5': + optional: true + + '@multiversx/sdk-core@13.15.0(bignumber.js@9.1.2)(protobufjs@7.4.0)': + dependencies: + '@multiversx/sdk-transaction-decoder': 1.0.2 + '@noble/ed25519': 1.7.3 + '@noble/hashes': 1.3.0 + bech32: 1.1.4 + bignumber.js: 9.1.2 + blake2b: 2.1.3 + buffer: 6.0.3 + ed25519-hd-key: 1.1.2 + ed2curve: 0.3.0 + json-bigint: 1.0.0 + keccak: 3.0.2 + protobufjs: 7.4.0 + scryptsy: 2.1.0 + tweetnacl: 1.0.3 + uuid: 8.3.2 + optionalDependencies: + '@multiversx/sdk-bls-wasm': 0.3.5 + axios: 1.7.8(debug@4.4.0) + bip39: 3.1.0 + transitivePeerDependencies: + - debug + + '@multiversx/sdk-transaction-decoder@1.0.2': + dependencies: + bech32: 2.0.0 + '@napi-rs/wasm-runtime@0.2.4': dependencies: '@emnapi/core': 1.3.1 @@ -21439,6 +22068,10 @@ snapshots: dependencies: '@noble/hashes': 1.6.0 + '@noble/ed25519@1.7.3': {} + + '@noble/hashes@1.3.0': {} + '@noble/hashes@1.3.2': {} '@noble/hashes@1.3.3': {} @@ -22342,6 +22975,8 @@ snapshots: '@pkgjs/parseargs@0.11.0': optional: true + '@pkgr/core@0.1.1': {} + '@pm2/agent@2.0.4(bufferutil@4.0.8)(utf-8-validate@5.0.10)': dependencies: async: 3.2.6 @@ -24275,6 +24910,8 @@ snapshots: '@types/node@10.17.60': {} + '@types/node@11.11.6': {} + '@types/node@12.20.55': {} '@types/node@17.0.45': {} @@ -24528,6 +25165,11 @@ snapshots: '@typescript-eslint/types': 6.21.0 '@typescript-eslint/visitor-keys': 6.21.0 + '@typescript-eslint/scope-manager@7.18.0': + dependencies: + '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/visitor-keys': 7.18.0 + '@typescript-eslint/scope-manager@8.11.0': dependencies: '@typescript-eslint/types': 8.11.0 @@ -24576,6 +25218,8 @@ snapshots: '@typescript-eslint/types@6.21.0': {} + '@typescript-eslint/types@7.18.0': {} + '@typescript-eslint/types@8.11.0': {} '@typescript-eslint/types@8.16.0': {} @@ -24595,6 +25239,21 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/typescript-estree@7.18.0(typescript@5.6.3)': + dependencies: + '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/visitor-keys': 7.18.0 + debug: 4.4.0(supports-color@5.5.0) + globby: 11.1.0 + is-glob: 4.0.3 + minimatch: 9.0.5 + semver: 7.6.3 + ts-api-utils: 1.4.3(typescript@5.6.3) + optionalDependencies: + typescript: 5.6.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/typescript-estree@8.11.0(typescript@5.6.3)': dependencies: '@typescript-eslint/types': 8.11.0 @@ -24639,6 +25298,17 @@ snapshots: - supports-color - typescript + '@typescript-eslint/utils@7.18.0(eslint@9.13.0(jiti@2.4.0))(typescript@5.6.3)': + dependencies: + '@eslint-community/eslint-utils': 4.4.1(eslint@9.13.0(jiti@2.4.0)) + '@typescript-eslint/scope-manager': 7.18.0 + '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.6.3) + eslint: 9.13.0(jiti@2.4.0) + transitivePeerDependencies: + - supports-color + - typescript + '@typescript-eslint/utils@8.11.0(eslint@9.16.0(jiti@2.4.0))(typescript@5.6.3)': dependencies: '@eslint-community/eslint-utils': 4.4.1(eslint@9.16.0(jiti@2.4.0)) @@ -24667,6 +25337,11 @@ snapshots: '@typescript-eslint/types': 6.21.0 eslint-visitor-keys: 3.4.3 + '@typescript-eslint/visitor-keys@7.18.0': + dependencies: + '@typescript-eslint/types': 7.18.0 + eslint-visitor-keys: 3.4.3 + '@typescript-eslint/visitor-keys@8.11.0': dependencies: '@typescript-eslint/types': 8.11.0 @@ -25264,14 +25939,24 @@ snapshots: dependencies: acorn: 8.14.0 + acorn-node@1.8.2: + dependencies: + acorn: 7.4.1 + acorn-walk: 7.2.0 + xtend: 4.0.2 + acorn-typescript@1.4.13(acorn@8.14.0): dependencies: acorn: 8.14.0 + acorn-walk@7.2.0: {} + acorn-walk@8.3.4: dependencies: acorn: 8.14.0 + acorn@7.4.1: {} + acorn@8.14.0: {} add-stream@1.0.0: {} @@ -25436,10 +26121,14 @@ snapshots: ansi-html-community@0.0.8: {} + ansi-regex@2.1.1: {} + ansi-regex@5.0.1: {} ansi-regex@6.1.0: {} + ansi-styles@2.2.1: {} + ansi-styles@4.3.0: dependencies: color-convert: 2.0.1 @@ -25515,6 +26204,12 @@ snapshots: arrify@2.0.1: {} + asn1.js@4.10.1: + dependencies: + bn.js: 4.12.1 + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + asn1@0.2.6: dependencies: safer-buffer: 2.1.2 @@ -25527,6 +26222,11 @@ snapshots: assert-plus@1.0.0: {} + assert@1.5.1: + dependencies: + object.assign: 4.1.5 + util: 0.10.4 + assertion-error@2.0.1: {} ast-types@0.13.4: @@ -25590,6 +26290,10 @@ snapshots: postcss: 8.4.49 postcss-value-parser: 4.2.0 + available-typed-arrays@1.0.7: + dependencies: + possible-typed-array-names: 1.0.0 + aws-sign2@0.7.0: {} aws4@1.13.2: {} @@ -25640,6 +26344,12 @@ snapshots: b4a@1.6.7: {} + babel-code-frame@6.26.0: + dependencies: + chalk: 1.1.3 + esutils: 2.0.3 + js-tokens: 3.0.2 + babel-jest@29.7.0(@babel/core@7.26.0): dependencies: '@babel/core': 7.26.0 @@ -25660,10 +26370,20 @@ snapshots: schema-utils: 4.3.0 webpack: 5.97.1(@swc/core@1.10.1(@swc/helpers@0.5.15)) + babel-messages@6.23.0: + dependencies: + babel-runtime: 6.26.0 + babel-plugin-dynamic-import-node@2.3.3: dependencies: object.assign: 4.1.5 + babel-plugin-import-to-require@1.0.0: + dependencies: + babel-template: 6.26.0 + transitivePeerDependencies: + - supports-color + babel-plugin-istanbul@6.1.1: dependencies: '@babel/helper-plugin-utils': 7.25.9 @@ -25730,6 +26450,44 @@ snapshots: babel-plugin-jest-hoist: 29.6.3 babel-preset-current-node-syntax: 1.1.0(@babel/core@7.26.0) + babel-runtime@6.26.0: + dependencies: + core-js: 2.6.12 + regenerator-runtime: 0.11.1 + + babel-template@6.26.0: + dependencies: + babel-runtime: 6.26.0 + babel-traverse: 6.26.0 + babel-types: 6.26.0 + babylon: 6.18.0 + lodash: 4.17.21 + transitivePeerDependencies: + - supports-color + + babel-traverse@6.26.0: + dependencies: + babel-code-frame: 6.26.0 + babel-messages: 6.23.0 + babel-runtime: 6.26.0 + babel-types: 6.26.0 + babylon: 6.18.0 + debug: 2.6.9 + globals: 9.18.0 + invariant: 2.2.4 + lodash: 4.17.21 + transitivePeerDependencies: + - supports-color + + babel-types@6.26.0: + dependencies: + babel-runtime: 6.26.0 + esutils: 2.0.3 + lodash: 4.17.21 + to-fast-properties: 1.0.3 + + babylon@6.18.0: {} + bail@1.0.5: {} bail@2.0.2: {} @@ -25781,6 +26539,8 @@ snapshots: dependencies: tweetnacl: 0.14.5 + bech32@1.1.4: {} + bech32@2.0.0: {} before-after-hook@2.2.3: {} @@ -25844,6 +26604,13 @@ snapshots: typeforce: 1.18.0 wif: 2.0.6 + bip39@3.0.2: + dependencies: + '@types/node': 11.11.6 + create-hash: 1.2.0 + pbkdf2: 3.1.2 + randombytes: 2.1.0 + bip39@3.1.0: dependencies: '@noble/hashes': 1.6.1 @@ -25866,6 +26633,15 @@ snapshots: inherits: 2.0.4 readable-stream: 3.6.2 + blake2b-wasm@1.1.7: + dependencies: + nanoassert: 1.1.0 + + blake2b@2.1.3: + dependencies: + blake2b-wasm: 1.1.7 + nanoassert: 1.1.0 + blessed@0.1.81: {} bn.js@4.12.1: {} @@ -25957,6 +26733,115 @@ snapshots: browser-headers@0.4.1: {} + browser-pack@6.1.0: + dependencies: + JSONStream: 1.3.5 + combine-source-map: 0.8.0 + defined: 1.0.1 + safe-buffer: 5.2.1 + through2: 2.0.5 + umd: 3.0.3 + + browser-resolve@2.0.0: + dependencies: + resolve: 1.22.8 + + browserify-aes@1.2.0: + dependencies: + buffer-xor: 1.0.3 + cipher-base: 1.0.6 + create-hash: 1.2.0 + evp_bytestokey: 1.0.3 + inherits: 2.0.4 + safe-buffer: 5.2.1 + + browserify-cipher@1.0.1: + dependencies: + browserify-aes: 1.2.0 + browserify-des: 1.0.2 + evp_bytestokey: 1.0.3 + + browserify-des@1.0.2: + dependencies: + cipher-base: 1.0.6 + des.js: 1.1.0 + inherits: 2.0.4 + safe-buffer: 5.2.1 + + browserify-rsa@4.1.1: + dependencies: + bn.js: 5.2.1 + randombytes: 2.1.0 + safe-buffer: 5.2.1 + + browserify-sign@4.2.3: + dependencies: + bn.js: 5.2.1 + browserify-rsa: 4.1.1 + create-hash: 1.2.0 + create-hmac: 1.1.7 + elliptic: 6.6.1 + hash-base: 3.0.5 + inherits: 2.0.4 + parse-asn1: 5.1.7 + readable-stream: 2.3.8 + safe-buffer: 5.2.1 + + browserify-zlib@0.2.0: + dependencies: + pako: 1.0.11 + + browserify@17.0.1: + dependencies: + JSONStream: 1.3.5 + assert: 1.5.1 + browser-pack: 6.1.0 + browser-resolve: 2.0.0 + browserify-zlib: 0.2.0 + buffer: 5.2.1 + cached-path-relative: 1.1.0 + concat-stream: 1.6.2 + console-browserify: 1.2.0 + constants-browserify: 1.0.0 + crypto-browserify: 3.12.1 + defined: 1.0.1 + deps-sort: 2.0.1 + domain-browser: 1.2.0 + duplexer2: 0.1.4 + events: 3.3.0 + glob: 7.2.3 + hasown: 2.0.2 + htmlescape: 1.1.1 + https-browserify: 1.0.0 + inherits: 2.0.4 + insert-module-globals: 7.2.1 + labeled-stream-splicer: 2.0.2 + mkdirp-classic: 0.5.3 + module-deps: 6.2.3 + os-browserify: 0.3.0 + parents: 1.0.1 + path-browserify: 1.0.1 + process: 0.11.10 + punycode: 1.4.1 + querystring-es3: 0.2.1 + read-only-stream: 2.0.0 + readable-stream: 2.3.8 + resolve: 1.22.8 + shasum-object: 1.0.0 + shell-quote: 1.8.2 + stream-browserify: 3.0.0 + stream-http: 3.2.0 + string_decoder: 1.3.0 + subarg: 1.0.0 + syntax-error: 1.4.0 + through2: 2.0.5 + timers-browserify: 1.4.2 + tty-browserify: 0.0.1 + url: 0.11.4 + util: 0.12.5 + vm-browserify: 1.1.2 + xtend: 4.0.2 + browserslist@4.24.3: dependencies: caniuse-lite: 1.0.30001688 @@ -26010,6 +26895,13 @@ snapshots: buffer-more-ints@1.0.0: {} + buffer-xor@1.0.3: {} + + buffer@5.2.1: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + buffer@5.7.1: dependencies: base64-js: 1.5.1 @@ -26026,6 +26918,8 @@ snapshots: builtin-modules@3.3.0: {} + builtin-status-codes@3.0.0: {} + bundle-require@5.0.0(esbuild@0.24.0): dependencies: esbuild: 0.24.0 @@ -26111,6 +27005,8 @@ snapshots: normalize-url: 6.1.0 responselike: 2.0.1 + cached-path-relative@1.1.0: {} + call-bind-apply-helpers@1.0.1: dependencies: es-errors: 1.3.0 @@ -26199,6 +27095,14 @@ snapshots: loupe: 3.1.2 pathval: 2.0.0 + chalk@1.1.3: + dependencies: + ansi-styles: 2.2.1 + escape-string-regexp: 1.0.5 + has-ansi: 2.0.0 + strip-ansi: 3.0.1 + supports-color: 2.0.0 + chalk@3.0.0: dependencies: ansi-styles: 4.3.0 @@ -26490,6 +27394,13 @@ snapshots: combine-promises@1.2.0: {} + combine-source-map@0.8.0: + dependencies: + convert-source-map: 1.1.3 + inline-source-map: 0.6.3 + lodash.memoize: 3.0.4 + source-map: 0.5.7 + combined-stream@1.0.8: dependencies: delayed-stream: 1.0.0 @@ -26611,6 +27522,8 @@ snapshots: consola@3.2.3: {} + console-browserify@1.2.0: {} + console-control-strings@1.1.0: {} console.table@0.10.0: @@ -26619,6 +27532,8 @@ snapshots: consolidated-events@2.0.2: {} + constants-browserify@1.0.0: {} + content-disposition@0.5.2: {} content-disposition@0.5.4: @@ -26696,6 +27611,8 @@ snapshots: convert-hrtime@5.0.0: {} + convert-source-map@1.1.3: {} + convert-source-map@2.0.0: {} cookie-es@1.2.2: {} @@ -26722,6 +27639,8 @@ snapshots: core-js-pure@3.39.0: {} + core-js@2.6.12: {} + core-js@3.39.0: {} core-util-is@1.0.2: {} @@ -26772,6 +27691,11 @@ snapshots: optionalDependencies: typescript: 5.6.3 + create-ecdh@4.0.4: + dependencies: + bn.js: 4.12.1 + elliptic: 6.6.1 + create-hash@1.2.0: dependencies: cipher-base: 1.0.6 @@ -26780,6 +27704,15 @@ snapshots: ripemd160: 2.0.2 sha.js: 2.4.11 + create-hmac@1.1.7: + dependencies: + cipher-base: 1.0.6 + create-hash: 1.2.0 + inherits: 2.0.4 + ripemd160: 2.0.2 + safe-buffer: 5.2.1 + sha.js: 2.4.11 + create-jest@29.7.0(@types/node@20.17.9)(ts-node@10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.6.3)): dependencies: '@jest/types': 29.6.3 @@ -26846,6 +27779,21 @@ snapshots: dependencies: uncrypto: 0.1.3 + crypto-browserify@3.12.1: + dependencies: + browserify-cipher: 1.0.1 + browserify-sign: 4.2.3 + create-ecdh: 4.0.4 + create-hash: 1.2.0 + create-hmac: 1.1.7 + diffie-hellman: 5.0.3 + hash-base: 3.0.5 + inherits: 2.0.4 + pbkdf2: 3.1.2 + public-encrypt: 4.0.3 + randombytes: 2.1.0 + randomfill: 1.0.4 + crypto-hash@1.3.0: {} crypto-random-string@4.0.0: @@ -27241,6 +28189,8 @@ snapshots: dargs@7.0.0: {} + dash-ast@1.0.0: {} + dashdash@1.14.1: dependencies: assert-plus: 1.0.0 @@ -27368,6 +28318,8 @@ snapshots: has-property-descriptors: 1.0.2 object-keys: 1.1.1 + defined@1.0.1: {} + defu@6.1.4: {} degenerator@5.0.1: @@ -27407,8 +28359,20 @@ snapshots: deprecation@2.3.1: {} + deps-sort@2.0.1: + dependencies: + JSONStream: 1.3.5 + shasum-object: 1.0.0 + subarg: 1.0.0 + through2: 2.0.5 + dequal@2.0.3: {} + des.js@1.1.0: + dependencies: + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + destr@2.0.3: {} destroy@1.2.0: {} @@ -27441,6 +28405,12 @@ snapshots: transitivePeerDependencies: - supports-color + detective@5.2.1: + dependencies: + acorn-node: 1.8.2 + defined: 1.0.1 + minimist: 1.2.8 + devlop@1.1.0: dependencies: dequal: 2.0.3 @@ -27461,6 +28431,12 @@ snapshots: diff@4.0.2: {} + diffie-hellman@5.0.3: + dependencies: + bn.js: 4.12.1 + miller-rabin: 4.0.1 + randombytes: 2.1.0 + dijkstrajs@1.0.3: {} dir-glob@3.0.1: @@ -27543,6 +28519,8 @@ snapshots: domhandler: 5.0.3 entities: 4.5.0 + domain-browser@1.2.0: {} + domelementtype@2.3.0: {} domhandler@4.3.1: @@ -27596,6 +28574,10 @@ snapshots: es-errors: 1.3.0 gopd: 1.2.0 + duplexer2@0.1.4: + dependencies: + readable-stream: 2.3.8 + duplexer@0.1.2: {} duplexify@4.1.3: @@ -27672,6 +28654,16 @@ snapshots: - utf-8-validate - zod + ed25519-hd-key@1.1.2: + dependencies: + bip39: 3.0.2 + create-hmac: 1.1.7 + tweetnacl: 1.0.3 + + ed2curve@0.3.0: + dependencies: + tweetnacl: 1.0.3 + ee-first@1.1.1: {} efrt@2.7.0: {} @@ -27827,6 +28819,12 @@ snapshots: esast-util-from-estree: 2.0.0 vfile-message: 4.0.2 + esbuild-plugin-polyfill-node@0.3.0(esbuild@0.24.0): + dependencies: + '@jspm/core': 2.1.0 + esbuild: 0.24.0 + import-meta-resolve: 3.1.1 + esbuild@0.19.12: optionalDependencies: '@esbuild/aix-ppc64': 0.19.12 @@ -27928,6 +28926,10 @@ snapshots: optionalDependencies: source-map: 0.6.1 + eslint-config-prettier@9.1.0(eslint@9.13.0(jiti@2.4.0)): + dependencies: + eslint: 9.13.0(jiti@2.4.0) + eslint-config-prettier@9.1.0(eslint@9.16.0(jiti@2.4.0)): dependencies: eslint: 9.16.0(jiti@2.4.0) @@ -27947,6 +28949,16 @@ snapshots: transitivePeerDependencies: - supports-color + eslint-plugin-prettier@5.2.1(@types/eslint@9.6.1)(eslint-config-prettier@9.1.0(eslint@9.13.0(jiti@2.4.0)))(eslint@9.13.0(jiti@2.4.0))(prettier@3.4.1): + dependencies: + eslint: 9.13.0(jiti@2.4.0) + prettier: 3.4.1 + prettier-linter-helpers: 1.0.0 + synckit: 0.9.2 + optionalDependencies: + '@types/eslint': 9.6.1 + eslint-config-prettier: 9.1.0(eslint@9.13.0(jiti@2.4.0)) + eslint-plugin-react-hooks@5.0.0(eslint@9.16.0(jiti@2.4.0)): dependencies: eslint: 9.16.0(jiti@2.4.0) @@ -27955,6 +28967,17 @@ snapshots: dependencies: eslint: 9.16.0(jiti@2.4.0) + eslint-plugin-vitest@0.5.4(@typescript-eslint/eslint-plugin@8.16.0(@typescript-eslint/parser@8.16.0(eslint@9.16.0(jiti@2.4.0))(typescript@5.6.3))(eslint@9.16.0(jiti@2.4.0))(typescript@5.6.3))(eslint@9.13.0(jiti@2.4.0))(typescript@5.6.3)(vitest@2.1.5(@types/node@22.8.4)(jsdom@25.0.1(bufferutil@4.0.8)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0)): + dependencies: + '@typescript-eslint/utils': 7.18.0(eslint@9.13.0(jiti@2.4.0))(typescript@5.6.3) + eslint: 9.13.0(jiti@2.4.0) + optionalDependencies: + '@typescript-eslint/eslint-plugin': 8.16.0(@typescript-eslint/parser@8.16.0(eslint@9.16.0(jiti@2.4.0))(typescript@5.6.3))(eslint@9.16.0(jiti@2.4.0))(typescript@5.6.3) + vitest: 2.1.5(@types/node@22.8.4)(jsdom@25.0.1(bufferutil@4.0.8)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@5.0.10))(terser@5.37.0) + transitivePeerDependencies: + - supports-color + - typescript + eslint-scope@5.1.1: dependencies: esrecurse: 4.3.0 @@ -28017,6 +29040,48 @@ snapshots: transitivePeerDependencies: - supports-color + eslint@9.13.0(jiti@2.4.0): + dependencies: + '@eslint-community/eslint-utils': 4.4.1(eslint@9.13.0(jiti@2.4.0)) + '@eslint-community/regexpp': 4.12.1 + '@eslint/config-array': 0.18.0 + '@eslint/core': 0.7.0 + '@eslint/eslintrc': 3.2.0 + '@eslint/js': 9.13.0 + '@eslint/plugin-kit': 0.2.4 + '@humanfs/node': 0.16.6 + '@humanwhocodes/module-importer': 1.0.1 + '@humanwhocodes/retry': 0.3.1 + '@types/estree': 1.0.6 + '@types/json-schema': 7.0.15 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.6 + debug: 4.4.0(supports-color@5.5.0) + escape-string-regexp: 4.0.0 + eslint-scope: 8.2.0 + eslint-visitor-keys: 4.2.0 + espree: 10.3.0 + esquery: 1.6.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 8.0.0 + find-up: 5.0.0 + glob-parent: 6.0.2 + ignore: 5.3.2 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + json-stable-stringify-without-jsonify: 1.0.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.4 + text-table: 0.2.0 + optionalDependencies: + jiti: 2.4.0 + transitivePeerDependencies: + - supports-color + eslint@9.16.0(jiti@2.4.0): dependencies: '@eslint-community/eslint-utils': 4.4.1(eslint@9.16.0(jiti@2.4.0)) @@ -28060,6 +29125,21 @@ snapshots: esm-env@1.2.1: {} + esmify@2.1.1: + dependencies: + '@babel/core': 7.26.0 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.26.0) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-transform-modules-commonjs': 7.26.3(@babel/core@7.26.0) + babel-plugin-import-to-require: 1.0.0 + cached-path-relative: 1.1.0 + concat-stream: 1.6.2 + duplexer2: 0.1.4 + through2: 2.0.5 + transitivePeerDependencies: + - supports-color + esniff@2.0.1: dependencies: d: 1.0.2 @@ -28188,6 +29268,11 @@ snapshots: eventsource-parser@3.0.0: {} + evp_bytestokey@1.0.3: + dependencies: + md5.js: 1.3.5 + safe-buffer: 5.2.1 + execa@5.0.0: dependencies: cross-spawn: 7.0.6 @@ -28314,6 +29399,8 @@ snapshots: fast-deep-equal@3.1.3: {} + fast-diff@1.3.0: {} + fast-fifo@1.3.2: {} fast-glob@3.3.2: @@ -28515,6 +29602,10 @@ snapshots: optionalDependencies: debug: 4.4.0(supports-color@5.5.0) + for-each@0.3.3: + dependencies: + is-callable: 1.2.7 + for-in@0.1.8: {} for-in@1.0.2: {} @@ -28676,6 +29767,8 @@ snapshots: gensync@1.0.0-beta.2: {} + get-assigned-identifiers@1.2.0: {} + get-caller-file@2.0.5: {} get-east-asian-width@1.3.0: {} @@ -28898,6 +29991,8 @@ snapshots: globals@15.13.0: {} + globals@9.18.0: {} + globby@11.1.0: dependencies: array-union: 2.1.0 @@ -29032,6 +30127,10 @@ snapshots: hard-rejection@2.1.0: {} + has-ansi@2.0.0: + dependencies: + ansi-regex: 2.1.1 + has-flag@3.0.0: {} has-flag@4.0.0: {} @@ -29042,10 +30141,19 @@ snapshots: has-symbols@1.1.0: {} + has-tostringtag@1.0.2: + dependencies: + has-symbols: 1.1.0 + has-unicode@2.0.1: {} has-yarn@3.0.0: {} + hash-base@3.0.5: + dependencies: + inherits: 2.0.4 + safe-buffer: 5.2.1 + hash-base@3.1.0: dependencies: inherits: 2.0.4 @@ -29320,6 +30428,8 @@ snapshots: optionalDependencies: webpack: 5.97.1(@swc/core@1.10.1(@swc/helpers@0.5.15)) + htmlescape@1.1.1: {} + htmlparser2@6.1.0: dependencies: domelementtype: 2.3.0 @@ -29404,6 +30514,8 @@ snapshots: quick-lru: 5.1.1 resolve-alpn: 1.2.1 + https-browserify@1.0.0: {} + https-proxy-agent@4.0.0: dependencies: agent-base: 5.1.1 @@ -29484,6 +30596,8 @@ snapshots: pkg-dir: 4.2.0 resolve-cwd: 3.0.0 + import-meta-resolve@3.1.1: {} + import-meta-resolve@4.1.0: {} imurmurhash@0.1.4: {} @@ -29521,6 +30635,10 @@ snapshots: transitivePeerDependencies: - bluebird + inline-source-map@0.6.3: + dependencies: + source-map: 0.5.7 + inline-style-parser@0.1.1: {} inline-style-parser@0.2.4: {} @@ -29543,6 +30661,19 @@ snapshots: through: 2.3.8 wrap-ansi: 6.2.0 + insert-module-globals@7.2.1: + dependencies: + JSONStream: 1.3.5 + acorn-node: 1.8.2 + combine-source-map: 0.8.0 + concat-stream: 1.6.2 + is-buffer: 1.1.6 + path-is-absolute: 1.0.1 + process: 0.11.10 + through2: 2.0.5 + undeclared-identifiers: 1.1.3 + xtend: 4.0.2 + int64-buffer@0.1.10: {} internmap@1.0.1: {} @@ -29599,6 +30730,11 @@ snapshots: is-alphabetical: 2.0.1 is-decimal: 2.0.1 + is-arguments@1.2.0: + dependencies: + call-bound: 1.0.2 + has-tostringtag: 1.0.2 + is-arrayish@0.2.1: {} is-arrayish@0.3.2: {} @@ -29615,6 +30751,8 @@ snapshots: dependencies: builtin-modules: 3.3.0 + is-callable@1.2.7: {} + is-ci@3.0.1: dependencies: ci-info: 3.9.0 @@ -29643,6 +30781,10 @@ snapshots: is-generator-fn@2.1.0: {} + is-generator-function@1.0.10: + dependencies: + has-tostringtag: 1.0.2 + is-glob@4.0.3: dependencies: is-extglob: 2.1.1 @@ -29728,6 +30870,10 @@ snapshots: dependencies: text-extensions: 2.4.0 + is-typed-array@1.1.13: + dependencies: + which-typed-array: 1.1.16 + is-typedarray@1.0.0: {} is-unicode-supported@0.1.0: {} @@ -30323,6 +31469,8 @@ snapshots: dependencies: base64-js: 1.5.1 + js-tokens@3.0.2: {} + js-tokens@4.0.0: {} js-yaml@3.14.1: @@ -30485,6 +31633,12 @@ snapshots: dependencies: commander: 8.3.0 + keccak@3.0.2: + dependencies: + node-addon-api: 2.0.2 + node-gyp-build: 4.8.4 + readable-stream: 3.6.2 + keyv@4.5.4: dependencies: json-buffer: 3.0.1 @@ -30513,6 +31667,11 @@ snapshots: doublearray: 0.0.2 zlibjs: 0.3.1 + labeled-stream-splicer@2.0.2: + dependencies: + inherits: 2.0.4 + stream-splicer: 2.0.1 + langchain@0.3.6(@langchain/core@0.3.23(openai@4.73.0(encoding@0.1.13)(zod@3.23.8)))(axios@1.7.8)(encoding@0.1.13)(handlebars@4.7.8)(openai@4.73.0(encoding@0.1.13)(zod@3.23.8)): dependencies: '@langchain/core': 0.3.23(openai@4.73.0(encoding@0.1.13)(zod@3.23.8)) @@ -30858,6 +32017,8 @@ snapshots: lodash.kebabcase@4.1.1: {} + lodash.memoize@3.0.4: {} + lodash.memoize@4.1.2: {} lodash.merge@4.6.2: {} @@ -31637,6 +32798,11 @@ snapshots: - supports-color - utf-8-validate + miller-rabin@4.0.1: + dependencies: + bn.js: 4.12.1 + brorand: 1.1.0 + mime-db@1.33.0: {} mime-db@1.52.0: {} @@ -31808,6 +32974,24 @@ snapshots: modify-values@1.0.1: {} + module-deps@6.2.3: + dependencies: + JSONStream: 1.3.5 + browser-resolve: 2.0.0 + cached-path-relative: 1.1.0 + concat-stream: 1.6.2 + defined: 1.0.1 + detective: 5.2.1 + duplexer2: 0.1.4 + inherits: 2.0.4 + parents: 1.0.1 + readable-stream: 2.3.8 + resolve: 1.22.8 + stream-combiner2: 1.1.1 + subarg: 1.0.0 + through2: 2.0.5 + xtend: 4.0.2 + module-details-from-path@1.0.3: {} moment@2.30.1: {} @@ -31880,6 +33064,8 @@ snapshots: nan@2.22.0: optional: true + nanoassert@1.1.0: {} + nanoid@3.3.6: {} nanoid@3.3.8: {} @@ -31933,6 +33119,8 @@ snapshots: dependencies: semver: 7.6.3 + node-addon-api@2.0.2: {} + node-addon-api@5.1.0: {} node-addon-api@6.1.0: {} @@ -32417,7 +33605,7 @@ snapshots: ora@5.3.0: dependencies: bl: 4.1.0 - chalk: 4.1.0 + chalk: 4.1.2 cli-cursor: 3.1.0 cli-spinners: 2.6.1 is-interactive: 1.0.0 @@ -32449,6 +33637,8 @@ snapshots: string-width: 7.2.0 strip-ansi: 7.1.0 + os-browserify@0.3.0: {} + os-tmpdir@1.0.2: {} otpauth@9.3.5: @@ -32599,6 +33789,8 @@ snapshots: pako@0.2.9: {} + pako@1.0.11: {} + pako@2.1.0: {} param-case@3.0.4: @@ -32610,6 +33802,19 @@ snapshots: dependencies: callsites: 3.1.0 + parents@1.0.1: + dependencies: + path-platform: 0.11.15 + + parse-asn1@5.1.7: + dependencies: + asn1.js: 4.10.1 + browserify-aes: 1.2.0 + evp_bytestokey: 1.0.3 + hash-base: 3.0.5 + pbkdf2: 3.1.2 + safe-buffer: 5.2.1 + parse-cache-control@1.0.1: {} parse-conflict-json@3.0.1: @@ -32685,6 +33890,8 @@ snapshots: no-case: 3.0.4 tslib: 2.8.1 + path-browserify@1.0.1: {} + path-data-parser@0.1.0: {} path-exists-cli@2.0.0: @@ -32708,6 +33915,8 @@ snapshots: path-parse@1.0.7: {} + path-platform@0.11.15: {} + path-scurry@1.11.1: dependencies: lru-cache: 10.4.3 @@ -32741,6 +33950,14 @@ snapshots: pathval@2.0.0: {} + pbkdf2@3.1.2: + dependencies: + create-hash: 1.2.0 + create-hmac: 1.1.7 + ripemd160: 2.0.2 + safe-buffer: 5.2.1 + sha.js: 2.4.11 + pdfjs-dist@4.7.76(encoding@0.1.13): optionalDependencies: canvas: 2.11.2(encoding@0.1.13) @@ -32970,6 +34187,8 @@ snapshots: poseidon-lite@0.2.1: {} + possible-typed-array-names@1.0.0: {} + postcss-attribute-case-insensitive@7.0.1(postcss@8.4.49): dependencies: postcss: 8.4.49 @@ -33659,6 +34878,10 @@ snapshots: prelude-ls@1.2.1: {} + prettier-linter-helpers@1.0.0: + dependencies: + fast-diff: 1.3.0 + prettier@3.4.1: {} pretty-bytes@6.1.1: {} @@ -33817,6 +35040,15 @@ snapshots: pstree.remy@1.1.8: {} + public-encrypt@4.0.3: + dependencies: + bn.js: 4.12.1 + browserify-rsa: 4.1.1 + create-hash: 1.2.0 + parse-asn1: 5.1.7 + randombytes: 2.1.0 + safe-buffer: 5.2.1 + pump@3.0.2: dependencies: end-of-stream: 1.4.4 @@ -33838,6 +35070,8 @@ snapshots: punycode.js@2.3.1: {} + punycode@1.4.1: {} + punycode@2.3.1: {} pupa@3.1.0: @@ -33947,6 +35181,8 @@ snapshots: split-on-first: 1.1.0 strict-uri-encode: 2.0.0 + querystring-es3@0.2.1: {} + querystringify@2.2.0: {} queue-microtask@1.2.3: {} @@ -33969,6 +35205,11 @@ snapshots: dependencies: safe-buffer: 5.2.1 + randomfill@1.0.4: + dependencies: + randombytes: 2.1.0 + safe-buffer: 5.2.1 + range-parser@1.2.0: {} range-parser@1.2.1: {} @@ -34157,6 +35398,10 @@ snapshots: read-cmd-shim@4.0.0: {} + read-only-stream@2.0.0: + dependencies: + readable-stream: 2.3.8 + read-package-json-fast@3.0.2: dependencies: json-parse-even-better-errors: 3.0.2 @@ -34315,6 +35560,8 @@ snapshots: regenerate@1.4.2: {} + regenerator-runtime@0.11.1: {} + regenerator-runtime@0.14.1: {} regenerator-transform@0.15.2: @@ -34714,6 +35961,8 @@ snapshots: ajv-formats: 2.1.1(ajv@8.17.1) ajv-keywords: 5.1.0(ajv@8.17.1) + scryptsy@2.1.0: {} + scule@1.3.0: {} search-insights@2.17.3: {} @@ -34895,6 +36144,10 @@ snapshots: '@img/sharp-win32-ia32': 0.33.5 '@img/sharp-win32-x64': 0.33.5 + shasum-object@1.0.0: + dependencies: + fast-safe-stringify: 2.1.1 + shebang-command@2.0.0: dependencies: shebang-regex: 3.0.0 @@ -35083,6 +36336,8 @@ snapshots: buffer-from: 1.1.2 source-map: 0.6.1 + source-map@0.5.7: {} + source-map@0.6.1: {} source-map@0.7.4: {} @@ -35242,6 +36497,23 @@ snapshots: steno@4.0.2: {} + stream-browserify@3.0.0: + dependencies: + inherits: 2.0.4 + readable-stream: 3.6.2 + + stream-combiner2@1.1.1: + dependencies: + duplexer2: 0.1.4 + readable-stream: 2.3.8 + + stream-http@3.2.0: + dependencies: + builtin-status-codes: 3.0.0 + inherits: 2.0.4 + readable-stream: 3.6.2 + xtend: 4.0.2 + stream-parser@0.3.1: dependencies: debug: 2.6.9 @@ -35250,6 +36522,11 @@ snapshots: stream-shift@1.0.3: {} + stream-splicer@2.0.1: + dependencies: + inherits: 2.0.4 + readable-stream: 2.3.8 + streamsearch@1.1.0: {} streamx@2.21.1: @@ -35308,6 +36585,10 @@ snapshots: is-obj: 1.0.1 is-regexp: 1.0.0 + strip-ansi@3.0.1: + dependencies: + ansi-regex: 2.1.1 + strip-ansi@6.0.1: dependencies: ansi-regex: 5.0.1 @@ -35368,6 +36649,10 @@ snapshots: stylis@4.3.4: {} + subarg@1.0.0: + dependencies: + minimist: 1.2.8 + sucrase@3.35.0: dependencies: '@jridgewell/gen-mapping': 0.3.8 @@ -35389,6 +36674,8 @@ snapshots: superstruct@2.0.2: {} + supports-color@2.0.0: {} + supports-color@5.5.0: dependencies: has-flag: 3.0.0 @@ -35445,6 +36732,15 @@ snapshots: symbol-tree@3.2.4: {} + synckit@0.9.2: + dependencies: + '@pkgr/core': 0.1.1 + tslib: 2.8.1 + + syntax-error@1.4.0: + dependencies: + acorn-node: 1.8.2 + system-architecture@0.1.0: {} systeminformation@5.23.5: {} @@ -35626,6 +36922,10 @@ snapshots: dependencies: convert-hrtime: 5.0.0 + timers-browserify@1.4.2: + dependencies: + process: 0.11.10 + timers-ext@0.1.8: dependencies: es5-ext: 0.10.64 @@ -35672,6 +36972,8 @@ snapshots: tmpl@1.0.5: {} + to-fast-properties@1.0.3: {} + to-regex-range@5.0.1: dependencies: is-number: 7.0.0 @@ -35878,6 +37180,8 @@ snapshots: - tsx - yaml + tty-browserify@0.0.1: {} + tuf-js@2.2.1: dependencies: '@tufjs/models': 2.0.1 @@ -35921,6 +37225,8 @@ snapshots: tweetnacl@0.14.5: {} + tweetnacl@1.0.3: {} + twitter-api-v2@1.18.2: {} tx2@1.0.5: @@ -36010,6 +37316,8 @@ snapshots: dependencies: multiformats: 9.9.0 + umd@3.0.3: {} + unbuild@2.0.0(typescript@5.6.3): dependencies: '@rollup/plugin-alias': 5.1.1(rollup@3.29.5) @@ -36050,6 +37358,14 @@ snapshots: uncrypto@0.1.3: {} + undeclared-identifiers@1.1.3: + dependencies: + acorn-node: 1.8.2 + dash-ast: 1.0.0 + get-assigned-identifiers: 1.2.0 + simple-concat: 1.0.1 + xtend: 4.0.2 + undefsafe@2.0.5: {} undici-types@5.26.5: {} @@ -36259,6 +37575,11 @@ snapshots: querystringify: 2.2.0 requires-port: 1.0.0 + url@0.11.4: + dependencies: + punycode: 1.4.1 + qs: 6.13.0 + use-callback-ref@1.3.2(@types/react@18.3.12)(react@18.3.1): dependencies: react: 18.3.1 @@ -36290,6 +37611,18 @@ snapshots: util-deprecate@1.0.2: {} + util@0.10.4: + dependencies: + inherits: 2.0.3 + + util@0.12.5: + dependencies: + inherits: 2.0.4 + is-arguments: 1.2.0 + is-generator-function: 1.0.10 + is-typed-array: 1.1.13 + which-typed-array: 1.1.16 + utila@0.4.0: {} utility-types@3.11.0: {} @@ -36532,6 +37865,8 @@ snapshots: ini: 1.3.8 js-git: 0.7.8 + vm-browserify@1.1.2: {} + vscode-jsonrpc@8.2.0: {} vscode-languageserver-protocol@3.17.5: @@ -36795,6 +38130,14 @@ snapshots: which-pm-runs@1.1.0: {} + which-typed-array@1.1.16: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.8 + for-each: 0.3.3 + gopd: 1.2.0 + has-tostringtag: 1.0.2 + which@1.3.1: dependencies: isexe: 2.0.0 @@ -37044,4 +38387,4 @@ snapshots: zx@8.2.4: optionalDependencies: '@types/fs-extra': 11.0.4 - '@types/node': 20.17.9 \ No newline at end of file + '@types/node': 20.17.9 From 8959826e9572d00b31455ea0ec4deaaadbf81634 Mon Sep 17 00:00:00 2001 From: Gavrila Andrei Date: Thu, 5 Dec 2024 15:10:40 +0200 Subject: [PATCH 02/15] Add wallet provider and update transfer --- .../plugin-multiversx/src/actions/transfer.ts | 123 ++-------- packages/plugin-multiversx/src/enviroment.ts | 10 +- packages/plugin-multiversx/src/index.ts | 6 - .../plugin-multiversx/src/providers/wallet.ts | 219 ++++++++++++++++++ .../plugin-multiversx/src/utils/amount.ts | 15 ++ pnpm-lock.yaml | 3 + 6 files changed, 265 insertions(+), 111 deletions(-) create mode 100644 packages/plugin-multiversx/src/providers/wallet.ts create mode 100644 packages/plugin-multiversx/src/utils/amount.ts diff --git a/packages/plugin-multiversx/src/actions/transfer.ts b/packages/plugin-multiversx/src/actions/transfer.ts index 736a362a901..2a062779527 100644 --- a/packages/plugin-multiversx/src/actions/transfer.ts +++ b/packages/plugin-multiversx/src/actions/transfer.ts @@ -1,16 +1,3 @@ -import { - UserWallet, - UserSigner, - Address, - Transaction, - TransactionPayload, - TransactionComputer, - ApiNetworkProvider, - UserSecretKey, - TokenTransfer, - TransferTransactionsFactory, - GasEstimator, -} from "@multiversx/sdk-core"; import { elizaLogger, ActionExample, @@ -24,22 +11,23 @@ import { generateObject, type Action, } from "@ai16z/eliza"; +import { WalletProvider } from "../providers/wallet"; +import { validateMultiversxConfig } from "../enviroment"; export interface TransferContent extends Content { tokenAddress: string; - amount: string | number; + amount: string; tokenIdentifier?: string; } function isTransferContent( - runtime: IAgentRuntime, + _runtime: IAgentRuntime, content: any ): content is TransferContent { console.log("Content for transfer", content); return ( typeof content.tokenAddress === "string" && - (typeof content.amount === "string" || - typeof content.amount === "number") + typeof content.amount === "string" ); } @@ -73,27 +61,11 @@ export default { "PAY", ], validate: async (runtime: IAgentRuntime, message: Memory) => { - console.log("Executing transfer from user:", message.userId); - //add custom validate logic here - /* - const adminIds = runtime.getSetting("ADMIN_USER_IDS")?.split(",") || []; - //console.log("Admin IDs from settings:", adminIds); - - const isAdmin = adminIds.includes(message.userId); - - if (isAdmin) { - //console.log(`Authorized transfer from user: ${message.userId}`); - return true; - } - else - { - //console.log(`Unauthorized transfer attempt from user: ${message.userId}`); - return false; - } - */ + console.log("Validating config for user:", message.userId); + await validateMultiversxConfig(runtime); return true; }, - description: "Transfer tokens from the agent's wallet to another address", + description: "Transfer tokens from the agent wallet to another address", handler: async ( runtime: IAgentRuntime, message: Memory, @@ -136,84 +108,27 @@ export default { } try { - const password = runtime.getSetting("MVX_WALLET_PASSWORD"); - const secretKeyHex = runtime.getSetting("MVX_WALLET_SECRET_KEY"); - - const secretKey = UserSecretKey.fromString(secretKeyHex); - const userWallet = UserWallet.fromSecretKey({ - secretKey, - password, - }); + const privateKey = runtime.getSetting("MVX_WALLET_SECRET_KEY"); + const network = runtime.getSetting("MVX_NETWORK"); - const signer = UserSigner.fromWallet(userWallet.toJSON(), password); - const address = signer.getAddress(); - const computer = new TransactionComputer(); - const apiNetworkProvider = new ApiNetworkProvider( - "https://devnet-api.multiversx.com", - { clientName: "eliza-mvx" } - ); - const account = await apiNetworkProvider.getAccount(address); + const walletProvider = new WalletProvider(privateKey, network); if ( content.tokenIdentifier && content.tokenIdentifier.toLowerCase() !== "egld" ) { - console.log(`Sending ESDT ${content.tokenIdentifier}...`); - const factory = new TransferTransactionsFactory( - new GasEstimator() - ); - const token = - await apiNetworkProvider.getFungibleTokenOfAccount( - address, - content.tokenIdentifier - ); - const transfer1 = TokenTransfer.fungibleFromAmount( - content.tokenIdentifier, - content.amount, - Number(token.rawResponse.decimals) - ); - - const esdtTx = factory.createESDTTransfer({ - tokenTransfer: transfer1, - nonce: 7, - sender: address, - receiver: new Address(content.tokenAddress), - chainID: "D", + await walletProvider.sendESDT({ + receiverAddress: content.tokenAddress, + amount: content.amount, + identifier: content.tokenIdentifier, }); - - esdtTx.nonce = BigInt(account.nonce); - const serializedTx = computer.computeBytesForSigning(esdtTx); - esdtTx.signature = await signer.sign(serializedTx); - - const txHash = await apiNetworkProvider.sendTransaction(esdtTx); - console.log("TX hash:", txHash); - return true; } - const recipient = new Address(content.tokenAddress); - const value = Number(content.amount) * 10 ** 18; - const gasLimit = 500000; - - const payloadData = new TransactionPayload(""); - const transaction = new Transaction({ - nonce: account.nonce + 1, - value, - receiver: recipient, - sender: address, - gasLimit, - data: payloadData, - chainID: "D", - version: 1, + await walletProvider.sendEGLD({ + receiverAddress: content.tokenAddress, + amount: content.amount, }); - - const serializedTx = computer.computeBytesForSigning(transaction); - transaction.signature = await signer.sign(serializedTx); - - const txHash = - await apiNetworkProvider.sendTransaction(transaction); - console.log("TX hash:", txHash); - return true; } catch (error) { console.error("Error during token transfer:", error); @@ -223,7 +138,7 @@ export default { content: { error: error.message }, }); } - return false; + return ""; } }, diff --git a/packages/plugin-multiversx/src/enviroment.ts b/packages/plugin-multiversx/src/enviroment.ts index edfa4eacf4a..eba6366fffc 100644 --- a/packages/plugin-multiversx/src/enviroment.ts +++ b/packages/plugin-multiversx/src/enviroment.ts @@ -2,6 +2,10 @@ import { IAgentRuntime } from "@ai16z/eliza"; import { z } from "zod"; export const multiversxEnvSchema = z.object({ + MVX_WALLET_SECRET_KEY: z + .string() + .min(1, "MultiversX wallet private key is required"), + MVX_NETWORK: z.enum(["mainnet", "devnet", "testnet"]), }); export type MultiversxConfig = z.infer; @@ -11,7 +15,11 @@ export async function validateMultiversxConfig( ): Promise { try { const config = { - + MVX_WALLET_SECRET_KEY: + runtime.getSetting("MVX_WALLET_SECRET_KEY") || + process.env.MVX_WALLET_SECRET_KEY, + MVX_NETWORK: + runtime.getSetting("MVX_NETWORK") || process.env.MVX_NETWORK, }; return multiversxEnvSchema.parse(config); diff --git a/packages/plugin-multiversx/src/index.ts b/packages/plugin-multiversx/src/index.ts index 462f9760e87..70f60deaae1 100644 --- a/packages/plugin-multiversx/src/index.ts +++ b/packages/plugin-multiversx/src/index.ts @@ -2,12 +2,6 @@ import { Plugin } from "@ai16z/eliza"; import transfer from "./actions/transfer"; import createToken from "./actions/createToken"; -export const PROVIDER_CONFIG = { - MVX_API: "https://devnet-api.multiversx.com/", - MAX_RETRIES: 3, - RETRY_DELAY: 2000, -}; - export const multiversxPlugin: Plugin = { name: "multiversx", description: "MultiversX Plugin for Eliza", diff --git a/packages/plugin-multiversx/src/providers/wallet.ts b/packages/plugin-multiversx/src/providers/wallet.ts new file mode 100644 index 00000000000..e48e927f11b --- /dev/null +++ b/packages/plugin-multiversx/src/providers/wallet.ts @@ -0,0 +1,219 @@ +// Importing required modules and classes for logging, user signing, transactions, and network operations +import { elizaLogger } from "@ai16z/eliza"; +import { + UserSigner, + Address, + TransactionComputer, + ApiNetworkProvider, + UserSecretKey, + TokenTransfer, + TransferTransactionsFactory, + TransactionsFactoryConfig, + Token, + Transaction, +} from "@multiversx/sdk-core"; +import { denominateAmount } from "../utils/amount"; + +// Network configuration object for different environments (mainnet, devnet, testnet) +const MVX_NETWORK = { + mainnet: { + chainID: "1", // Mainnet chain ID + apiURL: "https://api.multiversx.com", // Mainnet API URL + }, + devnet: { + chainID: "D", // Devnet chain ID + apiURL: "https://devnet-api.multiversx.com", // Devnet API URL + }, + testnet: { + chainID: "T", // Testnet chain ID + apiURL: "https://testnet-api.multiversx.com", // Testnet API URL + }, +}; + +// WalletProvider class handles wallet-related operations, such as signing transactions, retrieving balance, and sending tokens +export class WalletProvider { + private signer: UserSigner; // Handles cryptographic signing + private apiNetworkProvider: ApiNetworkProvider; // Interacts with the MultiversX network + private chainID: string; // Current network chain ID + + /** + * Constructor to initialize WalletProvider with a private key and network configuration + * @param privateKey - User's private key for signing transactions + * @param network - Target network (mainnet, devnet, or testnet) + */ + constructor(privateKey: string, network: string) { + if (!MVX_NETWORK[network]) { + throw new Error(`Unsupported network: ${network}`); // Validate network + } + + const networkConfig = MVX_NETWORK[network]; + this.chainID = networkConfig.chainID; + + // Initialize the signer with the user's private key + const secretKey = UserSecretKey.fromString(privateKey); + this.signer = new UserSigner(secretKey); + + // Set up the network provider for API interactions + this.apiNetworkProvider = new ApiNetworkProvider(networkConfig.apiURL, { + clientName: "eliza-mvx", + }); + } + + /** + * Retrieve the wallet address derived from the private key + * @returns Address object + */ + public getAddress(): Address { + return this.signer.getAddress(); + } + + /** + * Fetch the wallet's current EGLD balance + * @returns Promise resolving to the wallet's balance as a string + */ + public async getBalance(): Promise { + const address = new Address(this.getAddress()); + const account = await this.apiNetworkProvider.getAccount(address); + return account.balance.toString(); // Return balance as a string + } + + /** + * Send EGLD tokens to another wallet + * @param receiverAddress - Recipient's wallet address + * @param amount - Amount of EGLD to send + * @returns Transaction hash as a string + */ + public async sendEGLD({ + receiverAddress, + amount, + }: { + receiverAddress: string; + amount: string; + }): Promise { + try { + const receiver = new Address(receiverAddress); + const value = denominateAmount({ amount, decimals: 18 }); // Convert amount to the smallest unit + const senderAddress = this.getAddress(); + + // Prepare the transaction factory with the current chain ID + const factoryConfig = new TransactionsFactoryConfig({ + chainID: this.chainID, + }); + const factory = new TransferTransactionsFactory({ + config: factoryConfig, + }); + + // Create a native EGLD transfer transaction + const transaction = factory.createTransactionForNativeTokenTransfer( + { + sender: this.getAddress(), + receiver: receiver, + nativeAmount: BigInt(value), + } + ); + + // Get the sender's account details to set the nonce + const account = + await this.apiNetworkProvider.getAccount(senderAddress); + transaction.nonce = BigInt(account.nonce); + + // Sign the transaction + const signature = await this.signTransaction(transaction); + transaction.signature = signature; + + // Broadcast the transaction to the network + const txHash = + await this.apiNetworkProvider.sendTransaction(transaction); + + elizaLogger.log(`TxHash: ${txHash}`); // Log transaction hash + return txHash; + } catch (error) { + console.error("Error sending EGLD transaction:", error); + throw new Error( + `Failed to send EGLD: ${error.message || "Unknown error"}` + ); + } + } + + /** + * Sign a transaction using the wallet's private key + * @param transaction - The transaction object to sign + * @returns The transaction signature as a string + */ + public async signTransaction(transaction: Transaction) { + const computer = new TransactionComputer(); + const serializedTx = computer.computeBytesForSigning(transaction); // Prepare transaction for signing + const signature = await this.signer.sign(serializedTx); // Sign the transaction + return signature; + } + + /** + * Send ESDT (eStandard Digital Token) tokens to another wallet + * @param receiverAddress - Recipient's wallet address + * @param amount - Amount of ESDT to send + * @param identifier - ESDT token identifier (e.g., PEPE-3eca7c) + * @returns Transaction hash as a string + */ + public async sendESDT({ + receiverAddress, + amount, + identifier, + }: { + receiverAddress: string; + amount: string; + identifier: string; + }): Promise { + try { + const address = this.getAddress(); + + // Set up transaction factory for ESDT transfers + const config = new TransactionsFactoryConfig({ + chainID: this.chainID, + }); + const factory = new TransferTransactionsFactory({ config }); + + // Retrieve token details to determine the token's decimals + const token = + await this.apiNetworkProvider.getFungibleTokenOfAccount( + address, + identifier + ); + + // Convert amount to the token's smallest unit + const value = denominateAmount({ + amount, + decimals: token.rawResponse.decimals, + }); + + // Create an ESDT transfer transaction + const transaction = factory.createTransactionForESDTTokenTransfer({ + sender: this.getAddress(), + receiver: new Address(receiverAddress), + tokenTransfers: [ + new TokenTransfer({ + token: new Token({ identifier }), + amount: BigInt(value), + }), + ], + }); + + // Set the transaction nonce + const account = await this.apiNetworkProvider.getAccount(address); + transaction.nonce = BigInt(account.nonce); + + // Sign and broadcast the transaction + const signature = await this.signTransaction(transaction); + transaction.signature = signature; + const txHash = + await this.apiNetworkProvider.sendTransaction(transaction); + + elizaLogger.log(`TxHash: ${txHash}`); // Log transaction hash + return txHash; + } catch (error) { + console.error("Error sending ESDT transaction:", error); + throw new Error( + `Failed to send ESDT: ${error.message || "Unknown error"}` + ); + } + } +} diff --git a/packages/plugin-multiversx/src/utils/amount.ts b/packages/plugin-multiversx/src/utils/amount.ts new file mode 100644 index 00000000000..a3f8f901615 --- /dev/null +++ b/packages/plugin-multiversx/src/utils/amount.ts @@ -0,0 +1,15 @@ +import BigNumber from "bignumber.js"; + +BigNumber.config({ ROUNDING_MODE: BigNumber.ROUND_FLOOR }); + +type PayloadType = { + amount: string; + decimals: number; +}; + +export const denominateAmount = ({ amount, decimals }: PayloadType) => { + return new BigNumber(amount) + .shiftedBy(decimals) + .decimalPlaces(0) + .toFixed(0); +}; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 53681dc2f5b..6aa3407b000 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1106,6 +1106,9 @@ importers: '@multiversx/sdk-core': specifier: 13.15.0 version: 13.15.0(bignumber.js@9.1.2)(protobufjs@7.4.0) + bignumber.js: + specifier: 9.1.2 + version: 9.1.2 browserify: specifier: ^17.0.1 version: 17.0.1 From c65791e9c849fd2ce09c82e891ba80f349266a7b Mon Sep 17 00:00:00 2001 From: Gavrila Andrei Date: Thu, 5 Dec 2024 16:18:12 +0200 Subject: [PATCH 03/15] Update createToken --- packages/plugin-multiversx/package.json | 1 + .../src/actions/createToken.ts | 111 +++++------------- .../plugin-multiversx/src/providers/wallet.ts | 104 ++++++++++++++-- 3 files changed, 122 insertions(+), 94 deletions(-) diff --git a/packages/plugin-multiversx/package.json b/packages/plugin-multiversx/package.json index 42f0a0c37e0..9f89fce2e14 100644 --- a/packages/plugin-multiversx/package.json +++ b/packages/plugin-multiversx/package.json @@ -7,6 +7,7 @@ "dependencies": { "@ai16z/eliza": "workspace:*", "@multiversx/sdk-core": "13.15.0", + "bignumber.js": "9.1.2", "browserify": "^17.0.1", "esbuild-plugin-polyfill-node": "^0.3.0", "esmify": "^2.1.1", diff --git a/packages/plugin-multiversx/src/actions/createToken.ts b/packages/plugin-multiversx/src/actions/createToken.ts index 3c501229b73..e1f8a7eaf06 100644 --- a/packages/plugin-multiversx/src/actions/createToken.ts +++ b/packages/plugin-multiversx/src/actions/createToken.ts @@ -1,13 +1,3 @@ -import { - UserWallet, - UserSigner, - ApiNetworkProvider, - UserSecretKey, - TransactionsFactoryConfig, - TokenManagementTransactionsFactory, - Address, - TransactionComputer, -} from "@multiversx/sdk-core"; import { elizaLogger, ActionExample, @@ -21,6 +11,8 @@ import { composeContext, type Action, } from "@ai16z/eliza"; +import { WalletProvider } from "../providers/wallet"; +import { validateMultiversxConfig } from "../enviroment"; export interface CreateTokenContent extends Content { tokenName: string; @@ -29,17 +21,12 @@ export interface CreateTokenContent extends Content { amount: string; } -function isTransferContent( +function isCreateTokenContent( runtime: IAgentRuntime, content: any ): content is CreateTokenContent { console.log("Content for create token", content); - return ( - content.tokenName && - content.tokenTicker && - content.decimals && - content.amount - ); + return content.tokenName && content.tokenTicker && content.amount; } const createTokenTemplate = `Respond with a JSON markdown block containing only the extracted values. Use null for any values that cannot be determined. @@ -68,24 +55,8 @@ export default { name: "CREATE_TOKEN", similes: ["DEPLOY_TOKEN"], validate: async (runtime: IAgentRuntime, message: Memory) => { - console.log("Starting new token creation from user:", message.userId); - //add custom validate logic here - /* - const adminIds = runtime.getSetting("ADMIN_USER_IDS")?.split(",") || []; - //console.log("Admin IDs from settings:", adminIds); - - const isAdmin = adminIds.includes(message.userId); - - if (isAdmin) { - //console.log(`Authorized transfer from user: ${message.userId}`); - return true; - } - else - { - //console.log(`Unauthorized transfer attempt from user: ${message.userId}`); - return false; - } - */ + console.log("Validating config for user:", message.userId); + await validateMultiversxConfig(runtime); return true; }, description: "Create a new token.", @@ -119,7 +90,7 @@ export default { }); // Validate transfer content - if (!isTransferContent(runtime, content)) { + if (!isCreateTokenContent(runtime, content)) { console.error("Invalid content for TRANSFER_TOKEN action."); if (callback) { callback({ @@ -131,54 +102,17 @@ export default { } try { - const password = runtime.getSetting("MVX_WALLET_PASSWORD"); - const secretKeyHex = runtime.getSetting("MVX_WALLET_SECRET_KEY"); - - const secretKey = UserSecretKey.fromString(secretKeyHex); - - const signer = new UserSigner(secretKey); - const address = signer.getAddress(); + const privateKey = runtime.getSetting("MVX_WALLET_SECRET_KEY"); + const network = runtime.getSetting("MVX_NETWORK"); - const apiNetworkProvider = new ApiNetworkProvider( - "https://devnet-api.multiversx.com", - { clientName: "eliza-mvx" } - ); + const walletProvider = new WalletProvider(privateKey, network); - const factoryConfig = new TransactionsFactoryConfig({ - chainID: "D", - }); - const factory = new TokenManagementTransactionsFactory({ - config: factoryConfig, - }); - - const decimals = parseInt(content.decimals); - const amount = - Number(content.amount) * 10 ** Number(content.decimals); - - const account = await apiNetworkProvider.getAccount(address); - - const transaction = factory.createTransactionForIssuingFungible({ - sender: new Address(address), + await walletProvider.createESDT({ tokenName: content.tokenName, - tokenTicker: content.tokenTicker.toUpperCase(), - initialSupply: BigInt(amount), - numDecimals: BigInt(decimals), - canFreeze: false, - canWipe: false, - canPause: false, - canChangeOwner: false, - canUpgrade: false, - canAddSpecialRoles: false, + amount: content.amount, + decimals: Number(content.decimals) || 18, + tokenTicker: content.tokenTicker, }); - - const computer = new TransactionComputer(); - transaction.nonce = BigInt(account.nonce); - const serializedTx = computer.computeBytesForSigning(transaction); - transaction.signature = await signer.sign(serializedTx); - - const txHash = - await apiNetworkProvider.sendTransaction(transaction); - console.log("TxHash", txHash); return true; } catch (error) { console.error("Error during creating token:", error); @@ -197,7 +131,22 @@ export default { { user: "{{user1}}", content: { - text: "Create a token called TEST with ticker TST, 18 decimals and amount of 10000", + text: "Create a token XTREME with ticker XTR and supply of 10000", + action: "CREATE_TOKEN", + }, + }, + { + user: "{{user2}}", + content: { + text: "Succesfully created token.", + }, + }, + ], + [ + { + user: "{{user1}}", + content: { + text: "Create a token TEST with ticker TST, 18 decimals and su of 10000", action: "CREATE_TOKEN", }, }, diff --git a/packages/plugin-multiversx/src/providers/wallet.ts b/packages/plugin-multiversx/src/providers/wallet.ts index e48e927f11b..0156820a21f 100644 --- a/packages/plugin-multiversx/src/providers/wallet.ts +++ b/packages/plugin-multiversx/src/providers/wallet.ts @@ -11,6 +11,7 @@ import { TransactionsFactoryConfig, Token, Transaction, + TokenManagementTransactionsFactory, } from "@multiversx/sdk-core"; import { denominateAmount } from "../utils/amount"; @@ -19,14 +20,18 @@ const MVX_NETWORK = { mainnet: { chainID: "1", // Mainnet chain ID apiURL: "https://api.multiversx.com", // Mainnet API URL + explorerURL: "https://explorer.multiversx.com" }, devnet: { chainID: "D", // Devnet chain ID - apiURL: "https://devnet-api.multiversx.com", // Devnet API URL + apiURL: "https://devnet-api.multiversx.com", // Devnet API URL, + explorerURL: "https://devnet-explorer.multiversx.com" + }, testnet: { chainID: "T", // Testnet chain ID apiURL: "https://testnet-api.multiversx.com", // Testnet API URL + explorerURL: "https://testnet-explorer.multiversx.com" }, }; @@ -35,6 +40,7 @@ export class WalletProvider { private signer: UserSigner; // Handles cryptographic signing private apiNetworkProvider: ApiNetworkProvider; // Interacts with the MultiversX network private chainID: string; // Current network chain ID + private explorerURL: string; // Current network explorer URL /** * Constructor to initialize WalletProvider with a private key and network configuration @@ -48,6 +54,7 @@ export class WalletProvider { const networkConfig = MVX_NETWORK[network]; this.chainID = networkConfig.chainID; + this.explorerURL = networkConfig.explorerURL; // Initialize the signer with the user's private key const secretKey = UserSecretKey.fromString(privateKey); @@ -77,6 +84,18 @@ export class WalletProvider { return account.balance.toString(); // Return balance as a string } + /** + * Sign a transaction using the wallet's private key + * @param transaction - The transaction object to sign + * @returns The transaction signature as a string + */ + public async signTransaction(transaction: Transaction) { + const computer = new TransactionComputer(); + const serializedTx = computer.computeBytesForSigning(transaction); // Prepare transaction for signing + const signature = await this.signer.sign(serializedTx); // Sign the transaction + return signature; + } + /** * Send EGLD tokens to another wallet * @param receiverAddress - Recipient's wallet address @@ -126,6 +145,7 @@ export class WalletProvider { await this.apiNetworkProvider.sendTransaction(transaction); elizaLogger.log(`TxHash: ${txHash}`); // Log transaction hash + elizaLogger.log(`Transaction URL: ${this.explorerURL}/transactions/${txHash}`); // View Transaction return txHash; } catch (error) { console.error("Error sending EGLD transaction:", error); @@ -135,18 +155,6 @@ export class WalletProvider { } } - /** - * Sign a transaction using the wallet's private key - * @param transaction - The transaction object to sign - * @returns The transaction signature as a string - */ - public async signTransaction(transaction: Transaction) { - const computer = new TransactionComputer(); - const serializedTx = computer.computeBytesForSigning(transaction); // Prepare transaction for signing - const signature = await this.signer.sign(serializedTx); // Sign the transaction - return signature; - } - /** * Send ESDT (eStandard Digital Token) tokens to another wallet * @param receiverAddress - Recipient's wallet address @@ -208,6 +216,7 @@ export class WalletProvider { await this.apiNetworkProvider.sendTransaction(transaction); elizaLogger.log(`TxHash: ${txHash}`); // Log transaction hash + elizaLogger.log(`Transaction URL: ${this.explorerURL}/transactions/${txHash}`); // View Transaction return txHash; } catch (error) { console.error("Error sending ESDT transaction:", error); @@ -216,4 +225,73 @@ export class WalletProvider { ); } } + + /** + * Create a new Elrond Standard Digital Token (ESDT). + * @param tokenName - The name of the token to be created. + * @param tokenTicker - The ticker symbol for the token. + * @param amount - The initial supply of the token. + * @param decimals - The number of decimal places for the token. + * @returns The transaction hash of the created ESDT. + */ + public async createESDT({ + tokenName, + tokenTicker, + amount, + decimals, + }: { + tokenName: string; + tokenTicker: string; + amount: string; + decimals: number; + }): Promise { + try { + const address = this.getAddress(); // Retrieve the sender's address + + const factoryConfig = new TransactionsFactoryConfig({ + chainID: this.chainID, // Set the chain ID for the transaction factory + }); + const factory = new TokenManagementTransactionsFactory({ + config: factoryConfig, // Initialize the factory with the configuration + }); + + const totalSupply = denominateAmount({ amount, decimals }); + + // Create a transaction for issuing a fungible token + const transaction = factory.createTransactionForIssuingFungible({ + sender: new Address(address), // Specify the sender's address + tokenName, // Name of the token + tokenTicker: tokenTicker.toUpperCase(), // Token ticker in uppercase + initialSupply: BigInt(totalSupply), // Initial supply as a BigInt + numDecimals: BigInt(decimals), // Number of decimals as a BigInt + canFreeze: false, // Token cannot be frozen + canWipe: false, // Token cannot be wiped + canPause: false, // Token cannot be paused + canChangeOwner: true, // Ownership can be changed + canUpgrade: true, // Token can be upgraded + canAddSpecialRoles: true, // Special roles can be added + }); + + // Fetch the account details to set the nonce + const account = await this.apiNetworkProvider.getAccount(address); + transaction.nonce = BigInt(account.nonce); // Set the nonce for the transaction + + const signature = await this.signTransaction(transaction); // Sign the transaction + transaction.signature = signature; // Attach the signature to the transaction + + // Send the transaction to the network and get the transaction hash + const txHash = + await this.apiNetworkProvider.sendTransaction(transaction); + + elizaLogger.log(`TxHash: ${txHash}`); // Log the transaction hash + elizaLogger.log(`Transaction URL: ${this.explorerURL}/transactions/${txHash}`); // View Transaction + + return txHash; // Return the transaction hash + } catch (error) { + console.error("Error creating ESDT:", error); + throw new Error( + `Failed to create ESDT: ${error.message || "Unknown error"}` + ); // Throw an error if creation fails + } + } } From 466367843c6b61711228b9d53efb515e61a29b12 Mon Sep 17 00:00:00 2001 From: Gavrila Andrei Date: Thu, 5 Dec 2024 16:31:59 +0200 Subject: [PATCH 04/15] Add wallet test --- .../src/tests/wallet.test.ts | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 packages/plugin-multiversx/src/tests/wallet.test.ts diff --git a/packages/plugin-multiversx/src/tests/wallet.test.ts b/packages/plugin-multiversx/src/tests/wallet.test.ts new file mode 100644 index 00000000000..5919ed6f0ea --- /dev/null +++ b/packages/plugin-multiversx/src/tests/wallet.test.ts @@ -0,0 +1,19 @@ +// src/tests/wallet.test.ts +import { describe, it, expect, beforeEach, afterEach } from 'vitest'; +import { WalletProvider } from '../providers/wallet'; // Update the path to your WalletProvider + +describe('WalletProvider', () => { + let walletProvider: WalletProvider; + + beforeEach(() => { + // Test wallet private key + const privateKey = 'b5a356fb7e5563e6b07887f1de0376f9c74f2affaa71d41941dbc002ea13f656'; + const network = 'devnet'; + walletProvider = new WalletProvider(privateKey, network); + }); + + it('should retrieve the wallet address', () => { + const address = walletProvider.getAddress(); + expect(address).toBeDefined(); + }); +}); From d79680d74970b969105798f980906b36b2ee39bd Mon Sep 17 00:00:00 2001 From: Gavrila Andrei Date: Thu, 5 Dec 2024 16:40:51 +0200 Subject: [PATCH 05/15] Update .env.example --- .env.example | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.env.example b/.env.example index d46236bdc2c..409762b056b 100644 --- a/.env.example +++ b/.env.example @@ -275,4 +275,5 @@ AWS_S3_UPLOAD_PATH= DEEPGRAM_API_KEY= # MultiversX -MVX_WALLET_SECRET_KEY= # MultiversX private key +MVX_WALLET_SECRET_KEY= # Multiversx private key +MVX_NETWORK= # must be one of mainnet, devnet, testnet From ebd671b53c372356d03f7b5fddbaba9a44db8361 Mon Sep 17 00:00:00 2001 From: Gavrila Andrei Date: Thu, 5 Dec 2024 16:42:41 +0200 Subject: [PATCH 06/15] Rename variable --- packages/plugin-multiversx/src/providers/wallet.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/plugin-multiversx/src/providers/wallet.ts b/packages/plugin-multiversx/src/providers/wallet.ts index 0156820a21f..01a1c4ce0ad 100644 --- a/packages/plugin-multiversx/src/providers/wallet.ts +++ b/packages/plugin-multiversx/src/providers/wallet.ts @@ -16,7 +16,7 @@ import { import { denominateAmount } from "../utils/amount"; // Network configuration object for different environments (mainnet, devnet, testnet) -const MVX_NETWORK = { +const MVX_NETWORK_CONFIG = { mainnet: { chainID: "1", // Mainnet chain ID apiURL: "https://api.multiversx.com", // Mainnet API URL @@ -48,11 +48,11 @@ export class WalletProvider { * @param network - Target network (mainnet, devnet, or testnet) */ constructor(privateKey: string, network: string) { - if (!MVX_NETWORK[network]) { + if (!MVX_NETWORK_CONFIG[network]) { throw new Error(`Unsupported network: ${network}`); // Validate network } - const networkConfig = MVX_NETWORK[network]; + const networkConfig = MVX_NETWORK_CONFIG[network]; this.chainID = networkConfig.chainID; this.explorerURL = networkConfig.explorerURL; From fcaefa858700448cac9f1150903939c2314a1239 Mon Sep 17 00:00:00 2001 From: Gavrila Andrei Date: Thu, 5 Dec 2024 17:09:34 +0200 Subject: [PATCH 07/15] Apply prettier --- .../plugin-multiversx/src/providers/wallet.ts | 23 +++++++++++-------- .../src/tests/wallet.test.ts | 13 ++++++----- 2 files changed, 21 insertions(+), 15 deletions(-) diff --git a/packages/plugin-multiversx/src/providers/wallet.ts b/packages/plugin-multiversx/src/providers/wallet.ts index 01a1c4ce0ad..a7d421bba06 100644 --- a/packages/plugin-multiversx/src/providers/wallet.ts +++ b/packages/plugin-multiversx/src/providers/wallet.ts @@ -20,18 +20,17 @@ const MVX_NETWORK_CONFIG = { mainnet: { chainID: "1", // Mainnet chain ID apiURL: "https://api.multiversx.com", // Mainnet API URL - explorerURL: "https://explorer.multiversx.com" + explorerURL: "https://explorer.multiversx.com", }, devnet: { chainID: "D", // Devnet chain ID apiURL: "https://devnet-api.multiversx.com", // Devnet API URL, - explorerURL: "https://devnet-explorer.multiversx.com" - + explorerURL: "https://devnet-explorer.multiversx.com", }, testnet: { chainID: "T", // Testnet chain ID apiURL: "https://testnet-api.multiversx.com", // Testnet API URL - explorerURL: "https://testnet-explorer.multiversx.com" + explorerURL: "https://testnet-explorer.multiversx.com", }, }; @@ -84,12 +83,12 @@ export class WalletProvider { return account.balance.toString(); // Return balance as a string } - /** + /** * Sign a transaction using the wallet's private key * @param transaction - The transaction object to sign * @returns The transaction signature as a string */ - public async signTransaction(transaction: Transaction) { + public async signTransaction(transaction: Transaction) { const computer = new TransactionComputer(); const serializedTx = computer.computeBytesForSigning(transaction); // Prepare transaction for signing const signature = await this.signer.sign(serializedTx); // Sign the transaction @@ -145,7 +144,9 @@ export class WalletProvider { await this.apiNetworkProvider.sendTransaction(transaction); elizaLogger.log(`TxHash: ${txHash}`); // Log transaction hash - elizaLogger.log(`Transaction URL: ${this.explorerURL}/transactions/${txHash}`); // View Transaction + elizaLogger.log( + `Transaction URL: ${this.explorerURL}/transactions/${txHash}` + ); // View Transaction return txHash; } catch (error) { console.error("Error sending EGLD transaction:", error); @@ -216,7 +217,9 @@ export class WalletProvider { await this.apiNetworkProvider.sendTransaction(transaction); elizaLogger.log(`TxHash: ${txHash}`); // Log transaction hash - elizaLogger.log(`Transaction URL: ${this.explorerURL}/transactions/${txHash}`); // View Transaction + elizaLogger.log( + `Transaction URL: ${this.explorerURL}/transactions/${txHash}` + ); // View Transaction return txHash; } catch (error) { console.error("Error sending ESDT transaction:", error); @@ -284,7 +287,9 @@ export class WalletProvider { await this.apiNetworkProvider.sendTransaction(transaction); elizaLogger.log(`TxHash: ${txHash}`); // Log the transaction hash - elizaLogger.log(`Transaction URL: ${this.explorerURL}/transactions/${txHash}`); // View Transaction + elizaLogger.log( + `Transaction URL: ${this.explorerURL}/transactions/${txHash}` + ); // View Transaction return txHash; // Return the transaction hash } catch (error) { diff --git a/packages/plugin-multiversx/src/tests/wallet.test.ts b/packages/plugin-multiversx/src/tests/wallet.test.ts index 5919ed6f0ea..52af0587298 100644 --- a/packages/plugin-multiversx/src/tests/wallet.test.ts +++ b/packages/plugin-multiversx/src/tests/wallet.test.ts @@ -1,18 +1,19 @@ // src/tests/wallet.test.ts -import { describe, it, expect, beforeEach, afterEach } from 'vitest'; -import { WalletProvider } from '../providers/wallet'; // Update the path to your WalletProvider +import { describe, it, expect, beforeEach, afterEach } from "vitest"; +import { WalletProvider } from "../providers/wallet"; // Update the path to your WalletProvider -describe('WalletProvider', () => { +describe("WalletProvider", () => { let walletProvider: WalletProvider; beforeEach(() => { // Test wallet private key - const privateKey = 'b5a356fb7e5563e6b07887f1de0376f9c74f2affaa71d41941dbc002ea13f656'; - const network = 'devnet'; + const privateKey = + "b5a356fb7e5563e6b07887f1de0376f9c74f2affaa71d41941dbc002ea13f656"; + const network = "devnet"; walletProvider = new WalletProvider(privateKey, network); }); - it('should retrieve the wallet address', () => { + it("should retrieve the wallet address", () => { const address = walletProvider.getAddress(); expect(address).toBeDefined(); }); From 9565cbd30c1845f296da2c9ff5bb07fb72ab62ef Mon Sep 17 00:00:00 2001 From: Gavrila Andrei Date: Thu, 5 Dec 2024 17:12:35 +0200 Subject: [PATCH 08/15] Remove elrond --- packages/plugin-multiversx/src/providers/wallet.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/plugin-multiversx/src/providers/wallet.ts b/packages/plugin-multiversx/src/providers/wallet.ts index a7d421bba06..c3c110db492 100644 --- a/packages/plugin-multiversx/src/providers/wallet.ts +++ b/packages/plugin-multiversx/src/providers/wallet.ts @@ -230,7 +230,7 @@ export class WalletProvider { } /** - * Create a new Elrond Standard Digital Token (ESDT). + * Create a new eStandard Digital Token (ESDT). * @param tokenName - The name of the token to be created. * @param tokenTicker - The ticker symbol for the token. * @param amount - The initial supply of the token. From cb11d40481006aa758494546dee5ae8219d16e7c Mon Sep 17 00:00:00 2001 From: Gavrila Andrei Date: Thu, 5 Dec 2024 17:27:24 +0200 Subject: [PATCH 09/15] Remove comments --- packages/plugin-multiversx/src/providers/wallet.ts | 1 - packages/plugin-multiversx/src/tests/wallet.test.ts | 5 ++--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/packages/plugin-multiversx/src/providers/wallet.ts b/packages/plugin-multiversx/src/providers/wallet.ts index c3c110db492..8d6d2d02a50 100644 --- a/packages/plugin-multiversx/src/providers/wallet.ts +++ b/packages/plugin-multiversx/src/providers/wallet.ts @@ -1,4 +1,3 @@ -// Importing required modules and classes for logging, user signing, transactions, and network operations import { elizaLogger } from "@ai16z/eliza"; import { UserSigner, diff --git a/packages/plugin-multiversx/src/tests/wallet.test.ts b/packages/plugin-multiversx/src/tests/wallet.test.ts index 52af0587298..c147c4dc9a8 100644 --- a/packages/plugin-multiversx/src/tests/wallet.test.ts +++ b/packages/plugin-multiversx/src/tests/wallet.test.ts @@ -1,6 +1,5 @@ -// src/tests/wallet.test.ts -import { describe, it, expect, beforeEach, afterEach } from "vitest"; -import { WalletProvider } from "../providers/wallet"; // Update the path to your WalletProvider +import { describe, it, expect, beforeEach } from "vitest"; +import { WalletProvider } from "../providers/wallet"; describe("WalletProvider", () => { let walletProvider: WalletProvider; From ce1f81a930cdae34e1733f97053cebf060f3bfa4 Mon Sep 17 00:00:00 2001 From: Gavrila Andrei Date: Thu, 5 Dec 2024 19:39:54 +0200 Subject: [PATCH 10/15] Rename env var --- .env.example | 2 +- agent/src/index.ts | 2 ++ packages/plugin-multiversx/src/actions/createToken.ts | 2 +- packages/plugin-multiversx/src/actions/transfer.ts | 2 +- packages/plugin-multiversx/src/enviroment.ts | 8 ++++---- 5 files changed, 9 insertions(+), 7 deletions(-) diff --git a/.env.example b/.env.example index 409762b056b..9d0eae8a886 100644 --- a/.env.example +++ b/.env.example @@ -275,5 +275,5 @@ AWS_S3_UPLOAD_PATH= DEEPGRAM_API_KEY= # MultiversX -MVX_WALLET_SECRET_KEY= # Multiversx private key +MVX_SECRET_KEY= # Multiversx private key MVX_NETWORK= # must be one of mainnet, devnet, testnet diff --git a/agent/src/index.ts b/agent/src/index.ts index cd92b6005db..5c13600fd5e 100644 --- a/agent/src/index.ts +++ b/agent/src/index.ts @@ -44,6 +44,7 @@ import { solanaPlugin } from "@ai16z/plugin-solana"; import { teePlugin, TEEMode } from "@ai16z/plugin-tee"; import { aptosPlugin, TransferAptosToken } from "@ai16z/plugin-aptos"; import { flowPlugin } from "@ai16z/plugin-flow"; +import { multiversxPlugin } from '@ai16z/plugin-multiversx'; import Database from "better-sqlite3"; import fs from "fs"; import path from "path"; @@ -490,6 +491,7 @@ export async function createAgent( ? flowPlugin : null, getSecret(character, "APTOS_PRIVATE_KEY") ? aptosPlugin : null, + getSecret(character, 'MVX_SECRET_KEY') ? multiversxPlugin : null ].filter(Boolean), providers: [], actions: [], diff --git a/packages/plugin-multiversx/src/actions/createToken.ts b/packages/plugin-multiversx/src/actions/createToken.ts index e1f8a7eaf06..2d74cc95b17 100644 --- a/packages/plugin-multiversx/src/actions/createToken.ts +++ b/packages/plugin-multiversx/src/actions/createToken.ts @@ -102,7 +102,7 @@ export default { } try { - const privateKey = runtime.getSetting("MVX_WALLET_SECRET_KEY"); + const privateKey = runtime.getSetting("MVX_SECRET_KEY"); const network = runtime.getSetting("MVX_NETWORK"); const walletProvider = new WalletProvider(privateKey, network); diff --git a/packages/plugin-multiversx/src/actions/transfer.ts b/packages/plugin-multiversx/src/actions/transfer.ts index 2a062779527..330953c2af5 100644 --- a/packages/plugin-multiversx/src/actions/transfer.ts +++ b/packages/plugin-multiversx/src/actions/transfer.ts @@ -108,7 +108,7 @@ export default { } try { - const privateKey = runtime.getSetting("MVX_WALLET_SECRET_KEY"); + const privateKey = runtime.getSetting("MVX_SECRET_KEY"); const network = runtime.getSetting("MVX_NETWORK"); const walletProvider = new WalletProvider(privateKey, network); diff --git a/packages/plugin-multiversx/src/enviroment.ts b/packages/plugin-multiversx/src/enviroment.ts index eba6366fffc..f2ffe582dcd 100644 --- a/packages/plugin-multiversx/src/enviroment.ts +++ b/packages/plugin-multiversx/src/enviroment.ts @@ -2,7 +2,7 @@ import { IAgentRuntime } from "@ai16z/eliza"; import { z } from "zod"; export const multiversxEnvSchema = z.object({ - MVX_WALLET_SECRET_KEY: z + MVX_SECRET_KEY: z .string() .min(1, "MultiversX wallet private key is required"), MVX_NETWORK: z.enum(["mainnet", "devnet", "testnet"]), @@ -15,9 +15,9 @@ export async function validateMultiversxConfig( ): Promise { try { const config = { - MVX_WALLET_SECRET_KEY: - runtime.getSetting("MVX_WALLET_SECRET_KEY") || - process.env.MVX_WALLET_SECRET_KEY, + MVX_SECRET_KEY: + runtime.getSetting("MVX_SECRET_KEY") || + process.env.MVX_SECRET_KEY, MVX_NETWORK: runtime.getSetting("MVX_NETWORK") || process.env.MVX_NETWORK, }; From e3edc7cecc065a1a5d101e155b84ba35e5f907cc Mon Sep 17 00:00:00 2001 From: Gavrila Andrei Date: Thu, 5 Dec 2024 19:44:24 +0200 Subject: [PATCH 11/15] Rename env var --- .env.example | 2 +- agent/src/index.ts | 2 +- packages/plugin-multiversx/src/actions/createToken.ts | 2 +- packages/plugin-multiversx/src/actions/transfer.ts | 2 +- packages/plugin-multiversx/src/enviroment.ts | 8 ++++---- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.env.example b/.env.example index 9d0eae8a886..0d6c3b9695e 100644 --- a/.env.example +++ b/.env.example @@ -275,5 +275,5 @@ AWS_S3_UPLOAD_PATH= DEEPGRAM_API_KEY= # MultiversX -MVX_SECRET_KEY= # Multiversx private key +MVX_PRIVATE_KEY= # Multiversx private key MVX_NETWORK= # must be one of mainnet, devnet, testnet diff --git a/agent/src/index.ts b/agent/src/index.ts index 5c13600fd5e..b267e5fdf86 100644 --- a/agent/src/index.ts +++ b/agent/src/index.ts @@ -491,7 +491,7 @@ export async function createAgent( ? flowPlugin : null, getSecret(character, "APTOS_PRIVATE_KEY") ? aptosPlugin : null, - getSecret(character, 'MVX_SECRET_KEY') ? multiversxPlugin : null + getSecret(character, 'MVX_PRIVATE_KEY') ? multiversxPlugin : null ].filter(Boolean), providers: [], actions: [], diff --git a/packages/plugin-multiversx/src/actions/createToken.ts b/packages/plugin-multiversx/src/actions/createToken.ts index 2d74cc95b17..c84632bff5f 100644 --- a/packages/plugin-multiversx/src/actions/createToken.ts +++ b/packages/plugin-multiversx/src/actions/createToken.ts @@ -102,7 +102,7 @@ export default { } try { - const privateKey = runtime.getSetting("MVX_SECRET_KEY"); + const privateKey = runtime.getSetting("MVX_PRIVATE_KEY"); const network = runtime.getSetting("MVX_NETWORK"); const walletProvider = new WalletProvider(privateKey, network); diff --git a/packages/plugin-multiversx/src/actions/transfer.ts b/packages/plugin-multiversx/src/actions/transfer.ts index 330953c2af5..076cef248ca 100644 --- a/packages/plugin-multiversx/src/actions/transfer.ts +++ b/packages/plugin-multiversx/src/actions/transfer.ts @@ -108,7 +108,7 @@ export default { } try { - const privateKey = runtime.getSetting("MVX_SECRET_KEY"); + const privateKey = runtime.getSetting("MVX_PRIVATE_KEY"); const network = runtime.getSetting("MVX_NETWORK"); const walletProvider = new WalletProvider(privateKey, network); diff --git a/packages/plugin-multiversx/src/enviroment.ts b/packages/plugin-multiversx/src/enviroment.ts index f2ffe582dcd..b1d9b2d3e88 100644 --- a/packages/plugin-multiversx/src/enviroment.ts +++ b/packages/plugin-multiversx/src/enviroment.ts @@ -2,7 +2,7 @@ import { IAgentRuntime } from "@ai16z/eliza"; import { z } from "zod"; export const multiversxEnvSchema = z.object({ - MVX_SECRET_KEY: z + MVX_PRIVATE_KEY: z .string() .min(1, "MultiversX wallet private key is required"), MVX_NETWORK: z.enum(["mainnet", "devnet", "testnet"]), @@ -15,9 +15,9 @@ export async function validateMultiversxConfig( ): Promise { try { const config = { - MVX_SECRET_KEY: - runtime.getSetting("MVX_SECRET_KEY") || - process.env.MVX_SECRET_KEY, + MVX_PRIVATE_KEY: + runtime.getSetting("MVX_PRIVATE_KEY") || + process.env.MVX_PRIVATE_KEY, MVX_NETWORK: runtime.getSetting("MVX_NETWORK") || process.env.MVX_NETWORK, }; From 5e3bb107bc6d72d7176461243b20faa1235189ce Mon Sep 17 00:00:00 2001 From: Gavrila Andrei Date: Fri, 13 Dec 2024 18:32:42 +0200 Subject: [PATCH 12/15] Revert change --- README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/README.md b/README.md index e187cc8c4ab..59d73a25a4e 100644 --- a/README.md +++ b/README.md @@ -25,8 +25,6 @@ - ☁️ Supports many models (local Llama, OpenAI, Anthropic, Groq, etc.) - 📦 Just works! -## Video Tutorials -[AI Agent Dev School](https://www.youtube.com/watch?v=ArptLpQiKfI&list=PLx5pnFXdPTRzWla0RaOxALTSTnVq53fKL) ## 🎯 Use Cases From 22d94bcada724abe0467c26d71d9c381a102b658 Mon Sep 17 00:00:00 2001 From: Gavrila Andrei Date: Fri, 13 Dec 2024 18:33:00 +0200 Subject: [PATCH 13/15] Remove line --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 59d73a25a4e..dad5e3ebd15 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,6 @@ - ☁️ Supports many models (local Llama, OpenAI, Anthropic, Groq, etc.) - 📦 Just works! - ## 🎯 Use Cases - 🤖 Chatbots From 28d37052339c662991294f66eb614264ea9920cd Mon Sep 17 00:00:00 2001 From: Gavrila Andrei Date: Fri, 13 Dec 2024 19:46:57 +0200 Subject: [PATCH 14/15] Fix spaces --- .env.example | 1 + README.md | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/.env.example b/.env.example index 0d6c3b9695e..ff3721073d7 100644 --- a/.env.example +++ b/.env.example @@ -271,6 +271,7 @@ AWS_REGION= AWS_S3_BUCKET= AWS_S3_UPLOAD_PATH= + # Deepgram DEEPGRAM_API_KEY= diff --git a/README.md b/README.md index dad5e3ebd15..d575729e096 100644 --- a/README.md +++ b/README.md @@ -25,6 +25,10 @@ - ☁️ Supports many models (local Llama, OpenAI, Anthropic, Groq, etc.) - 📦 Just works! +## Video Tutorials +[AI Agent Dev School](https://www.youtube.com/watch?v=ArptLpQiKfI&list=PLx5pnFXdPTRzWla0RaOxALTSTnVq53fKL) + + ## 🎯 Use Cases - 🤖 Chatbots From b47ff0636eb0b508dd9aebba97c97903ecf95038 Mon Sep 17 00:00:00 2001 From: Gavrila Andrei Date: Fri, 13 Dec 2024 19:47:25 +0200 Subject: [PATCH 15/15] Remove empty space --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index d575729e096..e187cc8c4ab 100644 --- a/README.md +++ b/README.md @@ -28,7 +28,6 @@ ## Video Tutorials [AI Agent Dev School](https://www.youtube.com/watch?v=ArptLpQiKfI&list=PLx5pnFXdPTRzWla0RaOxALTSTnVq53fKL) - ## 🎯 Use Cases - 🤖 Chatbots