From 0bef8ac01882b47ee461f23ef1344d4a646e3243 Mon Sep 17 00:00:00 2001 From: tharak123455 <83504457+tharak123455@users.noreply.github.com> Date: Sun, 8 Dec 2024 12:03:16 +0530 Subject: [PATCH 01/37] Update interactions.ts --- packages/client-twitter/src/interactions.ts | 149 +++++++++++++++----- 1 file changed, 117 insertions(+), 32 deletions(-) diff --git a/packages/client-twitter/src/interactions.ts b/packages/client-twitter/src/interactions.ts index 1eb93cf79e3..9dd0937b09a 100644 --- a/packages/client-twitter/src/interactions.ts +++ b/packages/client-twitter/src/interactions.ts @@ -48,26 +48,28 @@ Thread of Tweets You Are Replying To: {{actions}} -# Task: Generate a post in the voice, style and perspective of {{agentName}} (@{{twitterUserName}}). You MUST include an action if the current post text includes a prompt that is similar to one of the available actions mentioned here: -{{actionNames}} - -Here is the current post text again. Remember to include an action if the current post text includes a prompt that asks for one of the available actions mentioned above (does not need to be exact): +# Task: Generate a post in the voice, style and perspective of {{agentName}} (@{{twitterUserName}}). Include an action, if appropriate. {{actionNames}}: {{currentPost}} ` + messageCompletionFooter; -export const twitterShouldRespondTemplate = +export const twitterShouldRespondTemplate = (targetUsersStr: string) => `# INSTRUCTIONS: Determine if {{agentName}} (@{{twitterUserName}}) should respond to the message and participate in the conversation. Do not comment. Just respond with "true" or "false". -Response options are RESPOND, IGNORE and STOP . +Response options are RESPOND, IGNORE and STOP. + +PRIORITY RULE: ALWAYS RESPOND to these users regardless of topic or message content: ${targetUsersStr}. Topic relevance should be ignored for these users. + +For other users: +- {{agentName}} should RESPOND to messages directed at them +- {{agentName}} should RESPOND to conversations relevant to their background +- {{agentName}} should IGNORE irrelevant messages +- {{agentName}} should IGNORE very short messages unless directly addressed +- {{agentName}} should STOP if asked to stop +- {{agentName}} should STOP if conversation is concluded -{{agentName}} should respond to messages that are directed at them, or participate in conversations that are interesting or relevant to their background, IGNORE messages that are irrelevant to them, and should STOP if the conversation is concluded. +{{recentPosts}} -{{agentName}} is in a room with other users and wants to be conversational, but not annoying. -{{agentName}} must RESPOND to messages that are directed at them, a command towards them, or participate in conversations that are interesting or relevant to their background. -If a message is not interesting or relevant, {{agentName}} should IGNORE. -Unless directly RESPONDing to a user, {{agentName}} should IGNORE messages that are very short or do not contain much information. -If a user asks {{agentName}} to stop talking, {{agentName}} should STOP. -If {{agentName}} concludes a conversation and isn't part of the conversation anymore, {{agentName}} should STOP. +IMPORTANT: For users not in the priority list, {{agentName}} (@{{twitterUserName}}) should err on the side of IGNORE rather than RESPOND if in doubt. {{recentPosts}} @@ -106,20 +108,89 @@ export class TwitterInteractionClient { async handleTwitterInteractions() { elizaLogger.log("Checking Twitter interactions"); + // Read from environment variable, fallback to default list if not set + const targetUsersStr = this.runtime.getSetting("TWITTER_TARGET_USERS"); + + const twitterUsername = this.client.profile.username; + try { + // Check for mentions + const mentionCandidates = ( + await this.client.fetchSearchTweets( + `@${twitterUsername}`, + 20, + SearchMode.Latest + ) + ).tweets; + + elizaLogger.log("Completed checking mentioned tweets:", mentionCandidates.length); + let uniqueTweetCandidates = [...mentionCandidates]; + // Only process target users if configured + if (targetUsersStr && targetUsersStr.trim()) { + const TARGET_USERS = targetUsersStr.split(',') + .map(u => u.trim()) + .filter(u => u.length > 0); // Filter out empty strings after split + + elizaLogger.log("Processing target users:", TARGET_USERS); + + if (TARGET_USERS.length > 0) { + // Create a map to store tweets by user + const tweetsByUser = new Map(); + + // Fetch tweets from all target users + for (const username of TARGET_USERS) { + try { + const userTweets = (await this.client.twitterClient.fetchSearchTweets( + `from:${username}`, + 3, + SearchMode.Latest + )).tweets; + + // Filter for unprocessed, non-reply, recent tweets + const validTweets = userTweets.filter(tweet => { + const isUnprocessed = !this.client.lastCheckedTweetId || + parseInt(tweet.id) > this.client.lastCheckedTweetId; + const isRecent = (Date.now() - (tweet.timestamp * 1000)) < 2 * 60 * 60 * 1000; + + elizaLogger.log(`Tweet ${tweet.id} checks:`, { + isUnprocessed, + isRecent, + isReply: tweet.isReply, + isRetweet: tweet.isRetweet + }); + + return isUnprocessed && !tweet.isReply && !tweet.isRetweet && isRecent; + }); + + if (validTweets.length > 0) { + tweetsByUser.set(username, validTweets); + elizaLogger.log(`Found ${validTweets.length} valid tweets from ${username}`); + } + } catch (error) { + elizaLogger.error(`Error fetching tweets for ${username}:`, error); + continue; + } + } + + // Select one tweet from each user that has tweets + const selectedTweets: Tweet[] = []; + for (const [username, tweets] of tweetsByUser) { + if (tweets.length > 0) { + // Randomly select one tweet from this user + const randomTweet = tweets[Math.floor(Math.random() * tweets.length)]; + selectedTweets.push(randomTweet); + elizaLogger.log(`Selected tweet from ${username}: ${randomTweet.text?.substring(0, 100)}`); + } + } + + // Add selected tweets to candidates + uniqueTweetCandidates = [...mentionCandidates, ...selectedTweets]; + } + } else { + elizaLogger.log("No target users configured, processing only mentions"); + } + + - const twitterUsername = this.client.profile.username; - try { - // Check for mentions - const tweetCandidates = ( - await this.client.fetchSearchTweets( - `@${twitterUsername}`, - 20, - SearchMode.Latest - ) - ).tweets; - - // de-duplicate tweetCandidates with a set - const uniqueTweetCandidates = [...new Set(tweetCandidates)]; // Sort tweet candidates by ID in ascending order uniqueTweetCandidates .sort((a, b) => a.id.localeCompare(b.id)) @@ -282,13 +353,22 @@ export class TwitterInteractionClient { this.client.saveRequestMessage(message, state); } + // 1. Get the raw target users string from settings + const targetUsersStr = this.runtime.getSetting("TWITTER_TARGET_USERS"); + + // 2. Process the string to get valid usernames + const validTargetUsersStr = targetUsersStr && targetUsersStr.trim() + ? targetUsersStr.split(',') // Split by commas: "user1,user2" -> ["user1", "user2"] + .map(u => u.trim()) // Remove whitespace: [" user1 ", "user2 "] -> ["user1", "user2"] + .filter(u => u.length > 0) + .join(',') + : ''; + const shouldRespondContext = composeContext({ state, - template: - this.runtime.character.templates - ?.twitterShouldRespondTemplate || - this.runtime.character?.templates?.shouldRespondTemplate || - twitterShouldRespondTemplate, + template: this.runtime.character.templates?.twitterShouldRespondTemplate?.(validTargetUsersStr) || + this.runtime.character?.templates?.shouldRespondTemplate || + twitterShouldRespondTemplate(validTargetUsersStr), }); const shouldRespond = await generateShouldRespond({ @@ -362,7 +442,12 @@ export class TwitterInteractionClient { ); } - await this.runtime.evaluate(message, state); + // Ensure the message and state are properly stringified before evaluation + const sanitizedMessage = JSON.parse(JSON.stringify(message)); + const sanitizedState = JSON.parse(JSON.stringify(state)); + + await this.runtime.evaluate(sanitizedMessage, sanitizedState); + await this.runtime.processActions( message, From cc2aa50721a1979919e3f948cbf50e8090255917 Mon Sep 17 00:00:00 2001 From: tharak123455 <83504457+tharak123455@users.noreply.github.com> Date: Sun, 8 Dec 2024 12:04:25 +0530 Subject: [PATCH 02/37] Update .env.example --- .env.example | 1 + 1 file changed, 1 insertion(+) diff --git a/.env.example b/.env.example index dff79e5a91c..565079f56a1 100644 --- a/.env.example +++ b/.env.example @@ -38,6 +38,7 @@ TWITTER_EMAIL= # Account email TWITTER_2FA_SECRET= TWITTER_COOKIES= # Account cookies TWITTER_POLL_INTERVAL=120 # How often (in seconds) the bot should check for interactions +TWITTER_TARGET_USERS= # Comma separated list of Twitter user names to interact with X_SERVER_URL= XAI_API_KEY= XAI_MODEL= From 107d9e984e8d439e3903a84d9c57193a08023803 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jure=20=C5=BDvikart?= <7929905+jzvikart@users.noreply.github.com> Date: Wed, 11 Dec 2024 16:49:19 +0100 Subject: [PATCH 03/37] Initial release of smoke/integration tests + testing framework --- .github/workflows/integrationTests.yaml | 47 +++++++++++++ package.json | 7 +- scripts/integrationTests.sh | 16 +++++ scripts/smokeTests.sh | 75 ++++++++++++++++++++ tests/test1.mjs | 33 +++++++++ tests/testLibrary.mjs | 93 +++++++++++++++++++++++++ 6 files changed, 269 insertions(+), 2 deletions(-) create mode 100644 .github/workflows/integrationTests.yaml create mode 100755 scripts/integrationTests.sh create mode 100755 scripts/smokeTests.sh create mode 100644 tests/test1.mjs create mode 100644 tests/testLibrary.mjs diff --git a/.github/workflows/integrationTests.yaml b/.github/workflows/integrationTests.yaml new file mode 100644 index 00000000000..e425995c779 --- /dev/null +++ b/.github/workflows/integrationTests.yaml @@ -0,0 +1,47 @@ +name: integration-test +on: + push: + branches: + - "*" + pull_request: + branches: + - "*" +jobs: + smoke-tests: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - uses: pnpm/action-setup@v3 + with: + version: 9.4.0 + + - uses: actions/setup-node@v4 + with: + node-version: "23" + cache: "pnpm" + + - name: Run smoke tests + run: pnpm run smokeTests + integration-tests: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - uses: pnpm/action-setup@v3 + with: + version: 9.4.0 + + - uses: actions/setup-node@v4 + with: + node-version: "23" + cache: "pnpm" + + - name: Install dependencies + run: pnpm install -r + + - name: Build packages + run: pnpm build + + - name: Run integration tests + run: pnpm run integrationTests diff --git a/package.json b/package.json index ebbafb73a8c..9ab3d509c10 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,9 @@ "docker:bash": "bash ./scripts/docker.sh bash", "docker:start": "bash ./scripts/docker.sh start", "docker": "pnpm docker:build && pnpm docker:run && pnpm docker:bash", - "test": "bash ./scripts/test.sh" + "test": "bash ./scripts/test.sh", + "smokeTests": "bash ./scripts/smokeTests.sh", + "integrationTests": "bash ./scripts/integrationTests.sh" }, "devDependencies": { "@commitlint/cli": "18.6.1", @@ -38,7 +40,8 @@ "typedoc": "0.26.11", "typescript": "5.6.3", "vite": "5.4.11", - "vitest": "2.1.5" + "vitest": "2.1.5", + "zx": "^8.2.4" }, "pnpm": { "overrides": { diff --git a/scripts/integrationTests.sh b/scripts/integrationTests.sh new file mode 100755 index 00000000000..6dff86b571f --- /dev/null +++ b/scripts/integrationTests.sh @@ -0,0 +1,16 @@ +#!/bin/bash + +# Check Node.js version +REQUIRED_NODE_VERSION=23 +CURRENT_NODE_VERSION=$(node -v | cut -d'.' -f1 | sed 's/v//') + +if (( CURRENT_NODE_VERSION < REQUIRED_NODE_VERSION )); then + echo "Error: Node.js version must be $REQUIRED_NODE_VERSION or higher. Current version is $CURRENT_NODE_VERSION." + exit 1 +fi + +# Navigate to the script's directory +cd "$(dirname "$0")"/.. + +cd tests +node test1.mjs diff --git a/scripts/smokeTests.sh b/scripts/smokeTests.sh new file mode 100755 index 00000000000..170a2aae492 --- /dev/null +++ b/scripts/smokeTests.sh @@ -0,0 +1,75 @@ +#!/bin/bash + +# Print some information about the environment to aid in case of troubleshooting + +echo "node version:" +node --version + +echo "python version:" +python3 --version + +echo "make version:" +make --version + +echo "gcc version:" +gcc --version + +echo "g++ version:" +g++ --version + +# Check Node.js version +REQUIRED_NODE_VERSION=23 +CURRENT_NODE_VERSION=$(node -v | cut -d'.' -f1 | sed 's/v//') + +if (( CURRENT_NODE_VERSION < REQUIRED_NODE_VERSION )); then + echo "Error: Node.js version must be $REQUIRED_NODE_VERSION or higher. Current version is $CURRENT_NODE_VERSION." + exit 1 +fi + +# Autodetect project directory relative to this script's path +PROJECT_DIR="$0" +while [ -h "$PROJECT_DIR" ]; do + ls=$(ls -ld "$PROJECT_DIR") + link=$(expr "$ls" : '.*-> \(.*\)$') + if expr "$link" : '/.*' > /dev/null; then + PROJECT_DIR="$link" + else + PROJECT_DIR="$(dirname "$PROJECT_DIR")/$link" + fi +done +PROJECT_DIR="$(dirname "$PROJECT_DIR")/.." +PROJECT_DIR="$(cd "$PROJECT_DIR"; pwd)" + +cd $PROJECT_DIR + +cp .env.example .env + +pnpm install -r + +pnpm build + +OUTFILE="$(mktemp)" + +echo "exit" | pnpm start --character=characters/trump.character.json > "$OUTFILE" +RESULT=$? + +echo "----- OUTPUT START -----" +cat "$OUTFILE" +echo "----- OUTPUT END -----" + +# Check the exit code of the last command +if [[ $RESULT -ne 0 ]]; then + echo "Error: 'start' command exited with an error." + exit 1 +fi + +# Check if output.txt contains "Terminating and cleaning up resources..." +if grep -q "Terminating and cleaning up resources..." "$OUTFILE"; then + echo "Script completed successfully." +else + echo "Error: The output does not contain the expected string." + exit 1 +fi + +# Clean up +rm "$OUTFILE" diff --git a/tests/test1.mjs b/tests/test1.mjs new file mode 100644 index 00000000000..11ebbe37aac --- /dev/null +++ b/tests/test1.mjs @@ -0,0 +1,33 @@ +import { $, chalk } from 'zx'; +import assert from 'assert'; +import { + startAgent, + stopAgent, + send +} from "./testLibrary.mjs"; +import { stringToUuid } from '../packages/core/dist/index.js' + +export const DEFAULT_CHARACTER = "trump" +export const DEFAULT_AGENT_ID = stringToUuid(DEFAULT_CHARACTER ?? uuidv4()); + +async function test1() { + const proc = await startAgent(); + try { + + const reply = await send("Hi"); + assert(reply.length > 10); + console.log(chalk.green('✓ Test 1 passed')); + } catch (error) { + console.error(chalk.red(`✗ Test 1 failed: ${error.message}`)); + process.exit(1); + } finally { + await stopAgent(proc); + } +} + +try { + await test1(); +} catch (error) { + console.error(chalk.red(`Error: ${error.message}`)); + process.exit(1); +} \ No newline at end of file diff --git a/tests/testLibrary.mjs b/tests/testLibrary.mjs new file mode 100644 index 00000000000..7646bf0b041 --- /dev/null +++ b/tests/testLibrary.mjs @@ -0,0 +1,93 @@ +import { $, fs, path, chalk } from 'zx'; +import { DEFAULT_AGENT_ID, DEFAULT_CHARACTER } from './test1.mjs'; +import { spawn } from 'node:child_process'; +$.verbose = false; // Suppress command output unless there's an error + +function projectRoot() { + return path.join(import.meta.dirname, ".."); +} + +async function runProcess(command, args = [], directory = projectRoot()) { + try { + const result = await $`cd ${directory} && ${command} ${args}`; + return result.stdout.trim(); + } catch (error) { + throw new Error(`Command failed: ${error.message}`); + } +} + +async function installProjectDependencies() { + console.log(chalk.blue('Installing dependencies...')); + return await runProcess('pnpm', ['install', '-r']); +} + +async function buildProject() { + console.log(chalk.blue('Building project...')); + return await runProcess('pnpm', ['build']); +} + +async function writeEnvFile(entries) { + const envContent = Object.entries(entries) + .map(([key, value]) => `${key}=${value}`) + .join('\n'); + await fs.writeFile('.env', envContent); +} + +async function startAgent(character = DEFAULT_CHARACTER) { + console.log(chalk.blue(`Starting agent for character: ${character}`)); + const proc = spawn('pnpm', ['start', `--character=characters/${character}.character.json`, '--non-interactive'], { shell: true, "stdio": "inherit" }); + log(`proc=${JSON.stringify(proc)}`); + + // Wait for server to be ready + await new Promise(resolve => setTimeout(resolve, 20000)); + return proc; +} + +async function stopAgent(proc) { + console.log(chalk.blue('Stopping agent...')); + proc.kill('SIGTERM') +} + +async function send(message) { + const endpoint = `http://127.0.0.1:3000/${DEFAULT_AGENT_ID}/message`; + const payload = { + text: message, + userId: "user", + userName: "User" + }; + + try { + const response = await fetch(endpoint, { + method: 'POST', + headers: { + 'Content-Type': 'application/json' + }, + body: JSON.stringify(payload) + }); + + if (!response.ok) { + throw new Error(`HTTP error! status: ${response.status}`); + } + + const data = await response.json(); + return data[0].text; + } catch (error) { + throw new Error(`Failed to send message: ${error.message}`); + } +} + +function log(message) { + console.log(message); +} + +export { + projectRoot, + runProcess, + installProjectDependencies, + buildProject, + writeEnvFile, + startAgent, + stopAgent, + send, + log +} \ No newline at end of file From 7bcd5b84d2155778ecffc2cc23f09c6d6dd4b01d Mon Sep 17 00:00:00 2001 From: Nicky Ru Date: Thu, 5 Dec 2024 17:19:10 +0000 Subject: [PATCH 04/37] Add plugin-evm wallet provider tests and refactor the provider --- packages/plugin-evm/src/providers/wallet.ts | 166 ++++++++++--------- packages/plugin-evm/src/tests/wallet.test.ts | 125 ++++++++++++++ packages/plugin-evm/src/types/index.ts | 29 +--- 3 files changed, 220 insertions(+), 100 deletions(-) create mode 100644 packages/plugin-evm/src/tests/wallet.test.ts diff --git a/packages/plugin-evm/src/providers/wallet.ts b/packages/plugin-evm/src/providers/wallet.ts index a317a861879..8cc471efd72 100644 --- a/packages/plugin-evm/src/providers/wallet.ts +++ b/packages/plugin-evm/src/providers/wallet.ts @@ -9,38 +9,50 @@ import type { HttpTransport, Account, } from "viem"; -import type { SupportedChain, ChainConfig } from "../types"; -import { getChainConfigs } from "./chainConfigs"; -import { initializeChainConfigs } from "./chainUtils"; +import * as viemChains from "viem/chains"; +import { privateKeyToAccount } from "viem/accounts"; -export class WalletProvider { - private chainConfigs: Record; - private currentChain: SupportedChain = "ethereum"; - private address: Address; - runtime: IAgentRuntime; +import type { SupportedChain } from "../types"; - constructor(runtime: IAgentRuntime) { - const privateKey = runtime.getSetting("EVM_PRIVATE_KEY"); - if (!privateKey) throw new Error("EVM_PRIVATE_KEY not configured"); +export class WalletProvider { + private currentChain: SupportedChain = "mainnet"; + chains: Record = { mainnet: viemChains.mainnet }; + account: Account; - this.runtime = runtime; - const account = privateKeyToAccount(privateKey as `0x${string}`); - this.address = account.address; + constructor(privateKey: `0x${string}`, chainNames: SupportedChain[]) { + this.setAccount(privateKey); + this.setChains(chainNames); - // Initialize all chain configs at once - this.chainConfigs = initializeChainConfigs(runtime, account); + if (chainNames.length > 0) { + this.setCurrentChain(chainNames[0]); + } } getAddress(): Address { - return this.address; + return this.account.address; + } + + getCurrentChain(): Chain { + return this.chains[this.currentChain]; + } + + getPublicClient( + chainName: SupportedChain + ): PublicClient { + const { publicClient } = this.createClients(chainName); + return publicClient; + } + + getWalletClient(chainName: SupportedChain): WalletClient { + const { walletClient } = this.createClients(chainName); + return walletClient; } async getWalletBalance(): Promise { try { const client = this.getPublicClient(this.currentChain); - const walletClient = this.getWalletClient(); const balance = await client.getBalance({ - address: walletClient.account.address, + address: this.account.address, }); return formatUnits(balance, 18); } catch (error) { @@ -49,69 +61,68 @@ export class WalletProvider { } } - async connect(): Promise<`0x${string}`> { - return this.runtime.getSetting("EVM_PRIVATE_KEY") as `0x${string}`; - } - - async switchChain( - runtime: IAgentRuntime, - chain: SupportedChain - ): Promise { - const walletClient = this.chainConfigs[this.currentChain].walletClient; - if (!walletClient) throw new Error("Wallet not connected"); - + async getWalletBalanceForChain( + chainName: SupportedChain + ): Promise { try { - await walletClient.switchChain({ - id: getChainConfigs(runtime)[chain].chainId, + const client = this.getPublicClient(chainName); + const balance = await client.getBalance({ + address: this.account.address, }); - } catch (error: any) { - if (error.code === 4902) { - console.log( - "[WalletProvider] Chain not added to wallet (error 4902) - attempting to add chain first" - ); - await walletClient.addChain({ - chain: { - ...getChainConfigs(runtime)[chain].chain, - rpcUrls: { - default: { - http: [getChainConfigs(runtime)[chain].rpcUrl], - }, - public: { - http: [getChainConfigs(runtime)[chain].rpcUrl], - }, - }, - }, - }); - await walletClient.switchChain({ - id: getChainConfigs(runtime)[chain].chainId, - }); - } else { - throw error; - } + return formatUnits(balance, 18); + } catch (error) { + console.error("Error getting wallet balance:", error); + return null; } - - this.currentChain = chain; } - getPublicClient( - chain: SupportedChain - ): PublicClient { - return this.chainConfigs[chain].publicClient; + addChain(chain: SupportedChain) { + this.setChains([chain]); } - getWalletClient(): WalletClient { - const walletClient = this.chainConfigs[this.currentChain].walletClient; - if (!walletClient) throw new Error("Wallet not connected"); - return walletClient; + switchChain(chain: SupportedChain) { + if (!this.chains[chain]) { + this.addChain(chain); + } + this.setCurrentChain(chain); } - getCurrentChain(): SupportedChain { - return this.currentChain; - } + private setAccount = (pk: `0x${string}`) => { + this.account = privateKeyToAccount(pk); + }; + private setChains = (chainNames: SupportedChain[]) => { + chainNames.forEach((name) => { + const chain = viemChains[name]; - getChainConfig(chain: SupportedChain) { - return getChainConfigs(this.runtime)[chain]; - } + if (!chain?.id) { + throw new Error("Invalid chain name"); + } + + this.chains[name] = chain; + }); + }; + private setCurrentChain = (chain: SupportedChain) => { + this.currentChain = chain; + }; + private createHttpTransport = (chain: SupportedChain) => { + return http(this.chains[chain].rpcUrls.default.http[0]); + }; + private createClients = (chain: SupportedChain) => { + const transport = this.createHttpTransport(chain); + + return { + chain: this.chains[chain], + publicClient: createPublicClient({ + chain: this.chains[chain], + transport, + }), + walletClient: createWalletClient({ + chain: this.chains[chain], + transport, + account: this.account, + }), + }; + }; } export const evmWalletProvider: Provider = { @@ -120,12 +131,19 @@ export const evmWalletProvider: Provider = { message: Memory, state?: State ): Promise { - if (!runtime.getSetting("EVM_PRIVATE_KEY")) { + const privateKey = runtime.getSetting("EVM_PRIVATE_KEY"); + const chainNames = + (runtime.character.settings.chains?.evm as SupportedChain[]) || []; + + if (!privateKey) { return null; } try { - const walletProvider = new WalletProvider(runtime); + const walletProvider = new WalletProvider( + privateKey as `0x${string}`, + chainNames + ); const address = walletProvider.getAddress(); const balance = await walletProvider.getWalletBalance(); return `EVM Wallet Address: ${address}\nBalance: ${balance} ETH`; diff --git a/packages/plugin-evm/src/tests/wallet.test.ts b/packages/plugin-evm/src/tests/wallet.test.ts new file mode 100644 index 00000000000..e3b26c0e2d4 --- /dev/null +++ b/packages/plugin-evm/src/tests/wallet.test.ts @@ -0,0 +1,125 @@ +import { describe, it, expect, beforeAll, beforeEach } from "vitest"; +import { generatePrivateKey, privateKeyToAccount } from "viem/accounts"; +import { mainnet, iotex, arbitrum } from "viem/chains"; + +import { WalletProvider } from "../providers/wallet"; + +describe("Wallet provider", () => { + let walletProvider: WalletProvider; + let pk: `0x${string}`; + + beforeAll(() => { + pk = generatePrivateKey(); + }); + + describe("Constructor", () => { + it("sets address", () => { + const account = privateKeyToAccount(pk); + const expectedAddress = account.address; + + walletProvider = new WalletProvider(pk, ["iotexTestnet"]); + + expect(walletProvider.getAddress()).to.be.eq(expectedAddress); + }); + it("sets default chain to ethereum mainnet", () => { + walletProvider = new WalletProvider(pk, []); + + expect(walletProvider.chains.mainnet.id).to.be.eq(mainnet.id); + expect(walletProvider.getCurrentChain().id).to.be.eq(mainnet.id); + }); + it("sets custom chains", () => { + walletProvider = new WalletProvider(pk, ["iotex", "arbitrum"]); + + expect(walletProvider.chains.iotex.id).to.be.eq(iotex.id); + expect(walletProvider.chains.arbitrum.id).to.be.eq(arbitrum.id); + }); + it("sets the first provided custom chain as current chain", () => { + walletProvider = new WalletProvider(pk, ["iotex", "arbitrum"]); + + expect(walletProvider.getCurrentChain().id).to.be.eq(iotex.id); + }); + it("throws if invalid chain name", () => { + // @ts-ignore + expect(() => new WalletProvider(pk, ["eth"])).to.throw(); + }); + it("throws if unsupported chain name", () => { + // @ts-ignore + expect(() => new WalletProvider(pk, ["ethereum"])).to.throw(); + }); + }); + describe("Clients", () => { + beforeEach(() => { + walletProvider = new WalletProvider(pk, []); + }); + it("generates public client", () => { + const client = walletProvider.getPublicClient("mainnet"); + expect(client.chain.id).to.be.equal(mainnet.id); + }); + it("generates wallet client", () => { + const account = privateKeyToAccount(pk); + const expectedAddress = account.address; + + const client = walletProvider.getWalletClient("mainnet"); + + expect(client.account.address).to.be.equal(expectedAddress); + }); + }); + describe("Balance", () => { + beforeEach(() => { + walletProvider = new WalletProvider(pk, ["iotex"]); + }); + it("should fetch balance", async () => { + const bal = await walletProvider.getWalletBalance(); + + expect(bal).to.be.eq("0"); + }); + it("should fetch balance for a specific added chain", async () => { + const bal = await walletProvider.getWalletBalanceForChain("iotex"); + + expect(bal).to.be.eq("0"); + }); + it("should return null if chain is not added", async () => { + const bal = + await walletProvider.getWalletBalanceForChain("arbitrum"); + expect(bal).to.be.null; + }); + }); + describe("Chain", () => { + beforeEach(() => { + walletProvider = new WalletProvider(pk, ["iotex"]); + }); + it("switches chain", () => { + const initialChain = walletProvider.getCurrentChain().id; + expect(initialChain).to.be.eq(iotex.id); + + walletProvider.switchChain("mainnet"); + + const newChain = walletProvider.getCurrentChain().id; + expect(newChain).to.be.eq(mainnet.id); + }); + it("switches chain (by adding new chain)", () => { + const initialChain = walletProvider.getCurrentChain().id; + expect(initialChain).to.be.eq(iotex.id); + + walletProvider.switchChain("arbitrum"); + + const newChain = walletProvider.getCurrentChain().id; + expect(newChain).to.be.eq(arbitrum.id); + }); + it("adds chain", () => { + const initialChains = walletProvider.chains; + expect(initialChains.arbitrum).to.be.undefined; + + walletProvider.addChain("arbitrum"); + const newChains = walletProvider.chains; + expect(newChains.arbitrum.id).to.be.eq(arbitrum.id); + }); + it("throws if tries to switch to an invalid chain", () => { + const initialChain = walletProvider.getCurrentChain().id; + expect(initialChain).to.be.eq(iotex.id); + + // @ts-ignore + expect(() => walletProvider.switchChain("eth")).to.throw(); + }); + }); +}); diff --git a/packages/plugin-evm/src/types/index.ts b/packages/plugin-evm/src/types/index.ts index 885f3994fce..8fa8247dcdb 100644 --- a/packages/plugin-evm/src/types/index.ts +++ b/packages/plugin-evm/src/types/index.ts @@ -8,33 +8,10 @@ import type { PublicClient, WalletClient, } from "viem"; +import * as viemChains from "viem/chains"; -export type SupportedChain = - | "ethereum" - | "base" - | "sepolia" - | "bsc" - | "arbitrum" - | "avalanche" - | "polygon" - | "optimism" - | "cronos" - | "gnosis" - | "fantom" - | "klaytn" - | "celo" - | "moonbeam" - | "aurora" - | "harmonyOne" - | "moonriver" - | "arbitrumNova" - | "mantle" - | "linea" - | "scroll" - | "filecoin" - | "taiko" - | "zksync" - | "canto"; +const SupportedChainList = Object.keys(viemChains) as Array; +export type SupportedChain = (typeof SupportedChainList)[number]; // Transaction types export interface Transaction { From c42f9fb30212ba9ceca08445d91ab912d0d0f6ea Mon Sep 17 00:00:00 2001 From: Nicky Ru Date: Thu, 5 Dec 2024 17:19:37 +0000 Subject: [PATCH 05/37] Add test script to package.json --- packages/plugin-evm/package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/plugin-evm/package.json b/packages/plugin-evm/package.json index c041a142159..b24d1045c71 100644 --- a/packages/plugin-evm/package.json +++ b/packages/plugin-evm/package.json @@ -15,7 +15,8 @@ }, "scripts": { "build": "tsup --format esm --dts", - "dev": "tsup --format esm --dts --watch" + "dev": "tsup --format esm --dts --watch", + "test": "vitest run" }, "peerDependencies": { "whatwg-url": "7.1.0" From fc9d68beb7356129d5cd673de6b3b1b352099f57 Mon Sep 17 00:00:00 2001 From: Nicky Ru Date: Thu, 5 Dec 2024 17:24:16 +0000 Subject: [PATCH 06/37] Make chainNames optional for WalletProvider constructor --- packages/plugin-evm/src/providers/wallet.ts | 9 ++++++--- packages/plugin-evm/src/tests/wallet.test.ts | 2 +- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/packages/plugin-evm/src/providers/wallet.ts b/packages/plugin-evm/src/providers/wallet.ts index 8cc471efd72..616d0a64540 100644 --- a/packages/plugin-evm/src/providers/wallet.ts +++ b/packages/plugin-evm/src/providers/wallet.ts @@ -19,11 +19,11 @@ export class WalletProvider { chains: Record = { mainnet: viemChains.mainnet }; account: Account; - constructor(privateKey: `0x${string}`, chainNames: SupportedChain[]) { + constructor(privateKey: `0x${string}`, chainNames?: SupportedChain[]) { this.setAccount(privateKey); this.setChains(chainNames); - if (chainNames.length > 0) { + if (chainNames?.length > 0) { this.setCurrentChain(chainNames[0]); } } @@ -90,7 +90,10 @@ export class WalletProvider { private setAccount = (pk: `0x${string}`) => { this.account = privateKeyToAccount(pk); }; - private setChains = (chainNames: SupportedChain[]) => { + private setChains = (chainNames?: SupportedChain[]) => { + if (!chainNames) { + return; + } chainNames.forEach((name) => { const chain = viemChains[name]; diff --git a/packages/plugin-evm/src/tests/wallet.test.ts b/packages/plugin-evm/src/tests/wallet.test.ts index e3b26c0e2d4..24ec4f77e6e 100644 --- a/packages/plugin-evm/src/tests/wallet.test.ts +++ b/packages/plugin-evm/src/tests/wallet.test.ts @@ -22,7 +22,7 @@ describe("Wallet provider", () => { expect(walletProvider.getAddress()).to.be.eq(expectedAddress); }); it("sets default chain to ethereum mainnet", () => { - walletProvider = new WalletProvider(pk, []); + walletProvider = new WalletProvider(pk); expect(walletProvider.chains.mainnet.id).to.be.eq(mainnet.id); expect(walletProvider.getCurrentChain().id).to.be.eq(mainnet.id); From 4515d48171d026ddeeedd6d1721bfd0e166229e9 Mon Sep 17 00:00:00 2001 From: Nicky Ru Date: Thu, 5 Dec 2024 17:38:51 +0000 Subject: [PATCH 07/37] Add chain config getter --- packages/plugin-evm/src/providers/wallet.ts | 10 ++++++++++ packages/plugin-evm/src/tests/wallet.test.ts | 5 +++++ 2 files changed, 15 insertions(+) diff --git a/packages/plugin-evm/src/providers/wallet.ts b/packages/plugin-evm/src/providers/wallet.ts index 616d0a64540..6016271a02c 100644 --- a/packages/plugin-evm/src/providers/wallet.ts +++ b/packages/plugin-evm/src/providers/wallet.ts @@ -87,6 +87,16 @@ export class WalletProvider { this.setCurrentChain(chain); } + getChainConfigs(chainName: SupportedChain): Chain { + const chain = viemChains[chainName]; + + if (!chain?.id) { + throw new Error("Invalid chain name"); + } + + return chain; + } + private setAccount = (pk: `0x${string}`) => { this.account = privateKeyToAccount(pk); }; diff --git a/packages/plugin-evm/src/tests/wallet.test.ts b/packages/plugin-evm/src/tests/wallet.test.ts index 24ec4f77e6e..6289e5fdcd0 100644 --- a/packages/plugin-evm/src/tests/wallet.test.ts +++ b/packages/plugin-evm/src/tests/wallet.test.ts @@ -114,6 +114,11 @@ describe("Wallet provider", () => { const newChains = walletProvider.chains; expect(newChains.arbitrum.id).to.be.eq(arbitrum.id); }); + it("gets chain configs", () => { + const chain = walletProvider.getChainConfigs("iotex"); + + expect(chain.id).to.eq(iotex.id); + }) it("throws if tries to switch to an invalid chain", () => { const initialChain = walletProvider.getCurrentChain().id; expect(initialChain).to.be.eq(iotex.id); From 36f594f6da03bb0e5782e1deb5f2ba6cb5c39374 Mon Sep 17 00:00:00 2001 From: Nicky Ru Date: Thu, 5 Dec 2024 17:39:28 +0000 Subject: [PATCH 08/37] Refactor bridge action --- packages/plugin-evm/src/actions/bridge.ts | 38 ++++++++++------------- 1 file changed, 17 insertions(+), 21 deletions(-) diff --git a/packages/plugin-evm/src/actions/bridge.ts b/packages/plugin-evm/src/actions/bridge.ts index 4d92018e96a..eeb888486c7 100644 --- a/packages/plugin-evm/src/actions/bridge.ts +++ b/packages/plugin-evm/src/actions/bridge.ts @@ -1,13 +1,11 @@ import type { IAgentRuntime, Memory, State } from "@ai16z/eliza"; import { - ChainId, createConfig, executeRoute, ExtendedChain, getRoutes, } from "@lifi/sdk"; import { WalletProvider } from "../providers/wallet"; -import { getChainConfigs } from "../providers/chainConfigs"; import { bridgeTemplate } from "../templates"; import type { BridgeParams, Transaction } from "../types"; @@ -19,25 +17,23 @@ export class BridgeAction { constructor(private walletProvider: WalletProvider) { this.config = createConfig({ integrator: "eliza", - chains: Object.values( - getChainConfigs(this.walletProvider.runtime) - ).map((config) => ({ - id: config.chainId, + chains: Object.values(this.walletProvider.chains).map((config) => ({ + id: config.id, name: config.name, key: config.name.toLowerCase(), chainType: "EVM", nativeToken: { ...config.nativeCurrency, - chainId: config.chainId, + chainId: config.id, address: "0x0000000000000000000000000000000000000000", coinKey: config.nativeCurrency.symbol, }, metamask: { - chainId: `0x${config.chainId.toString(16)}`, + chainId: `0x${config.id.toString(16)}`, chainName: config.name, nativeCurrency: config.nativeCurrency, - rpcUrls: [config.rpcUrl], - blockExplorerUrls: [config.blockExplorerUrl], + rpcUrls: [config.rpcUrls.default.http[0]], + blockExplorerUrls: [config.blockExplorers.default.url], }, diamondAddress: "0x0000000000000000000000000000000000000000", coin: config.nativeCurrency.symbol, @@ -47,16 +43,15 @@ export class BridgeAction { } async bridge(params: BridgeParams): Promise { - const walletClient = this.walletProvider.getWalletClient(); + const walletClient = this.walletProvider.getWalletClient( + params.fromChain + ); const [fromAddress] = await walletClient.getAddresses(); const routes = await getRoutes({ - fromChainId: getChainConfigs(this.walletProvider.runtime)[ - params.fromChain - ].chainId as ChainId, - toChainId: getChainConfigs(this.walletProvider.runtime)[ - params.toChain - ].chainId as ChainId, + fromChainId: this.walletProvider.getChainConfigs(params.fromChain) + .id, + toChainId: this.walletProvider.getChainConfigs(params.toChain).id, fromTokenAddress: params.fromToken, toTokenAddress: params.toToken, fromAmount: params.amount, @@ -79,9 +74,7 @@ export class BridgeAction { to: routes.routes[0].steps[0].estimate .approvalAddress as `0x${string}`, value: BigInt(params.amount), - chainId: getChainConfigs(this.walletProvider.runtime)[ - params.fromChain - ].chainId, + chainId: this.walletProvider.getChainConfigs(params.fromChain).id, }; } } @@ -95,7 +88,10 @@ export const bridgeAction = { state: State, options: any ) => { - const walletProvider = new WalletProvider(runtime); + const privateKey = runtime.getSetting( + "EVM_PRIVATE_KEY" + ) as `0x${string}`; + const walletProvider = new WalletProvider(privateKey); const action = new BridgeAction(walletProvider); return action.bridge(options); }, From 5c39893fc325ceae431424fd7b88d65f38c0dc87 Mon Sep 17 00:00:00 2001 From: Nicky Ru Date: Thu, 5 Dec 2024 17:43:19 +0000 Subject: [PATCH 09/37] Refactor plugin-evm swap action --- packages/plugin-evm/src/actions/swap.ts | 37 +++++++++++-------------- 1 file changed, 16 insertions(+), 21 deletions(-) diff --git a/packages/plugin-evm/src/actions/swap.ts b/packages/plugin-evm/src/actions/swap.ts index 3b22916cb35..1c66f43f14b 100644 --- a/packages/plugin-evm/src/actions/swap.ts +++ b/packages/plugin-evm/src/actions/swap.ts @@ -7,7 +7,6 @@ import { getRoutes, } from "@lifi/sdk"; import { WalletProvider } from "../providers/wallet"; -import { getChainConfigs } from "../providers/chainConfigs"; import { swapTemplate } from "../templates"; import type { SwapParams, Transaction } from "../types"; @@ -19,16 +18,14 @@ export class SwapAction { constructor(private walletProvider: WalletProvider) { this.config = createConfig({ integrator: "eliza", - chains: Object.values( - getChainConfigs(this.walletProvider.runtime) - ).map((config) => ({ - id: config.chainId, + chains: Object.values(this.walletProvider.chains).map((config) => ({ + id: config.id, name: config.name, key: config.name.toLowerCase(), chainType: "EVM" as const, nativeToken: { ...config.nativeCurrency, - chainId: config.chainId, + chainId: config.id, address: "0x0000000000000000000000000000000000000000", coinKey: config.nativeCurrency.symbol, priceUSD: "0", @@ -38,15 +35,15 @@ export class SwapAction { name: config.nativeCurrency.name, }, rpcUrls: { - public: { http: [config.rpcUrl] }, + public: { http: [config.rpcUrls.default.http[0]] }, }, - blockExplorerUrls: [config.blockExplorerUrl], + blockExplorerUrls: [config.blockExplorers.default.url], metamask: { - chainId: `0x${config.chainId.toString(16)}`, + chainId: `0x${config.id.toString(16)}`, chainName: config.name, nativeCurrency: config.nativeCurrency, - rpcUrls: [config.rpcUrl], - blockExplorerUrls: [config.blockExplorerUrl], + rpcUrls: [config.rpcUrls.default.http[0]], + blockExplorerUrls: [config.blockExplorers.default.url], }, coin: config.nativeCurrency.symbol, mainnet: true, @@ -56,16 +53,12 @@ export class SwapAction { } async swap(params: SwapParams): Promise { - const walletClient = this.walletProvider.getWalletClient(); + const walletClient = this.walletProvider.getWalletClient(params.chain); const [fromAddress] = await walletClient.getAddresses(); const routes = await getRoutes({ - fromChainId: getChainConfigs(this.walletProvider.runtime)[ - params.chain - ].chainId as ChainId, - toChainId: getChainConfigs(this.walletProvider.runtime)[ - params.chain - ].chainId as ChainId, + fromChainId: this.walletProvider.getChainConfigs(params.chain).id, + toChainId: this.walletProvider.getChainConfigs(params.chain).id, fromTokenAddress: params.fromToken, toTokenAddress: params.toToken, fromAmount: params.amount, @@ -92,8 +85,7 @@ export class SwapAction { .approvalAddress as `0x${string}`, value: BigInt(params.amount), data: process.data as `0x${string}`, - chainId: getChainConfigs(this.walletProvider.runtime)[params.chain] - .chainId, + chainId: this.walletProvider.getChainConfigs(params.chain).id, }; } } @@ -109,7 +101,10 @@ export const swapAction = { callback?: any ) => { try { - const walletProvider = new WalletProvider(runtime); + const privateKey = runtime.getSetting( + "EVM_PRIVATE_KEY" + ) as `0x${string}`; + const walletProvider = new WalletProvider(privateKey); const action = new SwapAction(walletProvider); return await action.swap(options); } catch (error) { From bd268143e0e97fd78a18c33c34835ec03fecd8f8 Mon Sep 17 00:00:00 2001 From: Nicky Ru Date: Thu, 5 Dec 2024 17:44:42 +0000 Subject: [PATCH 10/37] Refactor plugin-evm transfer action --- packages/plugin-evm/src/actions/transfer.ts | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/packages/plugin-evm/src/actions/transfer.ts b/packages/plugin-evm/src/actions/transfer.ts index 18321097fe9..b72dcbed2a5 100644 --- a/packages/plugin-evm/src/actions/transfer.ts +++ b/packages/plugin-evm/src/actions/transfer.ts @@ -1,8 +1,9 @@ import { ByteArray, parseEther, type Hex } from "viem"; +import type { IAgentRuntime, Memory, State } from "@ai16z/eliza"; + import { WalletProvider } from "../providers/wallet"; import type { Transaction, TransferParams } from "../types"; import { transferTemplate } from "../templates"; -import type { IAgentRuntime, Memory, State } from "@ai16z/eliza"; export { transferTemplate }; export class TransferAction { @@ -12,10 +13,12 @@ export class TransferAction { runtime: IAgentRuntime, params: TransferParams ): Promise { - const walletClient = this.walletProvider.getWalletClient(); + const walletClient = this.walletProvider.getWalletClient( + params.fromChain + ); const [fromAddress] = await walletClient.getAddresses(); - await this.walletProvider.switchChain(runtime, params.fromChain); + this.walletProvider.switchChain(params.fromChain); try { const hash = await walletClient.sendTransaction({ @@ -59,7 +62,10 @@ export const transferAction = { state: State, options: any ) => { - const walletProvider = new WalletProvider(runtime); + const privateKey = runtime.getSetting( + "EVM_PRIVATE_KEY" + ) as `0x${string}`; + const walletProvider = new WalletProvider(privateKey); const action = new TransferAction(walletProvider); return action.transfer(runtime, options); }, From c6a3531fc8cc918214f15985c5223ea1bc138179 Mon Sep 17 00:00:00 2001 From: Nicky Ru Date: Sat, 7 Dec 2024 20:38:15 +0000 Subject: [PATCH 11/37] feat: add custom rpc url support --- packages/plugin-evm/src/providers/wallet.ts | 130 ++++++++++++++----- packages/plugin-evm/src/tests/wallet.test.ts | 120 ++++++++++++++--- 2 files changed, 194 insertions(+), 56 deletions(-) diff --git a/packages/plugin-evm/src/providers/wallet.ts b/packages/plugin-evm/src/providers/wallet.ts index 6016271a02c..b4c3257f52b 100644 --- a/packages/plugin-evm/src/providers/wallet.ts +++ b/packages/plugin-evm/src/providers/wallet.ts @@ -19,12 +19,12 @@ export class WalletProvider { chains: Record = { mainnet: viemChains.mainnet }; account: Account; - constructor(privateKey: `0x${string}`, chainNames?: SupportedChain[]) { + constructor(privateKey: `0x${string}`, chains?: Record) { this.setAccount(privateKey); - this.setChains(chainNames); + this.setChains(chains); - if (chainNames?.length > 0) { - this.setCurrentChain(chainNames[0]); + if (chains && Object.keys(chains).length > 0) { + this.setCurrentChain(Object.keys(chains)[0] as SupportedChain); } } @@ -48,6 +48,16 @@ export class WalletProvider { return walletClient; } + getChainConfigs(chainName: SupportedChain): Chain { + const chain = viemChains[chainName]; + + if (!chain?.id) { + throw new Error("Invalid chain name"); + } + + return chain; + } + async getWalletBalance(): Promise { try { const client = this.getPublicClient(this.currentChain); @@ -76,50 +86,47 @@ export class WalletProvider { } } - addChain(chain: SupportedChain) { - this.setChains([chain]); + addChain(chain: Record) { + this.setChains(chain); } - switchChain(chain: SupportedChain) { - if (!this.chains[chain]) { - this.addChain(chain); - } - this.setCurrentChain(chain); - } - - getChainConfigs(chainName: SupportedChain): Chain { - const chain = viemChains[chainName]; - - if (!chain?.id) { - throw new Error("Invalid chain name"); + switchChain(chainName: SupportedChain, customRpcUrl?: string) { + if (!this.chains[chainName]) { + const chain = WalletProvider.genChainFromName( + chainName, + customRpcUrl + ); + this.addChain({ [chainName]: chain }); } - - return chain; + this.setCurrentChain(chainName); } private setAccount = (pk: `0x${string}`) => { this.account = privateKeyToAccount(pk); }; - private setChains = (chainNames?: SupportedChain[]) => { - if (!chainNames) { + + private setChains = (chains?: Record) => { + if (!chains) { return; } - chainNames.forEach((name) => { - const chain = viemChains[name]; - - if (!chain?.id) { - throw new Error("Invalid chain name"); - } - - this.chains[name] = chain; + Object.keys(chains).forEach((chain: string) => { + this.chains[chain] = chains[chain]; }); }; + private setCurrentChain = (chain: SupportedChain) => { this.currentChain = chain; }; - private createHttpTransport = (chain: SupportedChain) => { - return http(this.chains[chain].rpcUrls.default.http[0]); + + private createHttpTransport = (chainName: SupportedChain) => { + const chain = this.chains[chainName]; + + if (chain.rpcUrls.custom) { + return http(chain.rpcUrls.custom.http[0]); + } + return http(chain.rpcUrls.default.http[0]); }; + private createClients = (chain: SupportedChain) => { const transport = this.createHttpTransport(chain); @@ -136,8 +143,60 @@ export class WalletProvider { }), }; }; + + static genChainFromName( + chainName: string, + customRpcUrl?: string | null + ): Chain { + const baseChain = viemChains[chainName]; + + if (!baseChain?.id) { + throw new Error("Invalid chain name"); + } + + const viemChain: Chain = customRpcUrl + ? { + ...baseChain, + rpcUrls: { + ...baseChain.rpcUrls, + custom: { + http: [customRpcUrl], + }, + }, + } + : baseChain; + + return viemChain; + } } +const genChainsFromRuntime = ( + runtime: IAgentRuntime +): Record => { + const chainNames = + (runtime.character.settings.chains?.evm as SupportedChain[]) || []; + const chains = {}; + + chainNames.forEach((chainName) => { + const rpcUrl = runtime.getSetting( + "ETHEREUM_PROVIDER_" + chainName.toUpperCase() + ); + const chain = WalletProvider.genChainFromName(chainName, rpcUrl); + chains[chainName] = chain; + }); + + const mainnet_rpcurl = runtime.getSetting("EVM_PROVIDER_URL"); + if (mainnet_rpcurl) { + const chain = WalletProvider.genChainFromName( + "mainnet", + mainnet_rpcurl + ); + chains["mainnet"] = chain; + } + + return chains; +}; + export const evmWalletProvider: Provider = { async get( runtime: IAgentRuntime, @@ -145,17 +204,16 @@ export const evmWalletProvider: Provider = { state?: State ): Promise { const privateKey = runtime.getSetting("EVM_PRIVATE_KEY"); - const chainNames = - (runtime.character.settings.chains?.evm as SupportedChain[]) || []; - if (!privateKey) { return null; } + const chains = genChainsFromRuntime(runtime); + try { const walletProvider = new WalletProvider( privateKey as `0x${string}`, - chainNames + chains ); const address = walletProvider.getAddress(); const balance = await walletProvider.getWalletBalance(); diff --git a/packages/plugin-evm/src/tests/wallet.test.ts b/packages/plugin-evm/src/tests/wallet.test.ts index 6289e5fdcd0..a8e5a3ee872 100644 --- a/packages/plugin-evm/src/tests/wallet.test.ts +++ b/packages/plugin-evm/src/tests/wallet.test.ts @@ -1,15 +1,28 @@ import { describe, it, expect, beforeAll, beforeEach } from "vitest"; import { generatePrivateKey, privateKeyToAccount } from "viem/accounts"; -import { mainnet, iotex, arbitrum } from "viem/chains"; +import { mainnet, iotex, arbitrum, Chain } from "viem/chains"; import { WalletProvider } from "../providers/wallet"; +const customRpcUrls = { + mainnet: "custom-rpc.mainnet.io", + arbitrum: "custom-rpc.base.io", + iotex: "custom-rpc.iotex.io", +}; + describe("Wallet provider", () => { let walletProvider: WalletProvider; let pk: `0x${string}`; + let customChains: Record = {}; beforeAll(() => { pk = generatePrivateKey(); + + const chainNames = ["iotex", "arbitrum"]; + chainNames.forEach( + (chain) => + (customChains[chain] = WalletProvider.genChainFromName(chain)) + ); }); describe("Constructor", () => { @@ -17,7 +30,7 @@ describe("Wallet provider", () => { const account = privateKeyToAccount(pk); const expectedAddress = account.address; - walletProvider = new WalletProvider(pk, ["iotexTestnet"]); + walletProvider = new WalletProvider(pk); expect(walletProvider.getAddress()).to.be.eq(expectedAddress); }); @@ -28,32 +41,44 @@ describe("Wallet provider", () => { expect(walletProvider.getCurrentChain().id).to.be.eq(mainnet.id); }); it("sets custom chains", () => { - walletProvider = new WalletProvider(pk, ["iotex", "arbitrum"]); + walletProvider = new WalletProvider(pk, customChains); expect(walletProvider.chains.iotex.id).to.be.eq(iotex.id); expect(walletProvider.chains.arbitrum.id).to.be.eq(arbitrum.id); }); it("sets the first provided custom chain as current chain", () => { - walletProvider = new WalletProvider(pk, ["iotex", "arbitrum"]); + walletProvider = new WalletProvider(pk, customChains); expect(walletProvider.getCurrentChain().id).to.be.eq(iotex.id); }); - it("throws if invalid chain name", () => { - // @ts-ignore - expect(() => new WalletProvider(pk, ["eth"])).to.throw(); - }); - it("throws if unsupported chain name", () => { - // @ts-ignore - expect(() => new WalletProvider(pk, ["ethereum"])).to.throw(); - }); }); describe("Clients", () => { beforeEach(() => { - walletProvider = new WalletProvider(pk, []); + walletProvider = new WalletProvider(pk); }); it("generates public client", () => { const client = walletProvider.getPublicClient("mainnet"); expect(client.chain.id).to.be.equal(mainnet.id); + expect(client.transport.url).toEqual( + mainnet.rpcUrls.default.http[0] + ); + }); + it("generates public client with custom rpcurl", () => { + const chain = WalletProvider.genChainFromName( + "mainnet", + customRpcUrls.mainnet + ); + const wp = new WalletProvider(pk, { ["mainnet"]: chain }); + + const client = wp.getPublicClient("mainnet"); + expect(client.chain.id).to.be.equal(mainnet.id); + expect(client.chain.rpcUrls.default.http[0]).to.eq( + mainnet.rpcUrls.default.http[0] + ); + expect(client.chain.rpcUrls.custom.http[0]).to.eq( + customRpcUrls.mainnet + ); + expect(client.transport.url).toEqual(customRpcUrls.mainnet); }); it("generates wallet client", () => { const account = privateKeyToAccount(pk); @@ -62,11 +87,35 @@ describe("Wallet provider", () => { const client = walletProvider.getWalletClient("mainnet"); expect(client.account.address).to.be.equal(expectedAddress); + expect(client.transport.url).toEqual( + mainnet.rpcUrls.default.http[0] + ); + }); + it("generates wallet client with custom rpcurl", () => { + const account = privateKeyToAccount(pk); + const expectedAddress = account.address; + const chain = WalletProvider.genChainFromName( + "mainnet", + customRpcUrls.mainnet + ); + const wp = new WalletProvider(pk, { ["mainnet"]: chain }); + + const client = wp.getWalletClient("mainnet"); + + expect(client.account.address).to.be.equal(expectedAddress); + expect(client.chain.id).to.be.equal(mainnet.id); + expect(client.chain.rpcUrls.default.http[0]).to.eq( + mainnet.rpcUrls.default.http[0] + ); + expect(client.chain.rpcUrls.custom.http[0]).to.eq( + customRpcUrls.mainnet + ); + expect(client.transport.url).toEqual(customRpcUrls.mainnet); }); }); describe("Balance", () => { beforeEach(() => { - walletProvider = new WalletProvider(pk, ["iotex"]); + walletProvider = new WalletProvider(pk, customChains); }); it("should fetch balance", async () => { const bal = await walletProvider.getWalletBalance(); @@ -79,14 +128,34 @@ describe("Wallet provider", () => { expect(bal).to.be.eq("0"); }); it("should return null if chain is not added", async () => { - const bal = - await walletProvider.getWalletBalanceForChain("arbitrum"); + const bal = await walletProvider.getWalletBalanceForChain("base"); expect(bal).to.be.null; }); }); describe("Chain", () => { beforeEach(() => { - walletProvider = new WalletProvider(pk, ["iotex"]); + walletProvider = new WalletProvider(pk, customChains); + }); + it("generates chains from chain name", () => { + const chainName = "iotex"; + const chain: Chain = WalletProvider.genChainFromName(chainName); + + expect(chain.rpcUrls.default.http[0]).to.eq( + iotex.rpcUrls.default.http[0] + ); + }); + it("generates chains from chain name with custom rpc url", () => { + const chainName = "iotex"; + const customRpcUrl = "custom.url.io"; + const chain: Chain = WalletProvider.genChainFromName( + chainName, + customRpcUrl + ); + + expect(chain.rpcUrls.default.http[0]).to.eq( + iotex.rpcUrls.default.http[0] + ); + expect(chain.rpcUrls.custom.http[0]).to.eq(customRpcUrl); }); it("switches chain", () => { const initialChain = walletProvider.getCurrentChain().id; @@ -108,9 +177,10 @@ describe("Wallet provider", () => { }); it("adds chain", () => { const initialChains = walletProvider.chains; - expect(initialChains.arbitrum).to.be.undefined; + expect(initialChains.base).to.be.undefined; - walletProvider.addChain("arbitrum"); + const base = WalletProvider.genChainFromName("base"); + walletProvider.addChain({ base }); const newChains = walletProvider.chains; expect(newChains.arbitrum.id).to.be.eq(arbitrum.id); }); @@ -118,7 +188,7 @@ describe("Wallet provider", () => { const chain = walletProvider.getChainConfigs("iotex"); expect(chain.id).to.eq(iotex.id); - }) + }); it("throws if tries to switch to an invalid chain", () => { const initialChain = walletProvider.getCurrentChain().id; expect(initialChain).to.be.eq(iotex.id); @@ -126,5 +196,15 @@ describe("Wallet provider", () => { // @ts-ignore expect(() => walletProvider.switchChain("eth")).to.throw(); }); + it("throws if unsupported chain name", () => { + // @ts-ignore + expect(() => + WalletProvider.genChainFromName("ethereum") + ).to.throw(); + }); + it("throws if invalid chain name", () => { + // @ts-ignore + expect(() => WalletProvider.genChainFromName("eth")).to.throw(); + }); }); }); From a420a966ae3b9b9b064ee525164b5379dc1b8bc3 Mon Sep 17 00:00:00 2001 From: Nicky Ru Date: Sat, 7 Dec 2024 20:41:54 +0000 Subject: [PATCH 12/37] feat: add better feedback from wallet provider --- packages/plugin-evm/src/providers/wallet.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/plugin-evm/src/providers/wallet.ts b/packages/plugin-evm/src/providers/wallet.ts index b4c3257f52b..60e5a1a9a14 100644 --- a/packages/plugin-evm/src/providers/wallet.ts +++ b/packages/plugin-evm/src/providers/wallet.ts @@ -217,7 +217,7 @@ export const evmWalletProvider: Provider = { ); const address = walletProvider.getAddress(); const balance = await walletProvider.getWalletBalance(); - return `EVM Wallet Address: ${address}\nBalance: ${balance} ETH`; + return `EVM Wallet Address: ${address}\nBalance: ${balance} ETH\nChain ID: ${chain.id}, Name: ${chain.name}, Native Currency: ${chain.nativeCurrency}`; } catch (error) { console.error("Error in EVM wallet provider:", error); return null; From ee0a3aadc359c87bede143c08506abac51e809b0 Mon Sep 17 00:00:00 2001 From: Nicky Ru Date: Mon, 9 Dec 2024 15:00:55 +0000 Subject: [PATCH 13/37] fix: fix undefined chain --- packages/plugin-evm/src/providers/wallet.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/plugin-evm/src/providers/wallet.ts b/packages/plugin-evm/src/providers/wallet.ts index 60e5a1a9a14..c092b27d77e 100644 --- a/packages/plugin-evm/src/providers/wallet.ts +++ b/packages/plugin-evm/src/providers/wallet.ts @@ -217,6 +217,7 @@ export const evmWalletProvider: Provider = { ); const address = walletProvider.getAddress(); const balance = await walletProvider.getWalletBalance(); + const chain = walletProvider.getCurrentChain(); return `EVM Wallet Address: ${address}\nBalance: ${balance} ETH\nChain ID: ${chain.id}, Name: ${chain.name}, Native Currency: ${chain.nativeCurrency}`; } catch (error) { console.error("Error in EVM wallet provider:", error); From b95bf03d3b6b2ace41c0975a21d8d086c1ce45af Mon Sep 17 00:00:00 2001 From: Nicky Ru Date: Tue, 10 Dec 2024 17:51:21 +0000 Subject: [PATCH 14/37] fix: transfer action fix #735 --- packages/plugin-evm/src/actions/transfer.ts | 14 ++--- packages/plugin-evm/src/providers/wallet.ts | 42 ++++++-------- .../plugin-evm/src/tests/transfer.test.ts | 55 +++++++++++++++++++ 3 files changed, 77 insertions(+), 34 deletions(-) create mode 100644 packages/plugin-evm/src/tests/transfer.test.ts diff --git a/packages/plugin-evm/src/actions/transfer.ts b/packages/plugin-evm/src/actions/transfer.ts index b72dcbed2a5..da9e82e5a14 100644 --- a/packages/plugin-evm/src/actions/transfer.ts +++ b/packages/plugin-evm/src/actions/transfer.ts @@ -9,20 +9,14 @@ export { transferTemplate }; export class TransferAction { constructor(private walletProvider: WalletProvider) {} - async transfer( - runtime: IAgentRuntime, - params: TransferParams - ): Promise { + async transfer(params: TransferParams): Promise { const walletClient = this.walletProvider.getWalletClient( params.fromChain ); - const [fromAddress] = await walletClient.getAddresses(); - - this.walletProvider.switchChain(params.fromChain); try { const hash = await walletClient.sendTransaction({ - account: fromAddress, + account: walletClient.account, to: params.toAddress, value: parseEther(params.amount), data: params.data as Hex, @@ -42,7 +36,7 @@ export class TransferAction { return { hash, - from: fromAddress, + from: walletClient.account.address, to: params.toAddress, value: parseEther(params.amount), data: params.data as Hex, @@ -67,7 +61,7 @@ export const transferAction = { ) as `0x${string}`; const walletProvider = new WalletProvider(privateKey); const action = new TransferAction(walletProvider); - return action.transfer(runtime, options); + return action.transfer(options); }, template: transferTemplate, validate: async (runtime: IAgentRuntime) => { diff --git a/packages/plugin-evm/src/providers/wallet.ts b/packages/plugin-evm/src/providers/wallet.ts index c092b27d77e..0d62d51e340 100644 --- a/packages/plugin-evm/src/providers/wallet.ts +++ b/packages/plugin-evm/src/providers/wallet.ts @@ -8,6 +8,7 @@ import type { Chain, HttpTransport, Account, + PrivateKeyAccount, } from "viem"; import * as viemChains from "viem/chains"; import { privateKeyToAccount } from "viem/accounts"; @@ -17,7 +18,7 @@ import type { SupportedChain } from "../types"; export class WalletProvider { private currentChain: SupportedChain = "mainnet"; chains: Record = { mainnet: viemChains.mainnet }; - account: Account; + account: PrivateKeyAccount; constructor(privateKey: `0x${string}`, chains?: Record) { this.setAccount(privateKey); @@ -36,15 +37,25 @@ export class WalletProvider { return this.chains[this.currentChain]; } - getPublicClient( - chainName: SupportedChain - ): PublicClient { - const { publicClient } = this.createClients(chainName); + getPublicClient(chainName: SupportedChain): PublicClient { + const transport = this.createHttpTransport(chainName); + + const publicClient = createPublicClient({ + chain: this.chains[chainName], + transport, + }) return publicClient; } - getWalletClient(chainName: SupportedChain): WalletClient { - const { walletClient } = this.createClients(chainName); + getWalletClient(chainName: SupportedChain):WalletClient { + const transport = this.createHttpTransport(chainName); + + const walletClient = createWalletClient({ + chain: this.chains[chainName], + transport, + account: this.account, + }) + return walletClient; } @@ -127,23 +138,6 @@ export class WalletProvider { return http(chain.rpcUrls.default.http[0]); }; - private createClients = (chain: SupportedChain) => { - const transport = this.createHttpTransport(chain); - - return { - chain: this.chains[chain], - publicClient: createPublicClient({ - chain: this.chains[chain], - transport, - }), - walletClient: createWalletClient({ - chain: this.chains[chain], - transport, - account: this.account, - }), - }; - }; - static genChainFromName( chainName: string, customRpcUrl?: string | null diff --git a/packages/plugin-evm/src/tests/transfer.test.ts b/packages/plugin-evm/src/tests/transfer.test.ts new file mode 100644 index 00000000000..d637a6a3d9d --- /dev/null +++ b/packages/plugin-evm/src/tests/transfer.test.ts @@ -0,0 +1,55 @@ +import { describe, it, expect, beforeEach } from "vitest"; +import { generatePrivateKey, privateKeyToAccount } from "viem/accounts"; +import { Account, Chain } from "viem"; + +import { TransferAction } from "../actions/transfer"; +import { WalletProvider } from "../providers/wallet"; + +describe("Transfer Action", () => { + let wp: WalletProvider; + + beforeEach(async () => { + const pk = generatePrivateKey(); + const customChains = prepareChains(); + wp = new WalletProvider(pk, customChains); + }); + describe("Constructor", () => { + it("should initialize with wallet provider", () => { + const ta = new TransferAction(wp); + + expect(ta).to.toBeDefined(); + }); + }); + describe("Transfer", () => { + let ta: TransferAction; + let receiver: Account; + + beforeEach(() => { + ta = new TransferAction(wp); + receiver = privateKeyToAccount(generatePrivateKey()); + }); + + it("throws if not enough gas", async () => { + await expect( + ta.transfer({ + fromChain: "iotexTestnet", + toAddress: receiver.address, + amount: "1", + }) + ).rejects.toThrow( + "Transfer failed: The total cost (gas * gas fee + value) of executing this transaction exceeds the balance of the account." + ); + }); + }); +}); + +const prepareChains = () => { + let customChains: Record = {}; + const chainNames = ["iotexTestnet"]; + chainNames.forEach( + (chain) => + (customChains[chain] = WalletProvider.genChainFromName(chain)) + ); + + return customChains; +}; From ee43b4560fb907298173b096c8a815874a5f6d51 Mon Sep 17 00:00:00 2001 From: Nicky Ru Date: Tue, 10 Dec 2024 19:36:12 +0000 Subject: [PATCH 15/37] fix: transfer action fix for EVM Plugin can't run any action #735 --- packages/plugin-evm/src/actions/transfer.ts | 63 +++++++++++++++++---- packages/plugin-evm/src/providers/wallet.ts | 35 ++++++------ packages/plugin-evm/src/templates/index.ts | 12 ++-- 3 files changed, 77 insertions(+), 33 deletions(-) diff --git a/packages/plugin-evm/src/actions/transfer.ts b/packages/plugin-evm/src/actions/transfer.ts index da9e82e5a14..64058e5ad05 100644 --- a/packages/plugin-evm/src/actions/transfer.ts +++ b/packages/plugin-evm/src/actions/transfer.ts @@ -1,7 +1,15 @@ -import { ByteArray, parseEther, type Hex } from "viem"; -import type { IAgentRuntime, Memory, State } from "@ai16z/eliza"; +import { ByteArray, formatEther, parseEther, type Hex } from "viem"; +import { + composeContext, + generateObjectDEPRECATED, + HandlerCallback, + ModelClass, + type IAgentRuntime, + type Memory, + type State, +} from "@ai16z/eliza"; -import { WalletProvider } from "../providers/wallet"; +import { initWalletProvider, WalletProvider } from "../providers/wallet"; import type { Transaction, TransferParams } from "../types"; import { transferTemplate } from "../templates"; @@ -54,14 +62,49 @@ export const transferAction = { runtime: IAgentRuntime, message: Memory, state: State, - options: any + options: any, + callback?: HandlerCallback ) => { - const privateKey = runtime.getSetting( - "EVM_PRIVATE_KEY" - ) as `0x${string}`; - const walletProvider = new WalletProvider(privateKey); - const action = new TransferAction(walletProvider); - return action.transfer(options); + try { + const walletProvider = initWalletProvider(runtime); + const action = new TransferAction(walletProvider); + + const context = composeContext({ + state, + template: transferTemplate, + }); + + const transferDetails = await generateObjectDEPRECATED({ + runtime, + context, + modelClass: ModelClass.SMALL, + }); + + const tx = await action.transfer(transferDetails); + + if (callback) { + callback({ + text: `Successfully transferred ${formatEther(tx.value)} tokens to ${tx.to}\nTransaction hash: ${tx.hash}`, + content: { + success: true, + hash: tx.hash, + amount: formatEther(tx.value), + recipient: tx.to, + }, + }); + } + + 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; + } }, template: transferTemplate, validate: async (runtime: IAgentRuntime) => { diff --git a/packages/plugin-evm/src/providers/wallet.ts b/packages/plugin-evm/src/providers/wallet.ts index 0d62d51e340..91ea99716fd 100644 --- a/packages/plugin-evm/src/providers/wallet.ts +++ b/packages/plugin-evm/src/providers/wallet.ts @@ -37,24 +37,26 @@ export class WalletProvider { return this.chains[this.currentChain]; } - getPublicClient(chainName: SupportedChain): PublicClient { + getPublicClient( + chainName: SupportedChain + ): PublicClient { const transport = this.createHttpTransport(chainName); const publicClient = createPublicClient({ chain: this.chains[chainName], transport, - }) + }); return publicClient; } - getWalletClient(chainName: SupportedChain):WalletClient { + getWalletClient(chainName: SupportedChain): WalletClient { const transport = this.createHttpTransport(chainName); const walletClient = createWalletClient({ chain: this.chains[chainName], transport, account: this.account, - }) + }); return walletClient; } @@ -191,28 +193,29 @@ const genChainsFromRuntime = ( return chains; }; +export const initWalletProvider = (runtime: IAgentRuntime) => { + const privateKey = runtime.getSetting("EVM_PRIVATE_KEY"); + if (!privateKey) { + return null; + } + + const chains = genChainsFromRuntime(runtime); + + return new WalletProvider(privateKey as `0x${string}`, chains); +}; + export const evmWalletProvider: Provider = { async get( runtime: IAgentRuntime, message: Memory, state?: State ): Promise { - const privateKey = runtime.getSetting("EVM_PRIVATE_KEY"); - if (!privateKey) { - return null; - } - - const chains = genChainsFromRuntime(runtime); - try { - const walletProvider = new WalletProvider( - privateKey as `0x${string}`, - chains - ); + const walletProvider = initWalletProvider(runtime); const address = walletProvider.getAddress(); const balance = await walletProvider.getWalletBalance(); const chain = walletProvider.getCurrentChain(); - return `EVM Wallet Address: ${address}\nBalance: ${balance} ETH\nChain ID: ${chain.id}, Name: ${chain.name}, Native Currency: ${chain.nativeCurrency}`; + return `EVM Wallet Address: ${address}\nBalance: ${balance} ${chain.nativeCurrency.symbol}\nChain ID: ${chain.id}, Name: ${chain.name}`; } catch (error) { console.error("Error in EVM wallet provider:", error); return null; diff --git a/packages/plugin-evm/src/templates/index.ts b/packages/plugin-evm/src/templates/index.ts index a8c7f1fcc3e..c32dafe2ff5 100644 --- a/packages/plugin-evm/src/templates/index.ts +++ b/packages/plugin-evm/src/templates/index.ts @@ -5,19 +5,17 @@ export const transferTemplate = `Given the recent messages and wallet informatio {{walletInfo}} Extract the following information about the requested transfer: -- Chain to execute on -- Amount to transfer +- Chain to execute on (like in viem/chains) +- Amount to transfer (only number without coin symbol) - Recipient address -- Token symbol or address (if not native token) Respond with a JSON markdown block containing only the extracted values: \`\`\`json { - "chain": "ethereum" | "base" | "sepolia" | "bsc" | "arbitrum" | "avalanche" | "polygon" | "optimism" | "cronos" | "gnosis" | "fantom" | "klaytn" | "celo" | "moonbeam" | "aurora" | "harmonyOne" | "moonriver" | "arbitrumNova" | "mantle" | "linea" | "scroll" | "filecoin" | "taiko" | "zksync" | "canto" | null, - "amount": string | null, - "toAddress": string | null, - "token": string | null + "fromChain": "ethereum" | "base" | ..., + "amount": string, + "toAddress": string } \`\`\` `; From 9fc4b0ea7df91541b6c5853daf9bfe9c73a170db Mon Sep 17 00:00:00 2001 From: Nicky Ru Date: Wed, 11 Dec 2024 13:00:15 +0000 Subject: [PATCH 16/37] fix: throw if evm private key is missing --- packages/plugin-evm/src/providers/wallet.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/plugin-evm/src/providers/wallet.ts b/packages/plugin-evm/src/providers/wallet.ts index 91ea99716fd..d731d46dd3e 100644 --- a/packages/plugin-evm/src/providers/wallet.ts +++ b/packages/plugin-evm/src/providers/wallet.ts @@ -196,7 +196,7 @@ const genChainsFromRuntime = ( export const initWalletProvider = (runtime: IAgentRuntime) => { const privateKey = runtime.getSetting("EVM_PRIVATE_KEY"); if (!privateKey) { - return null; + throw new Error("EVM_PRIVATE_KEY is missing") } const chains = genChainsFromRuntime(runtime); From 47e4c2f6e9c54d3e56a621ee10735f2b5d0db3ea Mon Sep 17 00:00:00 2001 From: Nicky Ru Date: Wed, 11 Dec 2024 16:15:17 +0000 Subject: [PATCH 17/37] chore: add console log for transfer action --- packages/plugin-evm/src/actions/transfer.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/plugin-evm/src/actions/transfer.ts b/packages/plugin-evm/src/actions/transfer.ts index 64058e5ad05..ffbfa76d371 100644 --- a/packages/plugin-evm/src/actions/transfer.ts +++ b/packages/plugin-evm/src/actions/transfer.ts @@ -18,6 +18,10 @@ export class TransferAction { constructor(private walletProvider: WalletProvider) {} async transfer(params: TransferParams): Promise { + console.log( + `Transferring: ${params.amount} tokens to (${params.toAddress} on ${params.fromChain})` + ); + const walletClient = this.walletProvider.getWalletClient( params.fromChain ); From 5e7efb0d9cbc31a1aa8526730362ff4020be05b2 Mon Sep 17 00:00:00 2001 From: Nicky Ru Date: Wed, 11 Dec 2024 16:15:52 +0000 Subject: [PATCH 18/37] fix: fix rpcError for ethereum mainnet --- packages/plugin-evm/src/templates/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/plugin-evm/src/templates/index.ts b/packages/plugin-evm/src/templates/index.ts index c32dafe2ff5..25fd11d1f0a 100644 --- a/packages/plugin-evm/src/templates/index.ts +++ b/packages/plugin-evm/src/templates/index.ts @@ -13,7 +13,7 @@ Respond with a JSON markdown block containing only the extracted values: \`\`\`json { - "fromChain": "ethereum" | "base" | ..., + "fromChain": "mainnet" | "base" | ..., "amount": string, "toAddress": string } From 8c15447d88ac37d1a9bc15d1053250bf797dd761 Mon Sep 17 00:00:00 2001 From: Nicky Ru Date: Wed, 11 Dec 2024 18:07:55 +0000 Subject: [PATCH 19/37] fix: remove duplicated import --- packages/plugin-evm/src/providers/wallet.ts | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/packages/plugin-evm/src/providers/wallet.ts b/packages/plugin-evm/src/providers/wallet.ts index d731d46dd3e..2b816c461bb 100644 --- a/packages/plugin-evm/src/providers/wallet.ts +++ b/packages/plugin-evm/src/providers/wallet.ts @@ -1,4 +1,9 @@ -import { formatUnits } from "viem"; +import { + createPublicClient, + createWalletClient, + formatUnits, + http, +} from "viem"; import { privateKeyToAccount } from "viem/accounts"; import type { IAgentRuntime, Provider, Memory, State } from "@ai16z/eliza"; import type { @@ -11,7 +16,6 @@ import type { PrivateKeyAccount, } from "viem"; import * as viemChains from "viem/chains"; -import { privateKeyToAccount } from "viem/accounts"; import type { SupportedChain } from "../types"; @@ -196,7 +200,7 @@ const genChainsFromRuntime = ( export const initWalletProvider = (runtime: IAgentRuntime) => { const privateKey = runtime.getSetting("EVM_PRIVATE_KEY"); if (!privateKey) { - throw new Error("EVM_PRIVATE_KEY is missing") + throw new Error("EVM_PRIVATE_KEY is missing"); } const chains = genChainsFromRuntime(runtime); From e9b6c1cd490897352059f70047a22b5a13182b33 Mon Sep 17 00:00:00 2001 From: Piotr Gesicki Date: Wed, 11 Dec 2024 20:31:01 +0100 Subject: [PATCH 20/37] update lock file --- packages/client-farcaster/pnpm-lock.yaml | 1478 ---------------------- pnpm-lock.yaml | 1081 ++++++++-------- 2 files changed, 573 insertions(+), 1986 deletions(-) delete mode 100644 packages/client-farcaster/pnpm-lock.yaml diff --git a/packages/client-farcaster/pnpm-lock.yaml b/packages/client-farcaster/pnpm-lock.yaml deleted file mode 100644 index 3ed01a948fa..00000000000 --- a/packages/client-farcaster/pnpm-lock.yaml +++ /dev/null @@ -1,1478 +0,0 @@ -lockfileVersion: '9.0' - -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false - -importers: - - .: - dependencies: - '@farcaster/hub-nodejs': - specifier: ^0.12.7 - version: 0.12.7(zod@3.23.8) - viem: - specifier: ^2.21.47 - version: 2.21.49(zod@3.23.8) - devDependencies: - tsup: - specifier: ^8.3.5 - version: 8.3.5(postcss@8.4.49)(yaml@2.6.1) - -packages: - - '@adraffy/ens-normalize@1.11.0': - resolution: {integrity: sha512-/3DDPKHqqIqxUULp8yP4zODUY1i+2xvVWsv8A79xGWdCAG+8sb0hRh0Rk2QyOJUnnbyPUAZYcpBuRe3nS2OIUg==} - - '@esbuild/aix-ppc64@0.24.0': - resolution: {integrity: sha512-WtKdFM7ls47zkKHFVzMz8opM7LkcsIp9amDUBIAWirg70RM71WRSjdILPsY5Uv1D42ZpUfaPILDlfactHgsRkw==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [aix] - - '@esbuild/android-arm64@0.24.0': - resolution: {integrity: sha512-Vsm497xFM7tTIPYK9bNTYJyF/lsP590Qc1WxJdlB6ljCbdZKU9SY8i7+Iin4kyhV/KV5J2rOKsBQbB77Ab7L/w==} - engines: {node: '>=18'} - cpu: [arm64] - os: [android] - - '@esbuild/android-arm@0.24.0': - resolution: {integrity: sha512-arAtTPo76fJ/ICkXWetLCc9EwEHKaeya4vMrReVlEIUCAUncH7M4bhMQ+M9Vf+FFOZJdTNMXNBrWwW+OXWpSew==} - engines: {node: '>=18'} - cpu: [arm] - os: [android] - - '@esbuild/android-x64@0.24.0': - resolution: {integrity: sha512-t8GrvnFkiIY7pa7mMgJd7p8p8qqYIz1NYiAoKc75Zyv73L3DZW++oYMSHPRarcotTKuSs6m3hTOa5CKHaS02TQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [android] - - '@esbuild/darwin-arm64@0.24.0': - resolution: {integrity: sha512-CKyDpRbK1hXwv79soeTJNHb5EiG6ct3efd/FTPdzOWdbZZfGhpbcqIpiD0+vwmpu0wTIL97ZRPZu8vUt46nBSw==} - engines: {node: '>=18'} - cpu: [arm64] - os: [darwin] - - '@esbuild/darwin-x64@0.24.0': - resolution: {integrity: sha512-rgtz6flkVkh58od4PwTRqxbKH9cOjaXCMZgWD905JOzjFKW+7EiUObfd/Kav+A6Gyud6WZk9w+xu6QLytdi2OA==} - engines: {node: '>=18'} - cpu: [x64] - os: [darwin] - - '@esbuild/freebsd-arm64@0.24.0': - resolution: {integrity: sha512-6Mtdq5nHggwfDNLAHkPlyLBpE5L6hwsuXZX8XNmHno9JuL2+bg2BX5tRkwjyfn6sKbxZTq68suOjgWqCicvPXA==} - engines: {node: '>=18'} - cpu: [arm64] - os: [freebsd] - - '@esbuild/freebsd-x64@0.24.0': - resolution: {integrity: sha512-D3H+xh3/zphoX8ck4S2RxKR6gHlHDXXzOf6f/9dbFt/NRBDIE33+cVa49Kil4WUjxMGW0ZIYBYtaGCa2+OsQwQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [freebsd] - - '@esbuild/linux-arm64@0.24.0': - resolution: {integrity: sha512-TDijPXTOeE3eaMkRYpcy3LarIg13dS9wWHRdwYRnzlwlA370rNdZqbcp0WTyyV/k2zSxfko52+C7jU5F9Tfj1g==} - engines: {node: '>=18'} - cpu: [arm64] - os: [linux] - - '@esbuild/linux-arm@0.24.0': - resolution: {integrity: sha512-gJKIi2IjRo5G6Glxb8d3DzYXlxdEj2NlkixPsqePSZMhLudqPhtZ4BUrpIuTjJYXxvF9njql+vRjB2oaC9XpBw==} - engines: {node: '>=18'} - cpu: [arm] - os: [linux] - - '@esbuild/linux-ia32@0.24.0': - resolution: {integrity: sha512-K40ip1LAcA0byL05TbCQ4yJ4swvnbzHscRmUilrmP9Am7//0UjPreh4lpYzvThT2Quw66MhjG//20mrufm40mA==} - engines: {node: '>=18'} - cpu: [ia32] - os: [linux] - - '@esbuild/linux-loong64@0.24.0': - resolution: {integrity: sha512-0mswrYP/9ai+CU0BzBfPMZ8RVm3RGAN/lmOMgW4aFUSOQBjA31UP8Mr6DDhWSuMwj7jaWOT0p0WoZ6jeHhrD7g==} - engines: {node: '>=18'} - cpu: [loong64] - os: [linux] - - '@esbuild/linux-mips64el@0.24.0': - resolution: {integrity: sha512-hIKvXm0/3w/5+RDtCJeXqMZGkI2s4oMUGj3/jM0QzhgIASWrGO5/RlzAzm5nNh/awHE0A19h/CvHQe6FaBNrRA==} - engines: {node: '>=18'} - cpu: [mips64el] - os: [linux] - - '@esbuild/linux-ppc64@0.24.0': - resolution: {integrity: sha512-HcZh5BNq0aC52UoocJxaKORfFODWXZxtBaaZNuN3PUX3MoDsChsZqopzi5UupRhPHSEHotoiptqikjN/B77mYQ==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [linux] - - '@esbuild/linux-riscv64@0.24.0': - resolution: {integrity: sha512-bEh7dMn/h3QxeR2KTy1DUszQjUrIHPZKyO6aN1X4BCnhfYhuQqedHaa5MxSQA/06j3GpiIlFGSsy1c7Gf9padw==} - engines: {node: '>=18'} - cpu: [riscv64] - os: [linux] - - '@esbuild/linux-s390x@0.24.0': - resolution: {integrity: sha512-ZcQ6+qRkw1UcZGPyrCiHHkmBaj9SiCD8Oqd556HldP+QlpUIe2Wgn3ehQGVoPOvZvtHm8HPx+bH20c9pvbkX3g==} - engines: {node: '>=18'} - cpu: [s390x] - os: [linux] - - '@esbuild/linux-x64@0.24.0': - resolution: {integrity: sha512-vbutsFqQ+foy3wSSbmjBXXIJ6PL3scghJoM8zCL142cGaZKAdCZHyf+Bpu/MmX9zT9Q0zFBVKb36Ma5Fzfa8xA==} - engines: {node: '>=18'} - cpu: [x64] - os: [linux] - - '@esbuild/netbsd-x64@0.24.0': - resolution: {integrity: sha512-hjQ0R/ulkO8fCYFsG0FZoH+pWgTTDreqpqY7UnQntnaKv95uP5iW3+dChxnx7C3trQQU40S+OgWhUVwCjVFLvg==} - engines: {node: '>=18'} - cpu: [x64] - os: [netbsd] - - '@esbuild/openbsd-arm64@0.24.0': - resolution: {integrity: sha512-MD9uzzkPQbYehwcN583yx3Tu5M8EIoTD+tUgKF982WYL9Pf5rKy9ltgD0eUgs8pvKnmizxjXZyLt0z6DC3rRXg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openbsd] - - '@esbuild/openbsd-x64@0.24.0': - resolution: {integrity: sha512-4ir0aY1NGUhIC1hdoCzr1+5b43mw99uNwVzhIq1OY3QcEwPDO3B7WNXBzaKY5Nsf1+N11i1eOfFcq+D/gOS15Q==} - engines: {node: '>=18'} - cpu: [x64] - os: [openbsd] - - '@esbuild/sunos-x64@0.24.0': - resolution: {integrity: sha512-jVzdzsbM5xrotH+W5f1s+JtUy1UWgjU0Cf4wMvffTB8m6wP5/kx0KiaLHlbJO+dMgtxKV8RQ/JvtlFcdZ1zCPA==} - engines: {node: '>=18'} - cpu: [x64] - os: [sunos] - - '@esbuild/win32-arm64@0.24.0': - resolution: {integrity: sha512-iKc8GAslzRpBytO2/aN3d2yb2z8XTVfNV0PjGlCxKo5SgWmNXx82I/Q3aG1tFfS+A2igVCY97TJ8tnYwpUWLCA==} - engines: {node: '>=18'} - cpu: [arm64] - os: [win32] - - '@esbuild/win32-ia32@0.24.0': - resolution: {integrity: sha512-vQW36KZolfIudCcTnaTpmLQ24Ha1RjygBo39/aLkM2kmjkWmZGEJ5Gn9l5/7tzXA42QGIoWbICfg6KLLkIw6yw==} - engines: {node: '>=18'} - cpu: [ia32] - os: [win32] - - '@esbuild/win32-x64@0.24.0': - resolution: {integrity: sha512-7IAFPrjSQIJrGsK6flwg7NFmwBoSTyF3rl7If0hNUFQU4ilTsEPL6GuMuU9BfIWVVGuRnuIidkSMC+c0Otu8IA==} - engines: {node: '>=18'} - cpu: [x64] - os: [win32] - - '@faker-js/faker@7.6.0': - resolution: {integrity: sha512-XK6BTq1NDMo9Xqw/YkYyGjSsg44fbNwYRx7QK2CuoQgyy+f1rrTDHoExVM5PsyXCtfl2vs2vVJ0MN0yN6LppRw==} - engines: {node: '>=14.0.0', npm: '>=6.0.0'} - - '@farcaster/core@0.15.6': - resolution: {integrity: sha512-Vxq2JhqdZYEMjH4PIwPXQkalY46S4Mol2oCSHUafXenDx6WSoQJqF/4an4KyxGQbmA7Cf8+hl6zuNzkkHXEUyQ==} - - '@farcaster/hub-nodejs@0.12.7': - resolution: {integrity: sha512-05zXNqnHRBSbOkHl0KDh6l60nHK5MiKFky0JBGbdOZXdkFCk4FIiHv9AGLxjFXr/FxA3jSTHUJfvRRe5TonjRw==} - - '@grpc/grpc-js@1.11.3': - resolution: {integrity: sha512-i9UraDzFHMR+Iz/MhFLljT+fCpgxZ3O6CxwGJ8YuNYHJItIHUzKJpW2LvoFZNnGPwqc9iWy9RAucxV0JoR9aUQ==} - engines: {node: '>=12.10.0'} - - '@grpc/proto-loader@0.7.13': - resolution: {integrity: sha512-AiXO/bfe9bmxBjxxtYxFAXGZvMaN5s8kO+jBHAJCON8rJoB5YS/D6X7ZNc6XQkuHNmyl4CYaMI1fJ/Gn27RGGw==} - engines: {node: '>=6'} - hasBin: true - - '@isaacs/cliui@8.0.2': - resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} - engines: {node: '>=12'} - - '@jridgewell/gen-mapping@0.3.5': - resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} - engines: {node: '>=6.0.0'} - - '@jridgewell/resolve-uri@3.1.2': - resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} - engines: {node: '>=6.0.0'} - - '@jridgewell/set-array@1.2.1': - resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} - engines: {node: '>=6.0.0'} - - '@jridgewell/sourcemap-codec@1.5.0': - resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} - - '@jridgewell/trace-mapping@0.3.25': - resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} - - '@js-sdsl/ordered-map@4.4.2': - resolution: {integrity: sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw==} - - '@noble/curves@1.6.0': - resolution: {integrity: sha512-TlaHRXDehJuRNR9TfZDNQ45mMEd5dwUwmicsafcIX4SsNiqnCHKjE/1alYPd/lDRVhxdhUAlv8uEhMCI5zjIJQ==} - engines: {node: ^14.21.3 || >=16} - - '@noble/curves@1.7.0': - resolution: {integrity: sha512-UTMhXK9SeDhFJVrHeUJ5uZlI6ajXg10O6Ddocf9S6GjbSBVZsJo88HzKwXznNfGpMTRDyJkqMjNDPYgf0qFWnw==} - engines: {node: ^14.21.3 || >=16} - - '@noble/hashes@1.5.0': - resolution: {integrity: sha512-1j6kQFb7QRru7eKN3ZDvRcP13rugwdxZqCjbiAVZfIJwgj2A65UmT4TgARXGlXgnRkORLTDTrO19ZErt7+QXgA==} - engines: {node: ^14.21.3 || >=16} - - '@noble/hashes@1.6.0': - resolution: {integrity: sha512-YUULf0Uk4/mAA89w+k3+yUYh6NrEvxZa5T6SY3wlMvE2chHkxFUUIDI8/XW1QSC357iA5pSnqt7XEhvFOqmDyQ==} - engines: {node: ^14.21.3 || >=16} - - '@pkgjs/parseargs@0.11.0': - resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} - engines: {node: '>=14'} - - '@protobufjs/aspromise@1.1.2': - resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==} - - '@protobufjs/base64@1.1.2': - resolution: {integrity: sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==} - - '@protobufjs/codegen@2.0.4': - resolution: {integrity: sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==} - - '@protobufjs/eventemitter@1.1.0': - resolution: {integrity: sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==} - - '@protobufjs/fetch@1.1.0': - resolution: {integrity: sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==} - - '@protobufjs/float@1.0.2': - resolution: {integrity: sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==} - - '@protobufjs/inquire@1.1.0': - resolution: {integrity: sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==} - - '@protobufjs/path@1.1.2': - resolution: {integrity: sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==} - - '@protobufjs/pool@1.1.0': - resolution: {integrity: sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==} - - '@protobufjs/utf8@1.1.0': - resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} - - '@rollup/rollup-android-arm-eabi@4.27.4': - resolution: {integrity: sha512-2Y3JT6f5MrQkICUyRVCw4oa0sutfAsgaSsb0Lmmy1Wi2y7X5vT9Euqw4gOsCyy0YfKURBg35nhUKZS4mDcfULw==} - cpu: [arm] - os: [android] - - '@rollup/rollup-android-arm64@4.27.4': - resolution: {integrity: sha512-wzKRQXISyi9UdCVRqEd0H4cMpzvHYt1f/C3CoIjES6cG++RHKhrBj2+29nPF0IB5kpy9MS71vs07fvrNGAl/iA==} - cpu: [arm64] - os: [android] - - '@rollup/rollup-darwin-arm64@4.27.4': - resolution: {integrity: sha512-PlNiRQapift4LNS8DPUHuDX/IdXiLjf8mc5vdEmUR0fF/pyy2qWwzdLjB+iZquGr8LuN4LnUoSEvKRwjSVYz3Q==} - cpu: [arm64] - os: [darwin] - - '@rollup/rollup-darwin-x64@4.27.4': - resolution: {integrity: sha512-o9bH2dbdgBDJaXWJCDTNDYa171ACUdzpxSZt+u/AAeQ20Nk5x+IhA+zsGmrQtpkLiumRJEYef68gcpn2ooXhSQ==} - cpu: [x64] - os: [darwin] - - '@rollup/rollup-freebsd-arm64@4.27.4': - resolution: {integrity: sha512-NBI2/i2hT9Q+HySSHTBh52da7isru4aAAo6qC3I7QFVsuhxi2gM8t/EI9EVcILiHLj1vfi+VGGPaLOUENn7pmw==} - cpu: [arm64] - os: [freebsd] - - '@rollup/rollup-freebsd-x64@4.27.4': - resolution: {integrity: sha512-wYcC5ycW2zvqtDYrE7deary2P2UFmSh85PUpAx+dwTCO9uw3sgzD6Gv9n5X4vLaQKsrfTSZZ7Z7uynQozPVvWA==} - cpu: [x64] - os: [freebsd] - - '@rollup/rollup-linux-arm-gnueabihf@4.27.4': - resolution: {integrity: sha512-9OwUnK/xKw6DyRlgx8UizeqRFOfi9mf5TYCw1uolDaJSbUmBxP85DE6T4ouCMoN6pXw8ZoTeZCSEfSaYo+/s1w==} - cpu: [arm] - os: [linux] - - '@rollup/rollup-linux-arm-musleabihf@4.27.4': - resolution: {integrity: sha512-Vgdo4fpuphS9V24WOV+KwkCVJ72u7idTgQaBoLRD0UxBAWTF9GWurJO9YD9yh00BzbkhpeXtm6na+MvJU7Z73A==} - cpu: [arm] - os: [linux] - - '@rollup/rollup-linux-arm64-gnu@4.27.4': - resolution: {integrity: sha512-pleyNgyd1kkBkw2kOqlBx+0atfIIkkExOTiifoODo6qKDSpnc6WzUY5RhHdmTdIJXBdSnh6JknnYTtmQyobrVg==} - cpu: [arm64] - os: [linux] - - '@rollup/rollup-linux-arm64-musl@4.27.4': - resolution: {integrity: sha512-caluiUXvUuVyCHr5DxL8ohaaFFzPGmgmMvwmqAITMpV/Q+tPoaHZ/PWa3t8B2WyoRcIIuu1hkaW5KkeTDNSnMA==} - cpu: [arm64] - os: [linux] - - '@rollup/rollup-linux-powerpc64le-gnu@4.27.4': - resolution: {integrity: sha512-FScrpHrO60hARyHh7s1zHE97u0KlT/RECzCKAdmI+LEoC1eDh/RDji9JgFqyO+wPDb86Oa/sXkily1+oi4FzJQ==} - cpu: [ppc64] - os: [linux] - - '@rollup/rollup-linux-riscv64-gnu@4.27.4': - resolution: {integrity: sha512-qyyprhyGb7+RBfMPeww9FlHwKkCXdKHeGgSqmIXw9VSUtvyFZ6WZRtnxgbuz76FK7LyoN8t/eINRbPUcvXB5fw==} - cpu: [riscv64] - os: [linux] - - '@rollup/rollup-linux-s390x-gnu@4.27.4': - resolution: {integrity: sha512-PFz+y2kb6tbh7m3A7nA9++eInGcDVZUACulf/KzDtovvdTizHpZaJty7Gp0lFwSQcrnebHOqxF1MaKZd7psVRg==} - cpu: [s390x] - os: [linux] - - '@rollup/rollup-linux-x64-gnu@4.27.4': - resolution: {integrity: sha512-Ni8mMtfo+o/G7DVtweXXV/Ol2TFf63KYjTtoZ5f078AUgJTmaIJnj4JFU7TK/9SVWTaSJGxPi5zMDgK4w+Ez7Q==} - cpu: [x64] - os: [linux] - - '@rollup/rollup-linux-x64-musl@4.27.4': - resolution: {integrity: sha512-5AeeAF1PB9TUzD+3cROzFTnAJAcVUGLuR8ng0E0WXGkYhp6RD6L+6szYVX+64Rs0r72019KHZS1ka1q+zU/wUw==} - cpu: [x64] - os: [linux] - - '@rollup/rollup-win32-arm64-msvc@4.27.4': - resolution: {integrity: sha512-yOpVsA4K5qVwu2CaS3hHxluWIK5HQTjNV4tWjQXluMiiiu4pJj4BN98CvxohNCpcjMeTXk/ZMJBRbgRg8HBB6A==} - cpu: [arm64] - os: [win32] - - '@rollup/rollup-win32-ia32-msvc@4.27.4': - resolution: {integrity: sha512-KtwEJOaHAVJlxV92rNYiG9JQwQAdhBlrjNRp7P9L8Cb4Rer3in+0A+IPhJC9y68WAi9H0sX4AiG2NTsVlmqJeQ==} - cpu: [ia32] - os: [win32] - - '@rollup/rollup-win32-x64-msvc@4.27.4': - resolution: {integrity: sha512-3j4jx1TppORdTAoBJRd+/wJRGCPC0ETWkXOecJ6PPZLj6SptXkrXcNqdj0oclbKML6FkQltdz7bBA3rUSirZug==} - cpu: [x64] - os: [win32] - - '@scure/base@1.1.9': - resolution: {integrity: sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==} - - '@scure/bip32@1.5.0': - resolution: {integrity: sha512-8EnFYkqEQdnkuGBVpCzKxyIwDCBLDVj3oiX0EKUFre/tOjL/Hqba1D6n/8RcmaQy4f95qQFrO2A8Sr6ybh4NRw==} - - '@scure/bip39@1.4.0': - resolution: {integrity: sha512-BEEm6p8IueV/ZTfQLp/0vhw4NPnT9oWf5+28nvmeUICjP99f4vr2d+qc7AVGDDtwRep6ifR43Yed9ERVmiITzw==} - - '@types/estree@1.0.6': - resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} - - '@types/node@22.9.3': - resolution: {integrity: sha512-F3u1fs/fce3FFk+DAxbxc78DF8x0cY09RRL8GnXLmkJ1jvx3TtPdWoTT5/NiYfI5ASqXBmfqJi9dZ3gxMx4lzw==} - - abitype@1.0.6: - resolution: {integrity: sha512-MMSqYh4+C/aVqI2RQaWqbvI4Kxo5cQV40WQ4QFtDnNzCkqChm8MuENhElmynZlO0qUy/ObkEUaXtKqYnx1Kp3A==} - peerDependencies: - typescript: '>=5.0.4' - zod: ^3 >=3.22.0 - peerDependenciesMeta: - typescript: - optional: true - zod: - optional: true - - ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} - - ansi-regex@6.1.0: - resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} - engines: {node: '>=12'} - - ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} - - ansi-styles@6.2.1: - resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} - engines: {node: '>=12'} - - any-promise@1.3.0: - resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} - - balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - - base-x@4.0.0: - resolution: {integrity: sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw==} - - brace-expansion@2.0.1: - resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} - - bs58@5.0.0: - resolution: {integrity: sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ==} - - bundle-require@5.0.0: - resolution: {integrity: sha512-GuziW3fSSmopcx4KRymQEJVbZUfqlCqcq7dvs6TYwKRZiegK/2buMxQTPs6MGlNv50wms1699qYO54R8XfRX4w==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - peerDependencies: - esbuild: '>=0.18' - - cac@6.7.14: - resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} - engines: {node: '>=8'} - - chokidar@4.0.1: - resolution: {integrity: sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==} - engines: {node: '>= 14.16.0'} - - cliui@8.0.1: - resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} - engines: {node: '>=12'} - - color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} - - color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - - commander@4.1.1: - resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} - engines: {node: '>= 6'} - - consola@3.2.3: - resolution: {integrity: sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==} - engines: {node: ^14.18.0 || >=16.10.0} - - cross-spawn@7.0.6: - resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} - engines: {node: '>= 8'} - - debug@4.3.7: - resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - eastasianwidth@0.2.0: - resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - - emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - - emoji-regex@9.2.2: - resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - - esbuild@0.24.0: - resolution: {integrity: sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ==} - engines: {node: '>=18'} - hasBin: true - - escalade@3.2.0: - resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} - engines: {node: '>=6'} - - eventemitter3@5.0.1: - resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} - - fdir@6.4.2: - resolution: {integrity: sha512-KnhMXsKSPZlAhp7+IjUkRZKPb4fUyccpDrdFXbi4QL1qkmFh9kVY09Yox+n4MaOb3lHZ1Tv829C3oaaXoMYPDQ==} - peerDependencies: - picomatch: ^3 || ^4 - peerDependenciesMeta: - picomatch: - optional: true - - foreground-child@3.3.0: - resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} - engines: {node: '>=14'} - - fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - - get-caller-file@2.0.5: - resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} - engines: {node: 6.* || 8.* || >= 10.*} - - glob@10.4.5: - resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} - hasBin: true - - is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} - - isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - - isows@1.0.6: - resolution: {integrity: sha512-lPHCayd40oW98/I0uvgaHKWCSvkzY27LjWLbtzOm64yQ+G3Q5npjjbdppU65iZXkK1Zt+kH9pfegli0AYfwYYw==} - peerDependencies: - ws: '*' - - jackspeak@3.4.3: - resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} - - joycon@3.1.1: - resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} - engines: {node: '>=10'} - - lilconfig@3.1.2: - resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==} - engines: {node: '>=14'} - - lines-and-columns@1.2.4: - resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - - load-tsconfig@0.2.5: - resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - lodash.camelcase@4.3.0: - resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} - - lodash.sortby@4.7.0: - resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} - - long@5.2.3: - resolution: {integrity: sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==} - - lru-cache@10.4.3: - resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} - - minimatch@9.0.5: - resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} - engines: {node: '>=16 || 14 >=14.17'} - - minipass@7.1.2: - resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} - engines: {node: '>=16 || 14 >=14.17'} - - ms@2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - - mz@2.7.0: - resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} - - nanoid@3.3.7: - resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - - neverthrow@6.2.2: - resolution: {integrity: sha512-POR1FACqdK9jH0S2kRPzaZEvzT11wsOxLW520PQV/+vKi9dQe+hXq19EiOvYx7lSRaF5VB9lYGsPInynrnN05w==} - - object-assign@4.1.1: - resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} - engines: {node: '>=0.10.0'} - - ox@0.1.2: - resolution: {integrity: sha512-ak/8K0Rtphg9vnRJlbOdaX9R7cmxD2MiSthjWGaQdMk3D7hrAlDoM+6Lxn7hN52Za3vrXfZ7enfke/5WjolDww==} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - package-json-from-dist@1.0.1: - resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} - - path-key@3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} - - path-scurry@1.11.1: - resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} - engines: {node: '>=16 || 14 >=14.18'} - - picocolors@1.1.1: - resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} - - picomatch@4.0.2: - resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} - engines: {node: '>=12'} - - pirates@4.0.6: - resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} - engines: {node: '>= 6'} - - postcss-load-config@6.0.1: - resolution: {integrity: sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==} - engines: {node: '>= 18'} - peerDependencies: - jiti: '>=1.21.0' - postcss: '>=8.0.9' - tsx: ^4.8.1 - yaml: ^2.4.2 - peerDependenciesMeta: - jiti: - optional: true - postcss: - optional: true - tsx: - optional: true - yaml: - optional: true - - postcss@8.4.49: - resolution: {integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==} - engines: {node: ^10 || ^12 || >=14} - - protobufjs@7.4.0: - resolution: {integrity: sha512-mRUWCc3KUU4w1jU8sGxICXH/gNS94DvI1gxqDvBzhj1JpcsimQkYiOJfwsPUykUI5ZaspFbSgmBLER8IrQ3tqw==} - engines: {node: '>=12.0.0'} - - punycode@2.3.1: - resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} - engines: {node: '>=6'} - - readdirp@4.0.2: - resolution: {integrity: sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==} - engines: {node: '>= 14.16.0'} - - require-directory@2.1.1: - resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} - engines: {node: '>=0.10.0'} - - resolve-from@5.0.0: - resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} - engines: {node: '>=8'} - - rollup@4.27.4: - resolution: {integrity: sha512-RLKxqHEMjh/RGLsDxAEsaLO3mWgyoU6x9w6n1ikAzet4B3gI2/3yP6PWY2p9QzRTh6MfEIXB3MwsOY0Iv3vNrw==} - engines: {node: '>=18.0.0', npm: '>=8.0.0'} - hasBin: true - - shebang-command@2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} - - shebang-regex@3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} - - signal-exit@4.1.0: - resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} - engines: {node: '>=14'} - - source-map-js@1.2.1: - resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} - engines: {node: '>=0.10.0'} - - source-map@0.8.0-beta.0: - resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==} - engines: {node: '>= 8'} - - string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} - - string-width@5.1.2: - resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} - engines: {node: '>=12'} - - strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} - - strip-ansi@7.1.0: - resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} - engines: {node: '>=12'} - - sucrase@3.35.0: - resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} - engines: {node: '>=16 || 14 >=14.17'} - hasBin: true - - thenify-all@1.6.0: - resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} - engines: {node: '>=0.8'} - - thenify@3.3.1: - resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} - - tinyexec@0.3.1: - resolution: {integrity: sha512-WiCJLEECkO18gwqIp6+hJg0//p23HXp4S+gGtAKu3mI2F2/sXC4FvHvXvB0zJVVaTPhx1/tOwdbRsa1sOBIKqQ==} - - tinyglobby@0.2.10: - resolution: {integrity: sha512-Zc+8eJlFMvgatPZTl6A9L/yht8QqdmUNtURHaKZLmKBE12hNPSrqNkUp2cs3M/UKmNVVAMFQYSjYIVHDjW5zew==} - engines: {node: '>=12.0.0'} - - tr46@1.0.1: - resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} - - tree-kill@1.2.2: - resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} - hasBin: true - - ts-interface-checker@0.1.13: - resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} - - tsup@8.3.5: - resolution: {integrity: sha512-Tunf6r6m6tnZsG9GYWndg0z8dEV7fD733VBFzFJ5Vcm1FtlXB8xBD/rtrBi2a3YKEV7hHtxiZtW5EAVADoe1pA==} - engines: {node: '>=18'} - hasBin: true - peerDependencies: - '@microsoft/api-extractor': ^7.36.0 - '@swc/core': ^1 - postcss: ^8.4.12 - typescript: '>=4.5.0' - peerDependenciesMeta: - '@microsoft/api-extractor': - optional: true - '@swc/core': - optional: true - postcss: - optional: true - typescript: - optional: true - - undici-types@6.19.8: - resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} - - viem@2.21.49: - resolution: {integrity: sha512-NNItYfTv4+yGE5DDKc+S/g2S7KeJn047GwgEYG60FAJlK0FzwuP6lQKSeQ8k7Y4VasfuKPqiT+XiilcCtTRiDQ==} - peerDependencies: - typescript: '>=5.0.4' - peerDependenciesMeta: - typescript: - optional: true - - webauthn-p256@0.0.10: - resolution: {integrity: sha512-EeYD+gmIT80YkSIDb2iWq0lq2zbHo1CxHlQTeJ+KkCILWpVy3zASH3ByD4bopzfk0uCwXxLqKGLqp2W4O28VFA==} - - webidl-conversions@4.0.2: - resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} - - whatwg-url@7.1.0: - resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} - - which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true - - wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} - - wrap-ansi@8.1.0: - resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} - engines: {node: '>=12'} - - ws@8.18.0: - resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} - engines: {node: '>=10.0.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - y18n@5.0.8: - resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} - engines: {node: '>=10'} - - yaml@2.6.1: - resolution: {integrity: sha512-7r0XPzioN/Q9kXBro/XPnA6kznR73DHq+GXh5ON7ZozRO6aMjbmiBuKste2wslTFkC5d1dw0GooOCepZXJ2SAg==} - engines: {node: '>= 14'} - hasBin: true - - yargs-parser@21.1.1: - resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} - engines: {node: '>=12'} - - yargs@17.7.2: - resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} - engines: {node: '>=12'} - - zod@3.23.8: - resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==} - -snapshots: - - '@adraffy/ens-normalize@1.11.0': {} - - '@esbuild/aix-ppc64@0.24.0': - optional: true - - '@esbuild/android-arm64@0.24.0': - optional: true - - '@esbuild/android-arm@0.24.0': - optional: true - - '@esbuild/android-x64@0.24.0': - optional: true - - '@esbuild/darwin-arm64@0.24.0': - optional: true - - '@esbuild/darwin-x64@0.24.0': - optional: true - - '@esbuild/freebsd-arm64@0.24.0': - optional: true - - '@esbuild/freebsd-x64@0.24.0': - optional: true - - '@esbuild/linux-arm64@0.24.0': - optional: true - - '@esbuild/linux-arm@0.24.0': - optional: true - - '@esbuild/linux-ia32@0.24.0': - optional: true - - '@esbuild/linux-loong64@0.24.0': - optional: true - - '@esbuild/linux-mips64el@0.24.0': - optional: true - - '@esbuild/linux-ppc64@0.24.0': - optional: true - - '@esbuild/linux-riscv64@0.24.0': - optional: true - - '@esbuild/linux-s390x@0.24.0': - optional: true - - '@esbuild/linux-x64@0.24.0': - optional: true - - '@esbuild/netbsd-x64@0.24.0': - optional: true - - '@esbuild/openbsd-arm64@0.24.0': - optional: true - - '@esbuild/openbsd-x64@0.24.0': - optional: true - - '@esbuild/sunos-x64@0.24.0': - optional: true - - '@esbuild/win32-arm64@0.24.0': - optional: true - - '@esbuild/win32-ia32@0.24.0': - optional: true - - '@esbuild/win32-x64@0.24.0': - optional: true - - '@faker-js/faker@7.6.0': {} - - '@farcaster/core@0.15.6(zod@3.23.8)': - dependencies: - '@faker-js/faker': 7.6.0 - '@noble/curves': 1.7.0 - '@noble/hashes': 1.6.0 - bs58: 5.0.0 - neverthrow: 6.2.2 - viem: 2.21.49(zod@3.23.8) - transitivePeerDependencies: - - bufferutil - - typescript - - utf-8-validate - - zod - - '@farcaster/hub-nodejs@0.12.7(zod@3.23.8)': - dependencies: - '@farcaster/core': 0.15.6(zod@3.23.8) - '@grpc/grpc-js': 1.11.3 - '@noble/hashes': 1.6.0 - neverthrow: 6.2.2 - transitivePeerDependencies: - - bufferutil - - typescript - - utf-8-validate - - zod - - '@grpc/grpc-js@1.11.3': - dependencies: - '@grpc/proto-loader': 0.7.13 - '@js-sdsl/ordered-map': 4.4.2 - - '@grpc/proto-loader@0.7.13': - dependencies: - lodash.camelcase: 4.3.0 - long: 5.2.3 - protobufjs: 7.4.0 - yargs: 17.7.2 - - '@isaacs/cliui@8.0.2': - dependencies: - string-width: 5.1.2 - string-width-cjs: string-width@4.2.3 - strip-ansi: 7.1.0 - strip-ansi-cjs: strip-ansi@6.0.1 - wrap-ansi: 8.1.0 - wrap-ansi-cjs: wrap-ansi@7.0.0 - - '@jridgewell/gen-mapping@0.3.5': - dependencies: - '@jridgewell/set-array': 1.2.1 - '@jridgewell/sourcemap-codec': 1.5.0 - '@jridgewell/trace-mapping': 0.3.25 - - '@jridgewell/resolve-uri@3.1.2': {} - - '@jridgewell/set-array@1.2.1': {} - - '@jridgewell/sourcemap-codec@1.5.0': {} - - '@jridgewell/trace-mapping@0.3.25': - dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.0 - - '@js-sdsl/ordered-map@4.4.2': {} - - '@noble/curves@1.6.0': - dependencies: - '@noble/hashes': 1.5.0 - - '@noble/curves@1.7.0': - dependencies: - '@noble/hashes': 1.6.0 - - '@noble/hashes@1.5.0': {} - - '@noble/hashes@1.6.0': {} - - '@pkgjs/parseargs@0.11.0': - optional: true - - '@protobufjs/aspromise@1.1.2': {} - - '@protobufjs/base64@1.1.2': {} - - '@protobufjs/codegen@2.0.4': {} - - '@protobufjs/eventemitter@1.1.0': {} - - '@protobufjs/fetch@1.1.0': - dependencies: - '@protobufjs/aspromise': 1.1.2 - '@protobufjs/inquire': 1.1.0 - - '@protobufjs/float@1.0.2': {} - - '@protobufjs/inquire@1.1.0': {} - - '@protobufjs/path@1.1.2': {} - - '@protobufjs/pool@1.1.0': {} - - '@protobufjs/utf8@1.1.0': {} - - '@rollup/rollup-android-arm-eabi@4.27.4': - optional: true - - '@rollup/rollup-android-arm64@4.27.4': - optional: true - - '@rollup/rollup-darwin-arm64@4.27.4': - optional: true - - '@rollup/rollup-darwin-x64@4.27.4': - optional: true - - '@rollup/rollup-freebsd-arm64@4.27.4': - optional: true - - '@rollup/rollup-freebsd-x64@4.27.4': - optional: true - - '@rollup/rollup-linux-arm-gnueabihf@4.27.4': - optional: true - - '@rollup/rollup-linux-arm-musleabihf@4.27.4': - optional: true - - '@rollup/rollup-linux-arm64-gnu@4.27.4': - optional: true - - '@rollup/rollup-linux-arm64-musl@4.27.4': - optional: true - - '@rollup/rollup-linux-powerpc64le-gnu@4.27.4': - optional: true - - '@rollup/rollup-linux-riscv64-gnu@4.27.4': - optional: true - - '@rollup/rollup-linux-s390x-gnu@4.27.4': - optional: true - - '@rollup/rollup-linux-x64-gnu@4.27.4': - optional: true - - '@rollup/rollup-linux-x64-musl@4.27.4': - optional: true - - '@rollup/rollup-win32-arm64-msvc@4.27.4': - optional: true - - '@rollup/rollup-win32-ia32-msvc@4.27.4': - optional: true - - '@rollup/rollup-win32-x64-msvc@4.27.4': - optional: true - - '@scure/base@1.1.9': {} - - '@scure/bip32@1.5.0': - dependencies: - '@noble/curves': 1.6.0 - '@noble/hashes': 1.5.0 - '@scure/base': 1.1.9 - - '@scure/bip39@1.4.0': - dependencies: - '@noble/hashes': 1.5.0 - '@scure/base': 1.1.9 - - '@types/estree@1.0.6': {} - - '@types/node@22.9.3': - dependencies: - undici-types: 6.19.8 - - abitype@1.0.6(zod@3.23.8): - optionalDependencies: - zod: 3.23.8 - - ansi-regex@5.0.1: {} - - ansi-regex@6.1.0: {} - - ansi-styles@4.3.0: - dependencies: - color-convert: 2.0.1 - - ansi-styles@6.2.1: {} - - any-promise@1.3.0: {} - - balanced-match@1.0.2: {} - - base-x@4.0.0: {} - - brace-expansion@2.0.1: - dependencies: - balanced-match: 1.0.2 - - bs58@5.0.0: - dependencies: - base-x: 4.0.0 - - bundle-require@5.0.0(esbuild@0.24.0): - dependencies: - esbuild: 0.24.0 - load-tsconfig: 0.2.5 - - cac@6.7.14: {} - - chokidar@4.0.1: - dependencies: - readdirp: 4.0.2 - - cliui@8.0.1: - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 7.0.0 - - color-convert@2.0.1: - dependencies: - color-name: 1.1.4 - - color-name@1.1.4: {} - - commander@4.1.1: {} - - consola@3.2.3: {} - - cross-spawn@7.0.6: - dependencies: - path-key: 3.1.1 - shebang-command: 2.0.0 - which: 2.0.2 - - debug@4.3.7: - dependencies: - ms: 2.1.3 - - eastasianwidth@0.2.0: {} - - emoji-regex@8.0.0: {} - - emoji-regex@9.2.2: {} - - esbuild@0.24.0: - optionalDependencies: - '@esbuild/aix-ppc64': 0.24.0 - '@esbuild/android-arm': 0.24.0 - '@esbuild/android-arm64': 0.24.0 - '@esbuild/android-x64': 0.24.0 - '@esbuild/darwin-arm64': 0.24.0 - '@esbuild/darwin-x64': 0.24.0 - '@esbuild/freebsd-arm64': 0.24.0 - '@esbuild/freebsd-x64': 0.24.0 - '@esbuild/linux-arm': 0.24.0 - '@esbuild/linux-arm64': 0.24.0 - '@esbuild/linux-ia32': 0.24.0 - '@esbuild/linux-loong64': 0.24.0 - '@esbuild/linux-mips64el': 0.24.0 - '@esbuild/linux-ppc64': 0.24.0 - '@esbuild/linux-riscv64': 0.24.0 - '@esbuild/linux-s390x': 0.24.0 - '@esbuild/linux-x64': 0.24.0 - '@esbuild/netbsd-x64': 0.24.0 - '@esbuild/openbsd-arm64': 0.24.0 - '@esbuild/openbsd-x64': 0.24.0 - '@esbuild/sunos-x64': 0.24.0 - '@esbuild/win32-arm64': 0.24.0 - '@esbuild/win32-ia32': 0.24.0 - '@esbuild/win32-x64': 0.24.0 - - escalade@3.2.0: {} - - eventemitter3@5.0.1: {} - - fdir@6.4.2(picomatch@4.0.2): - optionalDependencies: - picomatch: 4.0.2 - - foreground-child@3.3.0: - dependencies: - cross-spawn: 7.0.6 - signal-exit: 4.1.0 - - fsevents@2.3.3: - optional: true - - get-caller-file@2.0.5: {} - - glob@10.4.5: - dependencies: - foreground-child: 3.3.0 - jackspeak: 3.4.3 - minimatch: 9.0.5 - minipass: 7.1.2 - package-json-from-dist: 1.0.1 - path-scurry: 1.11.1 - - is-fullwidth-code-point@3.0.0: {} - - isexe@2.0.0: {} - - isows@1.0.6(ws@8.18.0): - dependencies: - ws: 8.18.0 - - jackspeak@3.4.3: - dependencies: - '@isaacs/cliui': 8.0.2 - optionalDependencies: - '@pkgjs/parseargs': 0.11.0 - - joycon@3.1.1: {} - - lilconfig@3.1.2: {} - - lines-and-columns@1.2.4: {} - - load-tsconfig@0.2.5: {} - - lodash.camelcase@4.3.0: {} - - lodash.sortby@4.7.0: {} - - long@5.2.3: {} - - lru-cache@10.4.3: {} - - minimatch@9.0.5: - dependencies: - brace-expansion: 2.0.1 - - minipass@7.1.2: {} - - ms@2.1.3: {} - - mz@2.7.0: - dependencies: - any-promise: 1.3.0 - object-assign: 4.1.1 - thenify-all: 1.6.0 - - nanoid@3.3.7: - optional: true - - neverthrow@6.2.2: {} - - object-assign@4.1.1: {} - - ox@0.1.2(zod@3.23.8): - dependencies: - '@adraffy/ens-normalize': 1.11.0 - '@noble/curves': 1.6.0 - '@noble/hashes': 1.5.0 - '@scure/bip32': 1.5.0 - '@scure/bip39': 1.4.0 - abitype: 1.0.6(zod@3.23.8) - eventemitter3: 5.0.1 - transitivePeerDependencies: - - zod - - package-json-from-dist@1.0.1: {} - - path-key@3.1.1: {} - - path-scurry@1.11.1: - dependencies: - lru-cache: 10.4.3 - minipass: 7.1.2 - - picocolors@1.1.1: {} - - picomatch@4.0.2: {} - - pirates@4.0.6: {} - - postcss-load-config@6.0.1(postcss@8.4.49)(yaml@2.6.1): - dependencies: - lilconfig: 3.1.2 - optionalDependencies: - postcss: 8.4.49 - yaml: 2.6.1 - - postcss@8.4.49: - dependencies: - nanoid: 3.3.7 - picocolors: 1.1.1 - source-map-js: 1.2.1 - optional: true - - protobufjs@7.4.0: - dependencies: - '@protobufjs/aspromise': 1.1.2 - '@protobufjs/base64': 1.1.2 - '@protobufjs/codegen': 2.0.4 - '@protobufjs/eventemitter': 1.1.0 - '@protobufjs/fetch': 1.1.0 - '@protobufjs/float': 1.0.2 - '@protobufjs/inquire': 1.1.0 - '@protobufjs/path': 1.1.2 - '@protobufjs/pool': 1.1.0 - '@protobufjs/utf8': 1.1.0 - '@types/node': 22.9.3 - long: 5.2.3 - - punycode@2.3.1: {} - - readdirp@4.0.2: {} - - require-directory@2.1.1: {} - - resolve-from@5.0.0: {} - - rollup@4.27.4: - dependencies: - '@types/estree': 1.0.6 - optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.27.4 - '@rollup/rollup-android-arm64': 4.27.4 - '@rollup/rollup-darwin-arm64': 4.27.4 - '@rollup/rollup-darwin-x64': 4.27.4 - '@rollup/rollup-freebsd-arm64': 4.27.4 - '@rollup/rollup-freebsd-x64': 4.27.4 - '@rollup/rollup-linux-arm-gnueabihf': 4.27.4 - '@rollup/rollup-linux-arm-musleabihf': 4.27.4 - '@rollup/rollup-linux-arm64-gnu': 4.27.4 - '@rollup/rollup-linux-arm64-musl': 4.27.4 - '@rollup/rollup-linux-powerpc64le-gnu': 4.27.4 - '@rollup/rollup-linux-riscv64-gnu': 4.27.4 - '@rollup/rollup-linux-s390x-gnu': 4.27.4 - '@rollup/rollup-linux-x64-gnu': 4.27.4 - '@rollup/rollup-linux-x64-musl': 4.27.4 - '@rollup/rollup-win32-arm64-msvc': 4.27.4 - '@rollup/rollup-win32-ia32-msvc': 4.27.4 - '@rollup/rollup-win32-x64-msvc': 4.27.4 - fsevents: 2.3.3 - - shebang-command@2.0.0: - dependencies: - shebang-regex: 3.0.0 - - shebang-regex@3.0.0: {} - - signal-exit@4.1.0: {} - - source-map-js@1.2.1: - optional: true - - source-map@0.8.0-beta.0: - dependencies: - whatwg-url: 7.1.0 - - string-width@4.2.3: - dependencies: - emoji-regex: 8.0.0 - is-fullwidth-code-point: 3.0.0 - strip-ansi: 6.0.1 - - string-width@5.1.2: - dependencies: - eastasianwidth: 0.2.0 - emoji-regex: 9.2.2 - strip-ansi: 7.1.0 - - strip-ansi@6.0.1: - dependencies: - ansi-regex: 5.0.1 - - strip-ansi@7.1.0: - dependencies: - ansi-regex: 6.1.0 - - sucrase@3.35.0: - dependencies: - '@jridgewell/gen-mapping': 0.3.5 - commander: 4.1.1 - glob: 10.4.5 - lines-and-columns: 1.2.4 - mz: 2.7.0 - pirates: 4.0.6 - ts-interface-checker: 0.1.13 - - thenify-all@1.6.0: - dependencies: - thenify: 3.3.1 - - thenify@3.3.1: - dependencies: - any-promise: 1.3.0 - - tinyexec@0.3.1: {} - - tinyglobby@0.2.10: - dependencies: - fdir: 6.4.2(picomatch@4.0.2) - picomatch: 4.0.2 - - tr46@1.0.1: - dependencies: - punycode: 2.3.1 - - tree-kill@1.2.2: {} - - ts-interface-checker@0.1.13: {} - - tsup@8.3.5(postcss@8.4.49)(yaml@2.6.1): - dependencies: - bundle-require: 5.0.0(esbuild@0.24.0) - cac: 6.7.14 - chokidar: 4.0.1 - consola: 3.2.3 - debug: 4.3.7 - esbuild: 0.24.0 - joycon: 3.1.1 - picocolors: 1.1.1 - postcss-load-config: 6.0.1(postcss@8.4.49)(yaml@2.6.1) - resolve-from: 5.0.0 - rollup: 4.27.4 - source-map: 0.8.0-beta.0 - sucrase: 3.35.0 - tinyexec: 0.3.1 - tinyglobby: 0.2.10 - tree-kill: 1.2.2 - optionalDependencies: - postcss: 8.4.49 - transitivePeerDependencies: - - jiti - - supports-color - - tsx - - yaml - - undici-types@6.19.8: {} - - viem@2.21.49(zod@3.23.8): - dependencies: - '@noble/curves': 1.6.0 - '@noble/hashes': 1.5.0 - '@scure/bip32': 1.5.0 - '@scure/bip39': 1.4.0 - abitype: 1.0.6(zod@3.23.8) - isows: 1.0.6(ws@8.18.0) - ox: 0.1.2(zod@3.23.8) - webauthn-p256: 0.0.10 - ws: 8.18.0 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - zod - - webauthn-p256@0.0.10: - dependencies: - '@noble/curves': 1.6.0 - '@noble/hashes': 1.5.0 - - webidl-conversions@4.0.2: {} - - whatwg-url@7.1.0: - dependencies: - lodash.sortby: 4.7.0 - tr46: 1.0.1 - webidl-conversions: 4.0.2 - - which@2.0.2: - dependencies: - isexe: 2.0.0 - - wrap-ansi@7.0.0: - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - - wrap-ansi@8.1.0: - dependencies: - ansi-styles: 6.2.1 - string-width: 5.1.2 - strip-ansi: 7.1.0 - - ws@8.18.0: {} - - y18n@5.0.8: {} - - yaml@2.6.1: - optional: true - - yargs-parser@21.1.1: {} - - yargs@17.7.2: - dependencies: - cliui: 8.0.1 - escalade: 3.2.0 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - string-width: 4.2.3 - y18n: 5.0.8 - yargs-parser: 21.1.1 - - zod@3.23.8: - optional: true diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c880dba4445..34096989007 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -93,6 +93,9 @@ importers: 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) + zx: + specifier: ^8.2.4 + version: 8.2.4 agent: dependencies: @@ -295,7 +298,7 @@ importers: version: 3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.1(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.8)(eslint@9.16.0(jiti@2.4.0))(prop-types@15.8.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)(utf-8-validate@5.0.10) '@docusaurus/preset-classic': specifier: 3.6.3 - version: 3.6.3(@algolia/client-search@5.16.0)(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/react@18.3.12)(acorn@8.14.0)(bufferutil@4.0.8)(eslint@9.16.0(jiti@2.4.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)(typescript@5.6.3)(utf-8-validate@5.0.10) + version: 3.6.3(@algolia/client-search@5.17.0)(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/react@18.3.12)(acorn@8.14.0)(bufferutil@4.0.8)(eslint@9.16.0(jiti@2.4.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)(typescript@5.6.3)(utf-8-validate@5.0.10) '@docusaurus/theme-mermaid': specifier: 3.6.3 version: 3.6.3(@docusaurus/plugin-content-docs@3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.1(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.8)(eslint@9.16.0(jiti@2.4.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)(utf-8-validate@5.0.10))(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.1(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.8)(eslint@9.16.0(jiti@2.4.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)(utf-8-validate@5.0.10) @@ -659,7 +662,7 @@ importers: version: 10.0.0 ai: specifier: 3.4.33 - version: 3.4.33(openai@4.73.0(encoding@0.1.13)(zod@3.23.8))(react@18.3.1)(sswr@2.1.0(svelte@5.10.0))(svelte@5.10.0)(vue@3.5.13(typescript@5.6.3))(zod@3.23.8) + version: 3.4.33(openai@4.73.0(encoding@0.1.13)(zod@3.23.8))(react@18.3.1)(sswr@2.1.0(svelte@5.11.0))(svelte@5.11.0)(vue@3.5.13(typescript@5.6.3))(zod@3.23.8) anthropic-vertex-ai: specifier: 1.0.2 version: 1.0.2(encoding@0.1.13)(zod@3.23.8) @@ -683,7 +686,7 @@ importers: version: 1.0.15 langchain: specifier: 0.3.6 - version: 0.3.6(@langchain/core@0.3.22(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)) + version: 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)) ollama-ai-provider: specifier: 0.16.1 version: 0.16.1(zod@3.23.8) @@ -913,18 +916,6 @@ importers: specifier: 0.7.1 version: 0.7.1(bufferutil@4.0.8)(typescript@5.6.3)(utf-8-validate@5.0.10) - packages/plugin-dominos: - dependencies: - '@ai16z/eliza': - specifier: workspace:* - version: link:../core - 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) - whatwg-url: - specifier: 7.1.0 - version: 7.1.0 - packages/plugin-evm: dependencies: '@ai16z/eliza': @@ -1099,10 +1090,10 @@ importers: version: link:../core '@aws-sdk/client-s3': specifier: ^3.705.0 - version: 3.705.0 + version: 3.709.0 '@aws-sdk/s3-request-presigner': specifier: ^3.705.0 - version: 3.705.0 + version: 3.709.0 '@cliqz/adblocker-playwright': specifier: 1.34.0 version: 1.34.0(playwright@1.48.2) @@ -1328,7 +1319,7 @@ importers: version: link:../plugin-trustdb '@avnu/avnu-sdk': specifier: 2.1.1 - version: 2.1.1(ethers@6.13.4(bufferutil@4.0.8)(utf-8-validate@5.0.10))(qs@6.13.1)(starknet@6.18.0(encoding@0.1.13)) + version: 2.1.1(ethers@6.13.4(bufferutil@4.0.8)(utf-8-validate@5.0.10))(qs@6.13.0)(starknet@6.18.0(encoding@0.1.13)) '@uniswap/sdk-core': specifier: 6.0.0 version: 6.0.0 @@ -1631,8 +1622,8 @@ packages: '@algolia/cache-in-memory@4.24.0': resolution: {integrity: sha512-gDrt2so19jW26jY3/MkFg5mEypFIPbPoXsQGQWAi6TrCPsNOSEYepBMPlucqWigsmEy/prp5ug2jy/N3PVG/8w==} - '@algolia/client-abtesting@5.16.0': - resolution: {integrity: sha512-fqQ2Szc6zxqXyQF8Vr64QMVoqFHHDsR5gEr/Eki+q+lgERvGr3YXruiB7Xs8rDTXP6+NC3tM2sZjdaEXW/P+6Q==} + '@algolia/client-abtesting@5.17.0': + resolution: {integrity: sha512-6+7hPdOEPfJqjWNYPRaVcttLLAtVqQyp1U7xBA1e1uSya1ivIr9FtS/GBr31mfvwk2N2yxV4W7itxuBtST8SWg==} engines: {node: '>= 14.0.0'} '@algolia/client-account@4.24.0': @@ -1641,44 +1632,44 @@ packages: '@algolia/client-analytics@4.24.0': resolution: {integrity: sha512-y8jOZt1OjwWU4N2qr8G4AxXAzaa8DBvyHTWlHzX/7Me1LX8OayfgHexqrsL4vSBcoMmVw2XnVW9MhL+Y2ZDJXg==} - '@algolia/client-analytics@5.16.0': - resolution: {integrity: sha512-8HqIoGUwjc/XqjA+AjpRvtB40QzQ067qHuJujkR0k6WBLEM3OiB30FOfLZLabxnPIZgU55zmQ8exe+0WpgyKqA==} + '@algolia/client-analytics@5.17.0': + resolution: {integrity: sha512-nhJ+elL8h0Fts3xD9261zE2NvTs7nPMe9/SfAgMnWnbvxmuhJn7ZymnBsfm2VkTDb4Dy810ZAdBfzYEk7PjlAw==} engines: {node: '>= 14.0.0'} '@algolia/client-common@4.24.0': resolution: {integrity: sha512-bc2ROsNL6w6rqpl5jj/UywlIYC21TwSSoFHKl01lYirGMW+9Eek6r02Tocg4gZ8HAw3iBvu6XQiM3BEbmEMoiA==} - '@algolia/client-common@5.16.0': - resolution: {integrity: sha512-4Bzvs5cdZ2MTMQvDlsmruZfyEk/NhSdsc+tA3vH9iMGIRzOj7Y9mwITpJM+hLFhbSE9Q0p0ojTF03RoDVclsZA==} + '@algolia/client-common@5.17.0': + resolution: {integrity: sha512-9eC8i41/4xcQ/wI6fVM4LwC/ZGcDl3mToqjM0wTZzePWhXgRrdzOzqy/XgP+L1yYCDfkMFBZZsruNL5U8aEOag==} engines: {node: '>= 14.0.0'} - '@algolia/client-insights@5.16.0': - resolution: {integrity: sha512-vIiOK8+exA0AOlR9mRDUr148Rx3WNU73whaJtciYoqeHoy/utib+m3Lw1+6s0o7OuPb/wGRoJ1l5vQuVezVHgA==} + '@algolia/client-insights@5.17.0': + resolution: {integrity: sha512-JL/vWNPUIuScsJubyC4aPHkpMftlK2qGqMiR2gy0rGvrh8v0w+ec6Ebq+efoFgE8wO55HJPTxiKeerE1DaQgvA==} engines: {node: '>= 14.0.0'} '@algolia/client-personalization@4.24.0': resolution: {integrity: sha512-l5FRFm/yngztweU0HdUzz1rC4yoWCFo3IF+dVIVTfEPg906eZg5BOd1k0K6rZx5JzyyoP4LdmOikfkfGsKVE9w==} - '@algolia/client-personalization@5.16.0': - resolution: {integrity: sha512-psAzXJgzqPMCID31wrWVRg19K+h5TsLKSv6YfzQhB5munnj4IAE2lxEet2hDkji7vPA0WWpXGAW5Tx0scyMvkA==} + '@algolia/client-personalization@5.17.0': + resolution: {integrity: sha512-PkMUfww8QiRpyLkW4kzmc7IJDcW90sfUpnTgUOVlug5zEE2iv1ruHrJxdcNRTXkA0fgVpHu3oxXmCQL/ie2p7A==} engines: {node: '>= 14.0.0'} - '@algolia/client-query-suggestions@5.16.0': - resolution: {integrity: sha512-ygek1jdrAbw/tUIyHkK4YrH3uQoRmBbSUvZl8NBbz0S0GxjR6bhPbDZT8ny1INIMCA3KlYHPZAlCS+02RtvDyg==} + '@algolia/client-query-suggestions@5.17.0': + resolution: {integrity: sha512-bokfgPN2whetLuiX9NB6C6d7Eke+dvHuASOPiB+jdI8Z6hacLHkcJjYeZY4Mppj0/oJ1KlyNivj+8WNpZeGhYA==} engines: {node: '>= 14.0.0'} '@algolia/client-search@4.24.0': resolution: {integrity: sha512-uRW6EpNapmLAD0mW47OXqTP8eiIx5F6qN9/x/7HHO6owL3N1IXqydGwW5nhDFBrV+ldouro2W1VX3XlcUXEFCA==} - '@algolia/client-search@5.16.0': - resolution: {integrity: sha512-mVnkDZjpbiqdXRz0NrQlx6+QsnKYENuruYyjTJNcG3qAe015tvGAHcvvzRT78ZxETS7WjruWSlXBcL5llycNsQ==} + '@algolia/client-search@5.17.0': + resolution: {integrity: sha512-alY3U79fiEvlR/0optgt1LZp9MfthXFnuEA4GYS81svozDOF61gdvxgBjt6SYtmskmTQQZDWVgakvUvvHrDzMw==} engines: {node: '>= 14.0.0'} '@algolia/events@4.0.1': resolution: {integrity: sha512-FQzvOCgoFXAbf5Y6mYozw2aj5KCJoA3m4heImceldzPSMbdyS4atVjJzXKMsfX3wnZTFYwkkt8/z8UesLHlSBQ==} - '@algolia/ingestion@1.16.0': - resolution: {integrity: sha512-nmLcQYeG1YYRDAv2U+ebBD23mBSfkmhSwdDx2DBzqupStNrYWqYHsNgATLTMtMUTfgD0nSgBl5c+03yXg5WpiQ==} + '@algolia/ingestion@1.17.0': + resolution: {integrity: sha512-9+mO+FbIpWz6izh1lXzON9BcenBKx4K3qVjSWiFFmL8nv+7b7zpGq++LXWr/Lxv/bZ9+D71Go6QVL6AZQhFOmg==} engines: {node: '>= 14.0.0'} '@algolia/logger-common@4.24.0': @@ -1687,36 +1678,36 @@ packages: '@algolia/logger-console@4.24.0': resolution: {integrity: sha512-X4C8IoHgHfiUROfoRCV+lzSy+LHMgkoEEU1BbKcsfnV0i0S20zyy0NLww9dwVHUWNfPPxdMU+/wKmLGYf96yTg==} - '@algolia/monitoring@1.16.0': - resolution: {integrity: sha512-tiDkoQOO/d4o8W6dEnpCIMCWp6mwdjqZ+Q51QiCKvz1vcYU/YEx4lleY9oadjAMoOVWZHL6ItEF1LbQHvVNogQ==} + '@algolia/monitoring@1.17.0': + resolution: {integrity: sha512-Db7Qh51zVchmHa8d9nQFzTz2Ta6H2D4dpCnPj1giC/LE6UG/6e3iOnRxUzV+9ZR7etHKIrri2hbnkyNrvbqA9A==} engines: {node: '>= 14.0.0'} '@algolia/recommend@4.24.0': resolution: {integrity: sha512-P9kcgerfVBpfYHDfVZDvvdJv0lEoCvzNlOy2nykyt5bK8TyieYyiD0lguIJdRZZYGre03WIAFf14pgE+V+IBlw==} - '@algolia/recommend@5.16.0': - resolution: {integrity: sha512-hehiMLsDnXnnZGXXKdeXUsvP3PwqAKL/rT4XutkYXsqQ1Jnv4EFrMOY8morUT8nlPv7d1bHPF+bTiNaKvkbBbA==} + '@algolia/recommend@5.17.0': + resolution: {integrity: sha512-7vM4+mfuLYbslj8+RNsP/ISwY7izu5HcQqQhA0l+q3EZRHF+PBeRaJXc3S1N0fTRxj8ystvwXWZPmjssB/xMLw==} engines: {node: '>= 14.0.0'} '@algolia/requester-browser-xhr@4.24.0': resolution: {integrity: sha512-Z2NxZMb6+nVXSjF13YpjYTdvV3032YTBSGm2vnYvYPA6mMxzM3v5rsCiSspndn9rzIW4Qp1lPHBvuoKJV6jnAA==} - '@algolia/requester-browser-xhr@5.16.0': - resolution: {integrity: sha512-s/ty3lN0Bk9EC6VId/JO+AMOy6s0Hb3IpXUIa4iKKrH7p3n+lTEtwltVjFVW0fq9JfvQdECoaM951K23G/nRtQ==} + '@algolia/requester-browser-xhr@5.17.0': + resolution: {integrity: sha512-bXSiPL2R08s4e9qvNZsJA0bXZeyWH2A5D4shS8kRT22b8GgjtnGTuoZmi6MxtKOEaN0lpHPbjvjXAO7UIOhDog==} engines: {node: '>= 14.0.0'} '@algolia/requester-common@4.24.0': resolution: {integrity: sha512-k3CXJ2OVnvgE3HMwcojpvY6d9kgKMPRxs/kVohrwF5WMr2fnqojnycZkxPoEg+bXm8fi5BBfFmOqgYztRtHsQA==} - '@algolia/requester-fetch@5.16.0': - resolution: {integrity: sha512-E8euSKDkljYpv5QHOZQrBCMZ4W98PKHRp5Cx8JxMYyyPWQ0xkD9b1c5yvOtJJ1lufqDvcuxvrF4eRBwW+BP3QA==} + '@algolia/requester-fetch@5.17.0': + resolution: {integrity: sha512-mjJ6Xv7TlDDoZ6RLKrEzH1ved3g2GAq3YJjb94bA639INfxK1HM8A/wCAFSZ8ye+QM/jppwauDXe1PENkuareQ==} engines: {node: '>= 14.0.0'} '@algolia/requester-node-http@4.24.0': resolution: {integrity: sha512-JF18yTjNOVYvU/L3UosRcvbPMGT9B+/GQWNWnenIImglzNVGpyzChkXLnrSf6uxwVNO6ESGu6oN8MqcGQcjQJw==} - '@algolia/requester-node-http@5.16.0': - resolution: {integrity: sha512-gzLIQlgvvXzGExBC8xFVtsiDbenGgANQ+p/lcPO5ERs1ZNGXIqLnyqwP8amZl6YwXJEt4PPXL/p4IytBWs0jUw==} + '@algolia/requester-node-http@5.17.0': + resolution: {integrity: sha512-Z2BXTR7BctlGPNig21k2wf/5nlH+96lU2UElzXTKiptyn2iM8lDU8zdO+dRll0AxQUxUGWEnkBysst9xL3S2cg==} engines: {node: '>= 14.0.0'} '@algolia/transporter@4.24.0': @@ -1803,171 +1794,171 @@ packages: '@aws-crypto/util@5.2.0': resolution: {integrity: sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==} - '@aws-sdk/client-polly@3.699.0': - resolution: {integrity: sha512-qQzFojyGEE8HmlotxClXSOhPuGluAQp+K7PtkuGNGZk91C6BF6TQAzIBqCnHMTbUGyJUqkt3Rp3A/Hj29fG4fg==} + '@aws-sdk/client-polly@3.709.0': + resolution: {integrity: sha512-3pW0qqABd26t2wzzFcSxj26KszAK8F+FYmYmc5gnm+CNXbothXKRFh6g+7AejIIIcuK/79W/ui+IWHH6WtCzFw==} engines: {node: '>=16.0.0'} - '@aws-sdk/client-s3@3.705.0': - resolution: {integrity: sha512-Fm0Cbc4zr0yG0DnNycz7ywlL5tQFdLSb7xCIPfzrxJb3YQiTXWxH5eu61SSsP/Z6RBNRolmRPvst/iNgX0fWvA==} + '@aws-sdk/client-s3@3.709.0': + resolution: {integrity: sha512-IvC7coELoQ4YenTdULArVdL5yk6jNRVUALX1aqv9JlPdrXxb3Om6YrM9e7AlSTLxrULTsAe1ubm8i/DmcSY/Ng==} engines: {node: '>=16.0.0'} - '@aws-sdk/client-sso-oidc@3.699.0': - resolution: {integrity: sha512-u8a1GorY5D1l+4FQAf4XBUC1T10/t7neuwT21r0ymrtMFSK2a9QqVHKMoLkvavAwyhJnARSBM9/UQC797PFOFw==} + '@aws-sdk/client-sso-oidc@3.709.0': + resolution: {integrity: sha512-1w6egz17QQy661lNCRmZZlqIANEbD6g2VFAQIJbVwSiu7brg+GUns+mT1eLLLHAMQc1sL0Ds8/ybSK2SrgGgIA==} engines: {node: '>=16.0.0'} peerDependencies: - '@aws-sdk/client-sts': ^3.699.0 + '@aws-sdk/client-sts': ^3.709.0 - '@aws-sdk/client-sso@3.696.0': - resolution: {integrity: sha512-q5TTkd08JS0DOkHfUL853tuArf7NrPeqoS5UOvqJho8ibV9Ak/a/HO4kNvy9Nj3cib/toHYHsQIEtecUPSUUrQ==} + '@aws-sdk/client-sso@3.709.0': + resolution: {integrity: sha512-Qxeo8cN0jNy6Wnbqq4wucffAGJM6sJjofoTgNtPA6cC7sPYx7aYC6OAAAo6NaMRY+WywOKdS9Wgjx2QYRxKx7w==} engines: {node: '>=16.0.0'} - '@aws-sdk/client-sts@3.699.0': - resolution: {integrity: sha512-++lsn4x2YXsZPIzFVwv3fSUVM55ZT0WRFmPeNilYIhZClxHLmVAWKH4I55cY9ry60/aTKYjzOXkWwyBKGsGvQg==} + '@aws-sdk/client-sts@3.709.0': + resolution: {integrity: sha512-cBAvlPg6yslXNL385UUGFPw+XY+lA9BzioNdIFkMo3fEUlTShogTtiWz4LsyLHoN6LhKojssP9DSmmWKWjCZIw==} engines: {node: '>=16.0.0'} - '@aws-sdk/client-transcribe-streaming@3.699.0': - resolution: {integrity: sha512-yYmUMsFRkuuorNk275Ps1qGSP91AF5/G0m/ZLJw9sAd75sT8yCm4ChOQI19A35o3r0jWzGtGHV3bUEW6BcdlFg==} + '@aws-sdk/client-transcribe-streaming@3.709.0': + resolution: {integrity: sha512-LeL8e7+3EQz3awPW/3e7Aq+ypcguNci0zleOrXXDCtfzLy0qsIxzsrHGXxucA+p9v4XiwUmwNHtKjbztxkhfrg==} engines: {node: '>=16.0.0'} - '@aws-sdk/core@3.696.0': - resolution: {integrity: sha512-3c9III1k03DgvRZWg8vhVmfIXPG6hAciN9MzQTzqGngzWAELZF/WONRTRQuDFixVtarQatmLHYVw/atGeA2Byw==} + '@aws-sdk/core@3.709.0': + resolution: {integrity: sha512-7kuSpzdOTAE026j85wq/fN9UDZ70n0OHw81vFqMWwlEFtm5IQ/MRCLKcC4HkXxTdfy1PqFlmoXxWqeBa15tujw==} engines: {node: '>=16.0.0'} - '@aws-sdk/credential-provider-env@3.696.0': - resolution: {integrity: sha512-T9iMFnJL7YTlESLpVFT3fg1Lkb1lD+oiaIC8KMpepb01gDUBIpj9+Y+pA/cgRWW0yRxmkDXNazAE2qQTVFGJzA==} + '@aws-sdk/credential-provider-env@3.709.0': + resolution: {integrity: sha512-ZMAp9LSikvHDFVa84dKpQmow6wsg956Um20cKuioPpX2GGreJFur7oduD+tRJT6FtIOHn+64YH+0MwiXLhsaIQ==} engines: {node: '>=16.0.0'} - '@aws-sdk/credential-provider-http@3.696.0': - resolution: {integrity: sha512-GV6EbvPi2eq1+WgY/o2RFA3P7HGmnkIzCNmhwtALFlqMroLYWKE7PSeHw66Uh1dFQeVESn0/+hiUNhu1mB0emA==} + '@aws-sdk/credential-provider-http@3.709.0': + resolution: {integrity: sha512-lIS7XLwCOyJnLD70f+VIRr8DNV1HPQe9oN6aguYrhoczqz7vDiVZLe3lh714cJqq9rdxzFypK5DqKHmcscMEPQ==} engines: {node: '>=16.0.0'} - '@aws-sdk/credential-provider-ini@3.699.0': - resolution: {integrity: sha512-dXmCqjJnKmG37Q+nLjPVu22mNkrGHY8hYoOt3Jo9R2zr5MYV7s/NHsCHr+7E+BZ+tfZYLRPeB1wkpTeHiEcdRw==} + '@aws-sdk/credential-provider-ini@3.709.0': + resolution: {integrity: sha512-qCF8IIGcPoUp+Ib3ANhbF5gElxFd+kIrtv2/1tKdvhudMANstQbMiWV0LTH47ZZR6c3as4iSrm09NZnpEoD/pA==} engines: {node: '>=16.0.0'} peerDependencies: - '@aws-sdk/client-sts': ^3.699.0 + '@aws-sdk/client-sts': ^3.709.0 - '@aws-sdk/credential-provider-node@3.699.0': - resolution: {integrity: sha512-MmEmNDo1bBtTgRmdNfdQksXu4uXe66s0p1hi1YPrn1h59Q605eq/xiWbGL6/3KdkViH6eGUuABeV2ODld86ylg==} + '@aws-sdk/credential-provider-node@3.709.0': + resolution: {integrity: sha512-4HRX9KYWPSjO5O/Vg03YAsebKpvTjTvpK1n7zHYBmlLMBLxUrVsL1nNKKC5p2/7OW3RL8XR1ki3QkoV7kGRxUQ==} engines: {node: '>=16.0.0'} - '@aws-sdk/credential-provider-process@3.696.0': - resolution: {integrity: sha512-mL1RcFDe9sfmyU5K1nuFkO8UiJXXxLX4JO1gVaDIOvPqwStpUAwi3A1BoeZhWZZNQsiKI810RnYGo0E0WB/hUA==} + '@aws-sdk/credential-provider-process@3.709.0': + resolution: {integrity: sha512-IAC+jPlGQII6jhIylHOwh3RgSobqlgL59nw2qYTURr8hMCI0Z1p5y2ee646HTVt4WeCYyzUAXfxr6YI/Vitv+Q==} engines: {node: '>=16.0.0'} - '@aws-sdk/credential-provider-sso@3.699.0': - resolution: {integrity: sha512-Ekp2cZG4pl9D8+uKWm4qO1xcm8/MeiI8f+dnlZm8aQzizeC+aXYy9GyoclSf6daK8KfRPiRfM7ZHBBL5dAfdMA==} + '@aws-sdk/credential-provider-sso@3.709.0': + resolution: {integrity: sha512-rYdTDOxazS2GdGScelsRK5CAkktRLCCdRjlwXaxrcW57j749hEqxcF5uTv9RD6WBwInfedcSywErNZB+hylQlg==} engines: {node: '>=16.0.0'} - '@aws-sdk/credential-provider-web-identity@3.696.0': - resolution: {integrity: sha512-XJ/CVlWChM0VCoc259vWguFUjJDn/QwDqHwbx+K9cg3v6yrqXfK5ai+p/6lx0nQpnk4JzPVeYYxWRpaTsGC9rg==} + '@aws-sdk/credential-provider-web-identity@3.709.0': + resolution: {integrity: sha512-2lbDfE0IQ6gma/7BB2JpkjW5G0wGe4AS0x80oybYAYYviJmUtIR3Cn2pXun6bnAWElt4wYKl4su7oC36rs5rNA==} engines: {node: '>=16.0.0'} peerDependencies: - '@aws-sdk/client-sts': ^3.696.0 + '@aws-sdk/client-sts': ^3.709.0 - '@aws-sdk/eventstream-handler-node@3.696.0': - resolution: {integrity: sha512-wK5o8Ziucz6s5jWIG6weHLsSE9qIAfeepoAdiuEvoJLhxNCJUkxF25NNidzhqxRfGDUzJIa+itSdD8vdP60qyA==} + '@aws-sdk/eventstream-handler-node@3.709.0': + resolution: {integrity: sha512-/UsV2H/MofSJa8GlY88o1ptMLfCNUxiovYBlYefkaCF6yA3+91rJ78kQfsL9bCXEBP1J0lUJWZBNWQI+fqC76w==} engines: {node: '>=16.0.0'} - '@aws-sdk/middleware-bucket-endpoint@3.696.0': - resolution: {integrity: sha512-V07jishKHUS5heRNGFpCWCSTjRJyQLynS/ncUeE8ZYtG66StOOQWftTwDfFOSoXlIqrXgb4oT9atryzXq7Z4LQ==} + '@aws-sdk/middleware-bucket-endpoint@3.709.0': + resolution: {integrity: sha512-03+tJOd7KIZOiqWH7Z8BOfQIWkKJgjcpKOJKZ6FR2KjWGUOE1G+bo11wF4UuHQ0RmpKnApt+pQghZmSnE7WEeg==} engines: {node: '>=16.0.0'} - '@aws-sdk/middleware-eventstream@3.696.0': - resolution: {integrity: sha512-ZbyKX1L+moB7Gid8332XaxA6uA2aMz9V5mmdEeOYRDEPXxf6VZYAOFZ6koSqThDuekxOuXunXw90BwiXz9/DEg==} + '@aws-sdk/middleware-eventstream@3.709.0': + resolution: {integrity: sha512-TSggXRaC8fd35AK8pAH6CTG800U9mKn3gGtMOn/6RzBbcx35KJ7xqR8MrOyIwGFSuRj+BggCdJRfUtcFWcaIhg==} engines: {node: '>=16.0.0'} - '@aws-sdk/middleware-expect-continue@3.696.0': - resolution: {integrity: sha512-vpVukqY3U2pb+ULeX0shs6L0aadNep6kKzjme/MyulPjtUDJpD3AekHsXRrCCGLmOqSKqRgQn5zhV9pQhHsb6Q==} + '@aws-sdk/middleware-expect-continue@3.709.0': + resolution: {integrity: sha512-Tbl/DFvE4rHl8lMb9IzetwK4tf5R3VeHZkvEXQalsWoK0tbEQ8kXWi7wAYO4qbE7bFVvaxKX+irjJjTxf3BrCQ==} engines: {node: '>=16.0.0'} - '@aws-sdk/middleware-flexible-checksums@3.701.0': - resolution: {integrity: sha512-adNaPCyTT+CiVM0ufDiO1Fe7nlRmJdI9Hcgj0M9S6zR7Dw70Ra5z8Lslkd7syAccYvZaqxLklGjPQH/7GNxwTA==} + '@aws-sdk/middleware-flexible-checksums@3.709.0': + resolution: {integrity: sha512-wbYm9tkyCaqMeU82yjaXw7V5BxCSlSLNupENW63LC7Fvyo/aQzj6LjSMHcBpR2QwjBEhXCtF47L7aQ8SPTNhdw==} engines: {node: '>=16.0.0'} - '@aws-sdk/middleware-host-header@3.696.0': - resolution: {integrity: sha512-zELJp9Ta2zkX7ELggMN9qMCgekqZhFC5V2rOr4hJDEb/Tte7gpfKSObAnw/3AYiVqt36sjHKfdkoTsuwGdEoDg==} + '@aws-sdk/middleware-host-header@3.709.0': + resolution: {integrity: sha512-8gQYCYAaIw4lOCd5WYdf15Y/61MgRsAnrb2eiTl+icMlUOOzl8aOl5iDwm/Idp0oHZTflwxM4XSvGXO83PRWcw==} engines: {node: '>=16.0.0'} - '@aws-sdk/middleware-location-constraint@3.696.0': - resolution: {integrity: sha512-FgH12OB0q+DtTrP2aiDBddDKwL4BPOrm7w3VV9BJrSdkqQCNBPz8S1lb0y5eVH4tBG+2j7gKPlOv1wde4jF/iw==} + '@aws-sdk/middleware-location-constraint@3.709.0': + resolution: {integrity: sha512-5YQWPXfZq7OE0jB2G0PP8K10GBod/YPJXb+1CfJS6FbQaglRoIm8KZmVEvJNnptSKyGtE62veeCcCQcfAUfFig==} engines: {node: '>=16.0.0'} - '@aws-sdk/middleware-logger@3.696.0': - resolution: {integrity: sha512-KhkHt+8AjCxcR/5Zp3++YPJPpFQzxpr+jmONiT/Jw2yqnSngZ0Yspm5wGoRx2hS1HJbyZNuaOWEGuJoxLeBKfA==} + '@aws-sdk/middleware-logger@3.709.0': + resolution: {integrity: sha512-jDoGSccXv9zebnpUoisjWd5u5ZPIalrmm6TjvPzZ8UqzQt3Beiz0tnQwmxQD6KRc7ADweWP5Ntiqzbw9xpVajg==} engines: {node: '>=16.0.0'} - '@aws-sdk/middleware-recursion-detection@3.696.0': - resolution: {integrity: sha512-si/maV3Z0hH7qa99f9ru2xpS5HlfSVcasRlNUXKSDm611i7jFMWwGNLUOXFAOLhXotPX5G3Z6BLwL34oDeBMug==} + '@aws-sdk/middleware-recursion-detection@3.709.0': + resolution: {integrity: sha512-PObL/wLr4lkfbQ0yXUWaoCWu/jcwfwZzCjsUiXW/H6hW9b/00enZxmx7OhtJYaR6xmh/Lcx5wbhIoDCbzdv0tw==} engines: {node: '>=16.0.0'} - '@aws-sdk/middleware-sdk-s3@3.696.0': - resolution: {integrity: sha512-M7fEiAiN7DBMHflzOFzh1I2MNSlLpbiH2ubs87bdRc2wZsDPSbs4l3v6h3WLhxoQK0bq6vcfroudrLBgvCuX3Q==} + '@aws-sdk/middleware-sdk-s3@3.709.0': + resolution: {integrity: sha512-FwtOG9t9xsLoLOQZ6qAdsWOjx9dsO6t28IjIDV1l6Ixiu2oC0Yks7goONjJUH0IDE4pDDDGzmuq0sn1XtHhheA==} engines: {node: '>=16.0.0'} - '@aws-sdk/middleware-sdk-transcribe-streaming@3.696.0': - resolution: {integrity: sha512-WToGtHGaRWIQFkjqPaXShokTH1LZMFjoSX0CPT1I9OZhyy95FYyibJbnQLiSGY9zQN45jcUA8PtQZwbR/EfuTw==} + '@aws-sdk/middleware-sdk-transcribe-streaming@3.709.0': + resolution: {integrity: sha512-WR+QZ7vHZLhFWm2RUPDCy1X3FvDFydWfeR0sRDKXPlV8nUtbZk5cTNPNhghE8MlJVaSkFwC/J2cr30th7FOHAQ==} engines: {node: '>=16.0.0'} - '@aws-sdk/middleware-signing@3.696.0': - resolution: {integrity: sha512-7ooWYsX+QgFEphNxOZrkZlWFLoDyLQgayf/JvFZ6qnO550K6H9Z2w7vEySoChRDoLjYs6omEHW6A8YLIK3r8rw==} + '@aws-sdk/middleware-signing@3.709.0': + resolution: {integrity: sha512-v9gxV9xKkQBRVh3ERA5ktvqAfh9FZilA3BkuTXLesIYBQqhhjilm3A/pRoHPsLqSCgsGzM6Swa3Q7VsqaqsLUQ==} engines: {node: '>=16.0.0'} - '@aws-sdk/middleware-ssec@3.696.0': - resolution: {integrity: sha512-w/d6O7AOZ7Pg3w2d3BxnX5RmGNWb5X4RNxF19rJqcgu/xqxxE/QwZTNd5a7eTsqLXAUIfbbR8hh0czVfC1pJLA==} + '@aws-sdk/middleware-ssec@3.709.0': + resolution: {integrity: sha512-2muiLe7YkmlwZp2SKz+goZrDThGfRq3o0FcJF3Puc0XGmcEPEDjih537mCoTrGgcXNFlBc7YChd84r3t72ySaQ==} engines: {node: '>=16.0.0'} - '@aws-sdk/middleware-user-agent@3.696.0': - resolution: {integrity: sha512-Lvyj8CTyxrHI6GHd2YVZKIRI5Fmnugt3cpJo0VrKKEgK5zMySwEZ1n4dqPK6czYRWKd5+WnYHYAuU+Wdk6Jsjw==} + '@aws-sdk/middleware-user-agent@3.709.0': + resolution: {integrity: sha512-ooc9ZJvgkjPhi9q05XwSfNTXkEBEIfL4hleo5rQBKwHG3aTHvwOM7LLzhdX56QZVa6sorPBp6fwULuRDSqiQHw==} engines: {node: '>=16.0.0'} - '@aws-sdk/middleware-websocket@3.696.0': - resolution: {integrity: sha512-8CaCtg08JZx7KtOepIMOUde2KsBk2UJ85h3LKGdmXXnWnmT+Jv3Q5LYbs+VowW/04OXcaYmua7Q3XbnRPw6qgw==} + '@aws-sdk/middleware-websocket@3.709.0': + resolution: {integrity: sha512-GmjczWYCppdXPsHV7CodU3JVWE1tq+rn/q1rMFXpEyVKjFhg9RwbytxL0+x3ep+x4z13y2nV5GfQWmNW6X1l5w==} engines: {node: '>= 14.0.0'} - '@aws-sdk/region-config-resolver@3.696.0': - resolution: {integrity: sha512-7EuH142lBXjI8yH6dVS/CZeiK/WZsmb/8zP6bQbVYpMrppSTgB3MzZZdxVZGzL5r8zPQOU10wLC4kIMy0qdBVQ==} + '@aws-sdk/region-config-resolver@3.709.0': + resolution: {integrity: sha512-/NoCAMEVKAg3kBKOrNtgOfL+ECt6nrl+L7q2SyYmrcY4tVCmwuECVqewQaHc03fTnJijfKLccw0Fj+6wOCnB6w==} engines: {node: '>=16.0.0'} - '@aws-sdk/s3-request-presigner@3.705.0': - resolution: {integrity: sha512-dAQiXv/TqjEUCoEeiKqQGI8LJ3g8Xv+XJL4W9CwsB6ZHHDq0Q05ulpDSkhhCf52ySXf5dJ33e1o/VeUDY3q0pw==} + '@aws-sdk/s3-request-presigner@3.709.0': + resolution: {integrity: sha512-WYmXU2ur/z6xBX9TcGwSWlSiS8rxrRl2f1HJXZzgSu9FWZ7fJssoQGvrk/w64wjNq1tEzKbd1iWXw9s9qexT3g==} engines: {node: '>=16.0.0'} - '@aws-sdk/signature-v4-multi-region@3.696.0': - resolution: {integrity: sha512-ijPkoLjXuPtgxAYlDoYls8UaG/VKigROn9ebbvPL/orEY5umedd3iZTcS9T+uAf4Ur3GELLxMQiERZpfDKaz3g==} + '@aws-sdk/signature-v4-multi-region@3.709.0': + resolution: {integrity: sha512-m0vhJEy6SLbjL11K9cHzX/ZhCIj//1GkTbYk2d4tTQFSuPyJEkjmoeHk9dYm2mJy0wH48j29OJadI1JUsR5bOw==} engines: {node: '>=16.0.0'} - '@aws-sdk/token-providers@3.699.0': - resolution: {integrity: sha512-kuiEW9DWs7fNos/SM+y58HCPhcIzm1nEZLhe2/7/6+TvAYLuEWURYsbK48gzsxXlaJ2k/jGY3nIsA7RptbMOwA==} + '@aws-sdk/token-providers@3.709.0': + resolution: {integrity: sha512-q5Ar6k71nci43IbULFgC8a89d/3EHpmd7HvBzqVGRcHnoPwh8eZDBfbBXKH83NGwcS1qPSRYiDbVfeWPm4/1jA==} engines: {node: '>=16.0.0'} peerDependencies: - '@aws-sdk/client-sso-oidc': ^3.699.0 + '@aws-sdk/client-sso-oidc': ^3.709.0 - '@aws-sdk/types@3.696.0': - resolution: {integrity: sha512-9rTvUJIAj5d3//U5FDPWGJ1nFJLuWb30vugGOrWk7aNZ6y9tuA3PI7Cc9dP8WEXKVyK1vuuk8rSFP2iqXnlgrw==} + '@aws-sdk/types@3.709.0': + resolution: {integrity: sha512-ArtLTMxgjf13Kfu3gWH3Ez9Q5TkDdcRZUofpKH3pMGB/C6KAbeSCtIIDKfoRTUABzyGlPyCrZdnFjKyH+ypIpg==} engines: {node: '>=16.0.0'} '@aws-sdk/util-arn-parser@3.693.0': resolution: {integrity: sha512-WC8x6ca+NRrtpAH64rWu+ryDZI3HuLwlEr8EU6/dbC/pt+r/zC0PBoC15VEygUaBA+isppCikQpGyEDu0Yj7gQ==} engines: {node: '>=16.0.0'} - '@aws-sdk/util-endpoints@3.696.0': - resolution: {integrity: sha512-T5s0IlBVX+gkb9g/I6CLt4yAZVzMSiGnbUqWihWsHvQR1WOoIcndQy/Oz/IJXT9T2ipoy7a80gzV6a5mglrioA==} + '@aws-sdk/util-endpoints@3.709.0': + resolution: {integrity: sha512-Mbc7AtL5WGCTKC16IGeUTz+sjpC3ptBda2t0CcK0kMVw3THDdcSq6ZlNKO747cNqdbwUvW34oHteUiHv4/z88Q==} engines: {node: '>=16.0.0'} - '@aws-sdk/util-format-url@3.696.0': - resolution: {integrity: sha512-R6yK1LozUD1GdAZRPhNsIow6VNFJUTyyoIar1OCWaknlucBMcq7musF3DN3TlORBwfFMj5buHc2ET9OtMtzvuA==} + '@aws-sdk/util-format-url@3.709.0': + resolution: {integrity: sha512-HGR11hx1KeFfoub/TACf+Yyal37lR85791Di2QPaElQThaqztLlppxale3EohKboOFf7Q/zvslJyM0fmgrlpQw==} engines: {node: '>=16.0.0'} '@aws-sdk/util-locate-window@3.693.0': resolution: {integrity: sha512-ttrag6haJLWABhLqtg1Uf+4LgHWIMOVSYL+VYZmAp2v4PUGOwWmWQH0Zk8RM7YuQcLfH/EoR72/Yxz6A4FKcuw==} engines: {node: '>=16.0.0'} - '@aws-sdk/util-user-agent-browser@3.696.0': - resolution: {integrity: sha512-Z5rVNDdmPOe6ELoM5AhF/ja5tSjbe6ctSctDPb0JdDf4dT0v2MfwhJKzXju2RzX8Es/77Glh7MlaXLE0kCB9+Q==} + '@aws-sdk/util-user-agent-browser@3.709.0': + resolution: {integrity: sha512-/rL2GasJzdTWUURCQKFldw2wqBtY4k4kCiA2tVZSKg3y4Ey7zO34SW8ebaeCE2/xoWOyLR2/etdKyphoo4Zrtg==} - '@aws-sdk/util-user-agent-node@3.696.0': - resolution: {integrity: sha512-KhKqcfyXIB0SCCt+qsu4eJjsfiOrNzK5dCV7RAW2YIpp+msxGUUX0NdRE9rkzjiv+3EMktgJm3eEIS+yxtlVdQ==} + '@aws-sdk/util-user-agent-node@3.709.0': + resolution: {integrity: sha512-trBfzSCVWy7ILgqhEXgiuM7hfRCw4F4a8IK90tjk9YL0jgoJ6eJuOp7+DfCtHJaygoBxD3cdMFkOu+lluFmGBA==} engines: {node: '>=16.0.0'} peerDependencies: aws-crt: '>=1.0.0' @@ -1975,8 +1966,8 @@ packages: aws-crt: optional: true - '@aws-sdk/xml-builder@3.696.0': - resolution: {integrity: sha512-dn1mX+EeqivoLYnY7p2qLrir0waPnCgS/0YdRCAVU2x14FgfUYCH6Im3w3oi2dMwhxfKY5lYVB5NKvZu7uI9lQ==} + '@aws-sdk/xml-builder@3.709.0': + resolution: {integrity: sha512-2GPCwlNxeHspoK/Mc8nbk9cBOkSpp3j2SJUQmFnyQK6V/pR6II2oPRyZkMomug1Rc10hqlBHByMecq4zhV2uUw==} engines: {node: '>=16.0.0'} '@babel/code-frame@7.26.2': @@ -2641,6 +2632,9 @@ packages: '@braintree/sanitize-url@7.1.0': resolution: {integrity: sha512-o+UlMLt49RvtCASlOMW0AkHnabN9wR9rwCCherxO0yG4Npy34GkvrAqdXQvrhNs+jh+gkK8gB8Lf05qL/O7KWg==} + '@cfworker/json-schema@4.0.3': + resolution: {integrity: sha512-ZykIcDTVv5UNmKWSTLAs3VukO6NDJkkSKxrgUTDPBkAlORVT3H9n5DbRjRl8xIotklscHdbLIa0b9+y3mQq73g==} + '@chevrotain/cst-dts-gen@11.0.3': resolution: {integrity: sha512-BvIKpRLeS/8UbfxXxgC33xOumsacaeCKAjAeLyOn7Pcp95HiRbrpl14S+9vaZLolnbssPIUuiUd8IvgkRyt6NQ==} @@ -4173,8 +4167,8 @@ packages: resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - '@jridgewell/gen-mapping@0.3.5': - resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} + '@jridgewell/gen-mapping@0.3.8': + resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} engines: {node: '>=6.0.0'} '@jridgewell/resolve-uri@3.1.2': @@ -4207,8 +4201,8 @@ packages: '@kwsites/promise-deferred@1.1.1': resolution: {integrity: sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==} - '@langchain/core@0.3.22': - resolution: {integrity: sha512-9rwEbxJi3Fgs8XuealNYxB6s0FCOnvXLnpiV5/oKgmEJtCRS91IqgJCWA8d59s4YkaEply/EsZVc2azNPK6Wjw==} + '@langchain/core@0.3.23': + resolution: {integrity: sha512-Aut43dEJYH/ibccSErFOLQzymkBG4emlN16P0OHWwx02bDosOR9ilZly4JJiCSYcprn2X2H8nee6P/4VMg1oQA==} engines: {node: '>=18'} '@langchain/openai@0.3.14': @@ -5625,8 +5619,8 @@ packages: '@shikijs/types@1.24.2': resolution: {integrity: sha512-bdeWZiDtajGLG9BudI0AHet0b6e7FbR0EsE4jpGaI0YwHm/XJunI9+3uZnzFtX65gsyJ6ngCIWUfA4NWRPnBkQ==} - '@shikijs/vscode-textmate@9.3.0': - resolution: {integrity: sha512-jn7/7ky30idSkd/O5yDBfAnVt+JJpepofP/POZ1iMOxK59cOfqIgg/Dj0eFsjOTMw+4ycJN0uhZH/Eb0bs/EUA==} + '@shikijs/vscode-textmate@9.3.1': + resolution: {integrity: sha512-79QfK1393x9Ho60QFyLti+QfdJzRQCVLFb97kOIV7Eo9vQU/roINgk7m24uv0a7AUvN//RDH36FLjjK48v0s9g==} '@sideway/address@4.1.5': resolution: {integrity: sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==} @@ -6496,6 +6490,9 @@ packages: '@types/fluent-ffmpeg@2.1.27': resolution: {integrity: sha512-QiDWjihpUhriISNoBi2hJBRUUmoj/BMTYcfz+F+ZM9hHWBYABFAE6hjP/TbCZC0GWwlpa3FzvHH9RzFeRusZ7A==} + '@types/fs-extra@11.0.4': + resolution: {integrity: sha512-yTbItCNreRooED33qjunPthRcSjERP1r4MqCZc7wv0u2sUkzTFp45tgUfS5+r7FrZPdmCCNflLhVSP/o+SemsQ==} + '@types/geojson@7946.0.15': resolution: {integrity: sha512-9oSxFzDCT2Rj6DfcHF8G++jxBKS7mBqXl5xrRW+Kbvjry6Uduya2iiwqHPhVXpasAVMBYKkEPGgKhd3+/HZ6xA==} @@ -6547,6 +6544,9 @@ packages: '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + '@types/jsonfile@6.1.4': + resolution: {integrity: sha512-D5qGUYwjvnNNextdU59/+fI+spnwtTFmyQP0h+PfIOSkNfpU6AOICUOkm4i0OnSk+NyjdPJrxCDro0sJsWlRpQ==} + '@types/jsonwebtoken@9.0.7': resolution: {integrity: sha512-ugo316mmTYBl2g81zDFnZ7cfxlut3o+/EQdaP7J8QN2kY6lJ22hmQYCK5EHcJHbrW+dkCGSCPgbG8JtYj6qSrg==} @@ -6592,8 +6592,8 @@ packages: '@types/node@17.0.45': resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==} - '@types/node@18.19.67': - resolution: {integrity: sha512-wI8uHusga+0ZugNp0Ol/3BqQfEcCCNfojtO6Oou9iVNGPTL6QNSdnUdqq85fRgIorLhLMuPIKpsN98QE9Nh+KQ==} + '@types/node@18.19.68': + resolution: {integrity: sha512-QGtpFH1vB99ZmTa63K4/FU8twThj4fuVSBkGddTp7uIL/cuoLWIUSL2RcOaigBhfR+hg5pgGkBnkoOxrTVBMKw==} '@types/node@20.17.9': resolution: {integrity: sha512-0JOXkRyLanfGPE2QRCwgxhzlBAvaRdCNMcvbd7jFfpmD4eEXll7LRwy5ymJmyeZqk7Nh7eD2LeUyQ68BbndmXw==} @@ -7335,8 +7335,8 @@ packages: algoliasearch@4.24.0: resolution: {integrity: sha512-bf0QV/9jVejssFBmz2HQLxUadxk574t4iwjCKp5E7NBzwKkrDEhKPISIIjAU/p6K5qDx3qoeh4+26zWN1jmw3g==} - algoliasearch@5.16.0: - resolution: {integrity: sha512-0zWz0LGfB0MLrhcnyGDpvVWPSsZnECNU6V/GPtNkHHSgaUj/7i+j36bZm6HClCvo8GvuxbN+ccbFREWUouHlfg==} + algoliasearch@5.17.0: + resolution: {integrity: sha512-BpuFprDFc3Pe9a1ZXLzLeqZ+l8Ur37AfzBswkOB4LwikqnRPbIGdluT/nFc/Xk+u/QMxMzUlTN+izqQJVb5vYA==} engines: {node: '>= 14.0.0'} amp-message@0.1.2: @@ -7644,8 +7644,8 @@ packages: bare-path@2.1.3: resolution: {integrity: sha512-lh/eITfU8hrj9Ru5quUp0Io1kJWIk1bTjzo7JH1P5dWmQ2EL4hFUlfI8FonAhSlgIfhn63p84CDY/x+PisgcXA==} - bare-stream@2.4.2: - resolution: {integrity: sha512-XZ4ln/KV4KT+PXdIWTKjsLY+quqCaEtqqtgGJVPw9AoM73By03ij64YjepK0aQvHSWDb6AfAZwqKaFu68qkrdA==} + bare-stream@2.5.2: + resolution: {integrity: sha512-QK6bePvszntxgPKdVXciYzjlWv2Ry1mQuUqyUUzd27G7eLupl6d0K5AGJfnfyFAdgy5tRolHP/zbaUMslLceOg==} base-x@3.0.10: resolution: {integrity: sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==} @@ -7936,6 +7936,10 @@ packages: resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==} engines: {node: '>= 0.4'} + call-bound@1.0.2: + resolution: {integrity: sha512-0lk0PHFe/uz0vl527fG9CgdE9WdafjDbCXvBbs+LUv000TVt2Jjhqbs4Jwm8gz070w8xXyEAxrPOMullsxXeGg==} + engines: {node: '>= 0.4'} + callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} @@ -11298,6 +11302,11 @@ packages: engines: {node: '>=6'} hasBin: true + jsesc@3.1.0: + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} + engines: {node: '>=6'} + hasBin: true + json-bigint@1.0.0: resolution: {integrity: sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==} @@ -11481,8 +11490,8 @@ packages: resolution: {integrity: sha512-+Ez9EoiByeoTu/2BXmEaZ06iPNXM6thWJp02KfBO/raSMyCJ4jw7AkWWa+zBCTm0+Tw1Fj9FOxdqSskyN5nAwg==} engines: {node: '>=16.0.0'} - langsmith@0.2.11: - resolution: {integrity: sha512-rVPUN/jQEHjTuYaoVKGjfb3NsYNLGTQT9LXcgJvka5M0EDcXciC598A+DsAQrl6McdfSJCFJDelgRPqVoF2xNA==} + langsmith@0.2.12: + resolution: {integrity: sha512-FP1eMcM/ckocagtzKsD6WEjkSOZKImOmKK83hOgULa3pNGnc3nWRvCRIniZVLjCaXw9SOFR3K2ah0o3FvQhM5A==} peerDependencies: openai: '*' peerDependenciesMeta: @@ -13614,8 +13623,8 @@ packages: peerDependencies: postcss: ^8.1.0 - postcss-modules-local-by-default@4.1.0: - resolution: {integrity: sha512-rm0bdSv4jC3BDma3s9H19ZddW0aHX6EoqwDYU2IfZhRN+53QrufTRo2IdkAbRqLx4R2IYbZnbjKKxg4VN5oU9Q==} + postcss-modules-local-by-default@4.2.0: + resolution: {integrity: sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw==} engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 @@ -14184,10 +14193,6 @@ packages: resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} engines: {node: '>=0.6'} - qs@6.13.1: - resolution: {integrity: sha512-EJPeIn0CYrGu+hli1xilKAPXODtJ12T0sP63Ijx2/khC2JtuaN3JyNIpvmnkmaEtha9ocbG4A4cMcr+TvqvwQg==} - engines: {node: '>=0.6'} - qs@6.5.3: resolution: {integrity: sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==} engines: {node: '>=0.6'} @@ -14789,9 +14794,9 @@ packages: resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} engines: {node: '>= 10.13.0'} - schema-utils@4.2.0: - resolution: {integrity: sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==} - engines: {node: '>= 12.13.0'} + schema-utils@4.3.0: + resolution: {integrity: sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g==} + engines: {node: '>= 10.13.0'} scule@1.3.0: resolution: {integrity: sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==} @@ -14938,8 +14943,20 @@ packages: shimmer@1.2.1: resolution: {integrity: sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==} - side-channel@1.0.6: - resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} + side-channel-list@1.0.0: + resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} + engines: {node: '>= 0.4'} + + side-channel-map@1.0.1: + resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} + engines: {node: '>= 0.4'} + + side-channel-weakmap@1.0.2: + resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} + engines: {node: '>= 0.4'} + + side-channel@1.1.0: + resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} engines: {node: '>= 0.4'} siginfo@2.0.0: @@ -15363,8 +15380,8 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - svelte@5.10.0: - resolution: {integrity: sha512-jGJFpB9amHLLQZBbAuQ6csH7WlTvGx4cO4wSSNcgGcx9vDGMTCZzTREf6/wKhVUQDoK+GapgvLQPZHa3e9MOAA==} + svelte@5.11.0: + resolution: {integrity: sha512-w4FYvEY1eKbgBZo8RY2iegaOe9sZu9yhDa70cAyW9gkPJc87w6/1rrfNI4uu985s/7U+4CggQDE7CPIbrPsnXw==} engines: {node: '>=18'} svg-parser@2.0.4: @@ -16835,10 +16852,10 @@ packages: zlibjs@0.3.1: resolution: {integrity: sha512-+J9RrgTKOmlxFSDHo0pI1xM6BLVUv+o0ZT9ANtCxGkjIVCCUdx9alUF8Gm+dGLKbkkkidWIHFDZHDMpfITt4+w==} - zod-to-json-schema@3.23.5: - resolution: {integrity: sha512-5wlSS0bXfF/BrL4jPAbz9da5hDlDptdEppYfe+x4eIJ7jioqKG9uUxOwPzqof09u/XeVdrgFu29lZi+8XNDJtA==} + zod-to-json-schema@3.24.1: + resolution: {integrity: sha512-3h08nf3Vw3Wl3PK+q3ow/lIil81IT2Oa7YpQyUUDsEWbXveMesdfK1xBd2RhCkynwZndAxixji/7SYJJowr62w==} peerDependencies: - zod: ^3.23.3 + zod: ^3.24.1 zod@3.23.8: resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==} @@ -16849,6 +16866,11 @@ packages: zwitch@2.0.4: resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} + zx@8.2.4: + resolution: {integrity: sha512-g9wVU+5+M+zVen/3IyAZfsZFmeqb6vDfjqFggakviz5uLK7OAejOirX+jeTOkyvAh/OYRlCgw+SdqzN7F61QVQ==} + engines: {node: '>= 12.17.0'} + hasBin: true + snapshots: '@0glabs/0g-ts-sdk@0.2.1(bufferutil@4.0.8)(ethers@6.13.4(bufferutil@4.0.8)(utf-8-validate@5.0.10))(utf-8-validate@5.0.10)': @@ -16962,13 +16984,13 @@ snapshots: transitivePeerDependencies: - zod - '@ai-sdk/svelte@0.0.57(svelte@5.10.0)(zod@3.23.8)': + '@ai-sdk/svelte@0.0.57(svelte@5.11.0)(zod@3.23.8)': dependencies: '@ai-sdk/provider-utils': 1.0.22(zod@3.23.8) '@ai-sdk/ui-utils': 0.0.50(zod@3.23.8) - sswr: 2.1.0(svelte@5.10.0) + sswr: 2.1.0(svelte@5.11.0) optionalDependencies: - svelte: 5.10.0 + svelte: 5.11.0 transitivePeerDependencies: - zod @@ -16978,7 +17000,7 @@ snapshots: '@ai-sdk/provider-utils': 1.0.22(zod@3.23.8) json-schema: 0.4.0 secure-json-parse: 2.7.0 - zod-to-json-schema: 3.23.5(zod@3.23.8) + zod-to-json-schema: 3.24.1(zod@3.23.8) optionalDependencies: zod: 3.23.8 @@ -16992,33 +17014,33 @@ snapshots: transitivePeerDependencies: - zod - '@algolia/autocomplete-core@1.17.7(@algolia/client-search@5.16.0)(algoliasearch@5.16.0)(search-insights@2.17.3)': + '@algolia/autocomplete-core@1.17.7(@algolia/client-search@5.17.0)(algoliasearch@5.17.0)(search-insights@2.17.3)': dependencies: - '@algolia/autocomplete-plugin-algolia-insights': 1.17.7(@algolia/client-search@5.16.0)(algoliasearch@5.16.0)(search-insights@2.17.3) - '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.16.0)(algoliasearch@5.16.0) + '@algolia/autocomplete-plugin-algolia-insights': 1.17.7(@algolia/client-search@5.17.0)(algoliasearch@5.17.0)(search-insights@2.17.3) + '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.17.0)(algoliasearch@5.17.0) transitivePeerDependencies: - '@algolia/client-search' - algoliasearch - search-insights - '@algolia/autocomplete-plugin-algolia-insights@1.17.7(@algolia/client-search@5.16.0)(algoliasearch@5.16.0)(search-insights@2.17.3)': + '@algolia/autocomplete-plugin-algolia-insights@1.17.7(@algolia/client-search@5.17.0)(algoliasearch@5.17.0)(search-insights@2.17.3)': dependencies: - '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.16.0)(algoliasearch@5.16.0) + '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.17.0)(algoliasearch@5.17.0) search-insights: 2.17.3 transitivePeerDependencies: - '@algolia/client-search' - algoliasearch - '@algolia/autocomplete-preset-algolia@1.17.7(@algolia/client-search@5.16.0)(algoliasearch@5.16.0)': + '@algolia/autocomplete-preset-algolia@1.17.7(@algolia/client-search@5.17.0)(algoliasearch@5.17.0)': dependencies: - '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.16.0)(algoliasearch@5.16.0) - '@algolia/client-search': 5.16.0 - algoliasearch: 5.16.0 + '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.17.0)(algoliasearch@5.17.0) + '@algolia/client-search': 5.17.0 + algoliasearch: 5.17.0 - '@algolia/autocomplete-shared@1.17.7(@algolia/client-search@5.16.0)(algoliasearch@5.16.0)': + '@algolia/autocomplete-shared@1.17.7(@algolia/client-search@5.17.0)(algoliasearch@5.17.0)': dependencies: - '@algolia/client-search': 5.16.0 - algoliasearch: 5.16.0 + '@algolia/client-search': 5.17.0 + algoliasearch: 5.17.0 '@algolia/cache-browser-local-storage@4.24.0': dependencies: @@ -17030,12 +17052,12 @@ snapshots: dependencies: '@algolia/cache-common': 4.24.0 - '@algolia/client-abtesting@5.16.0': + '@algolia/client-abtesting@5.17.0': dependencies: - '@algolia/client-common': 5.16.0 - '@algolia/requester-browser-xhr': 5.16.0 - '@algolia/requester-fetch': 5.16.0 - '@algolia/requester-node-http': 5.16.0 + '@algolia/client-common': 5.17.0 + '@algolia/requester-browser-xhr': 5.17.0 + '@algolia/requester-fetch': 5.17.0 + '@algolia/requester-node-http': 5.17.0 '@algolia/client-account@4.24.0': dependencies: @@ -17050,26 +17072,26 @@ snapshots: '@algolia/requester-common': 4.24.0 '@algolia/transporter': 4.24.0 - '@algolia/client-analytics@5.16.0': + '@algolia/client-analytics@5.17.0': dependencies: - '@algolia/client-common': 5.16.0 - '@algolia/requester-browser-xhr': 5.16.0 - '@algolia/requester-fetch': 5.16.0 - '@algolia/requester-node-http': 5.16.0 + '@algolia/client-common': 5.17.0 + '@algolia/requester-browser-xhr': 5.17.0 + '@algolia/requester-fetch': 5.17.0 + '@algolia/requester-node-http': 5.17.0 '@algolia/client-common@4.24.0': dependencies: '@algolia/requester-common': 4.24.0 '@algolia/transporter': 4.24.0 - '@algolia/client-common@5.16.0': {} + '@algolia/client-common@5.17.0': {} - '@algolia/client-insights@5.16.0': + '@algolia/client-insights@5.17.0': dependencies: - '@algolia/client-common': 5.16.0 - '@algolia/requester-browser-xhr': 5.16.0 - '@algolia/requester-fetch': 5.16.0 - '@algolia/requester-node-http': 5.16.0 + '@algolia/client-common': 5.17.0 + '@algolia/requester-browser-xhr': 5.17.0 + '@algolia/requester-fetch': 5.17.0 + '@algolia/requester-node-http': 5.17.0 '@algolia/client-personalization@4.24.0': dependencies: @@ -17077,19 +17099,19 @@ snapshots: '@algolia/requester-common': 4.24.0 '@algolia/transporter': 4.24.0 - '@algolia/client-personalization@5.16.0': + '@algolia/client-personalization@5.17.0': dependencies: - '@algolia/client-common': 5.16.0 - '@algolia/requester-browser-xhr': 5.16.0 - '@algolia/requester-fetch': 5.16.0 - '@algolia/requester-node-http': 5.16.0 + '@algolia/client-common': 5.17.0 + '@algolia/requester-browser-xhr': 5.17.0 + '@algolia/requester-fetch': 5.17.0 + '@algolia/requester-node-http': 5.17.0 - '@algolia/client-query-suggestions@5.16.0': + '@algolia/client-query-suggestions@5.17.0': dependencies: - '@algolia/client-common': 5.16.0 - '@algolia/requester-browser-xhr': 5.16.0 - '@algolia/requester-fetch': 5.16.0 - '@algolia/requester-node-http': 5.16.0 + '@algolia/client-common': 5.17.0 + '@algolia/requester-browser-xhr': 5.17.0 + '@algolia/requester-fetch': 5.17.0 + '@algolia/requester-node-http': 5.17.0 '@algolia/client-search@4.24.0': dependencies: @@ -17097,21 +17119,21 @@ snapshots: '@algolia/requester-common': 4.24.0 '@algolia/transporter': 4.24.0 - '@algolia/client-search@5.16.0': + '@algolia/client-search@5.17.0': dependencies: - '@algolia/client-common': 5.16.0 - '@algolia/requester-browser-xhr': 5.16.0 - '@algolia/requester-fetch': 5.16.0 - '@algolia/requester-node-http': 5.16.0 + '@algolia/client-common': 5.17.0 + '@algolia/requester-browser-xhr': 5.17.0 + '@algolia/requester-fetch': 5.17.0 + '@algolia/requester-node-http': 5.17.0 '@algolia/events@4.0.1': {} - '@algolia/ingestion@1.16.0': + '@algolia/ingestion@1.17.0': dependencies: - '@algolia/client-common': 5.16.0 - '@algolia/requester-browser-xhr': 5.16.0 - '@algolia/requester-fetch': 5.16.0 - '@algolia/requester-node-http': 5.16.0 + '@algolia/client-common': 5.17.0 + '@algolia/requester-browser-xhr': 5.17.0 + '@algolia/requester-fetch': 5.17.0 + '@algolia/requester-node-http': 5.17.0 '@algolia/logger-common@4.24.0': {} @@ -17119,12 +17141,12 @@ snapshots: dependencies: '@algolia/logger-common': 4.24.0 - '@algolia/monitoring@1.16.0': + '@algolia/monitoring@1.17.0': dependencies: - '@algolia/client-common': 5.16.0 - '@algolia/requester-browser-xhr': 5.16.0 - '@algolia/requester-fetch': 5.16.0 - '@algolia/requester-node-http': 5.16.0 + '@algolia/client-common': 5.17.0 + '@algolia/requester-browser-xhr': 5.17.0 + '@algolia/requester-fetch': 5.17.0 + '@algolia/requester-node-http': 5.17.0 '@algolia/recommend@4.24.0': dependencies: @@ -17140,34 +17162,34 @@ snapshots: '@algolia/requester-node-http': 4.24.0 '@algolia/transporter': 4.24.0 - '@algolia/recommend@5.16.0': + '@algolia/recommend@5.17.0': dependencies: - '@algolia/client-common': 5.16.0 - '@algolia/requester-browser-xhr': 5.16.0 - '@algolia/requester-fetch': 5.16.0 - '@algolia/requester-node-http': 5.16.0 + '@algolia/client-common': 5.17.0 + '@algolia/requester-browser-xhr': 5.17.0 + '@algolia/requester-fetch': 5.17.0 + '@algolia/requester-node-http': 5.17.0 '@algolia/requester-browser-xhr@4.24.0': dependencies: '@algolia/requester-common': 4.24.0 - '@algolia/requester-browser-xhr@5.16.0': + '@algolia/requester-browser-xhr@5.17.0': dependencies: - '@algolia/client-common': 5.16.0 + '@algolia/client-common': 5.17.0 '@algolia/requester-common@4.24.0': {} - '@algolia/requester-fetch@5.16.0': + '@algolia/requester-fetch@5.17.0': dependencies: - '@algolia/client-common': 5.16.0 + '@algolia/client-common': 5.17.0 '@algolia/requester-node-http@4.24.0': dependencies: '@algolia/requester-common': 4.24.0 - '@algolia/requester-node-http@5.16.0': + '@algolia/requester-node-http@5.17.0': dependencies: - '@algolia/client-common': 5.16.0 + '@algolia/client-common': 5.17.0 '@algolia/transporter@4.24.0': dependencies: @@ -17179,7 +17201,7 @@ snapshots: '@ampproject/remapping@2.3.0': dependencies: - '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/gen-mapping': 0.3.8 '@jridgewell/trace-mapping': 0.3.25 '@antfu/install-pkg@0.4.1': @@ -17191,7 +17213,7 @@ snapshots: '@anthropic-ai/sdk@0.30.1(encoding@0.1.13)': dependencies: - '@types/node': 18.19.67 + '@types/node': 18.19.68 '@types/node-fetch': 2.6.12 abort-controller: 3.0.0 agentkeepalive: 4.5.0 @@ -17243,29 +17265,29 @@ snapshots: transitivePeerDependencies: - debug - '@avnu/avnu-sdk@2.1.1(ethers@6.13.4(bufferutil@4.0.8)(utf-8-validate@5.0.10))(qs@6.13.1)(starknet@6.18.0(encoding@0.1.13))': + '@avnu/avnu-sdk@2.1.1(ethers@6.13.4(bufferutil@4.0.8)(utf-8-validate@5.0.10))(qs@6.13.0)(starknet@6.18.0(encoding@0.1.13))': dependencies: ethers: 6.13.4(bufferutil@4.0.8)(utf-8-validate@5.0.10) - qs: 6.13.1 + qs: 6.13.0 starknet: 6.18.0(encoding@0.1.13) '@aws-crypto/crc32@5.2.0': dependencies: '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.696.0 + '@aws-sdk/types': 3.709.0 tslib: 2.8.1 '@aws-crypto/crc32c@5.2.0': dependencies: '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.696.0 + '@aws-sdk/types': 3.709.0 tslib: 2.8.1 '@aws-crypto/sha1-browser@5.2.0': dependencies: '@aws-crypto/supports-web-crypto': 5.2.0 '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.696.0 + '@aws-sdk/types': 3.709.0 '@aws-sdk/util-locate-window': 3.693.0 '@smithy/util-utf8': 2.3.0 tslib: 2.8.1 @@ -17275,7 +17297,7 @@ snapshots: '@aws-crypto/sha256-js': 5.2.0 '@aws-crypto/supports-web-crypto': 5.2.0 '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.696.0 + '@aws-sdk/types': 3.709.0 '@aws-sdk/util-locate-window': 3.693.0 '@smithy/util-utf8': 2.3.0 tslib: 2.8.1 @@ -17283,7 +17305,7 @@ snapshots: '@aws-crypto/sha256-js@5.2.0': dependencies: '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.696.0 + '@aws-sdk/types': 3.709.0 tslib: 2.8.1 '@aws-crypto/supports-web-crypto@5.2.0': @@ -17292,27 +17314,27 @@ snapshots: '@aws-crypto/util@5.2.0': dependencies: - '@aws-sdk/types': 3.696.0 + '@aws-sdk/types': 3.709.0 '@smithy/util-utf8': 2.3.0 tslib: 2.8.1 - '@aws-sdk/client-polly@3.699.0': + '@aws-sdk/client-polly@3.709.0': dependencies: '@aws-crypto/sha256-browser': 5.2.0 '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/client-sso-oidc': 3.699.0(@aws-sdk/client-sts@3.699.0) - '@aws-sdk/client-sts': 3.699.0 - '@aws-sdk/core': 3.696.0 - '@aws-sdk/credential-provider-node': 3.699.0(@aws-sdk/client-sso-oidc@3.699.0(@aws-sdk/client-sts@3.699.0))(@aws-sdk/client-sts@3.699.0) - '@aws-sdk/middleware-host-header': 3.696.0 - '@aws-sdk/middleware-logger': 3.696.0 - '@aws-sdk/middleware-recursion-detection': 3.696.0 - '@aws-sdk/middleware-user-agent': 3.696.0 - '@aws-sdk/region-config-resolver': 3.696.0 - '@aws-sdk/types': 3.696.0 - '@aws-sdk/util-endpoints': 3.696.0 - '@aws-sdk/util-user-agent-browser': 3.696.0 - '@aws-sdk/util-user-agent-node': 3.696.0 + '@aws-sdk/client-sso-oidc': 3.709.0(@aws-sdk/client-sts@3.709.0) + '@aws-sdk/client-sts': 3.709.0 + '@aws-sdk/core': 3.709.0 + '@aws-sdk/credential-provider-node': 3.709.0(@aws-sdk/client-sso-oidc@3.709.0(@aws-sdk/client-sts@3.709.0))(@aws-sdk/client-sts@3.709.0) + '@aws-sdk/middleware-host-header': 3.709.0 + '@aws-sdk/middleware-logger': 3.709.0 + '@aws-sdk/middleware-recursion-detection': 3.709.0 + '@aws-sdk/middleware-user-agent': 3.709.0 + '@aws-sdk/region-config-resolver': 3.709.0 + '@aws-sdk/types': 3.709.0 + '@aws-sdk/util-endpoints': 3.709.0 + '@aws-sdk/util-user-agent-browser': 3.709.0 + '@aws-sdk/util-user-agent-node': 3.709.0 '@smithy/config-resolver': 3.0.13 '@smithy/core': 2.5.5 '@smithy/fetch-http-handler': 4.1.2 @@ -17343,32 +17365,32 @@ snapshots: transitivePeerDependencies: - aws-crt - '@aws-sdk/client-s3@3.705.0': + '@aws-sdk/client-s3@3.709.0': dependencies: '@aws-crypto/sha1-browser': 5.2.0 '@aws-crypto/sha256-browser': 5.2.0 '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/client-sso-oidc': 3.699.0(@aws-sdk/client-sts@3.699.0) - '@aws-sdk/client-sts': 3.699.0 - '@aws-sdk/core': 3.696.0 - '@aws-sdk/credential-provider-node': 3.699.0(@aws-sdk/client-sso-oidc@3.699.0(@aws-sdk/client-sts@3.699.0))(@aws-sdk/client-sts@3.699.0) - '@aws-sdk/middleware-bucket-endpoint': 3.696.0 - '@aws-sdk/middleware-expect-continue': 3.696.0 - '@aws-sdk/middleware-flexible-checksums': 3.701.0 - '@aws-sdk/middleware-host-header': 3.696.0 - '@aws-sdk/middleware-location-constraint': 3.696.0 - '@aws-sdk/middleware-logger': 3.696.0 - '@aws-sdk/middleware-recursion-detection': 3.696.0 - '@aws-sdk/middleware-sdk-s3': 3.696.0 - '@aws-sdk/middleware-ssec': 3.696.0 - '@aws-sdk/middleware-user-agent': 3.696.0 - '@aws-sdk/region-config-resolver': 3.696.0 - '@aws-sdk/signature-v4-multi-region': 3.696.0 - '@aws-sdk/types': 3.696.0 - '@aws-sdk/util-endpoints': 3.696.0 - '@aws-sdk/util-user-agent-browser': 3.696.0 - '@aws-sdk/util-user-agent-node': 3.696.0 - '@aws-sdk/xml-builder': 3.696.0 + '@aws-sdk/client-sso-oidc': 3.709.0(@aws-sdk/client-sts@3.709.0) + '@aws-sdk/client-sts': 3.709.0 + '@aws-sdk/core': 3.709.0 + '@aws-sdk/credential-provider-node': 3.709.0(@aws-sdk/client-sso-oidc@3.709.0(@aws-sdk/client-sts@3.709.0))(@aws-sdk/client-sts@3.709.0) + '@aws-sdk/middleware-bucket-endpoint': 3.709.0 + '@aws-sdk/middleware-expect-continue': 3.709.0 + '@aws-sdk/middleware-flexible-checksums': 3.709.0 + '@aws-sdk/middleware-host-header': 3.709.0 + '@aws-sdk/middleware-location-constraint': 3.709.0 + '@aws-sdk/middleware-logger': 3.709.0 + '@aws-sdk/middleware-recursion-detection': 3.709.0 + '@aws-sdk/middleware-sdk-s3': 3.709.0 + '@aws-sdk/middleware-ssec': 3.709.0 + '@aws-sdk/middleware-user-agent': 3.709.0 + '@aws-sdk/region-config-resolver': 3.709.0 + '@aws-sdk/signature-v4-multi-region': 3.709.0 + '@aws-sdk/types': 3.709.0 + '@aws-sdk/util-endpoints': 3.709.0 + '@aws-sdk/util-user-agent-browser': 3.709.0 + '@aws-sdk/util-user-agent-node': 3.709.0 + '@aws-sdk/xml-builder': 3.709.0 '@smithy/config-resolver': 3.0.13 '@smithy/core': 2.5.5 '@smithy/eventstream-serde-browser': 3.0.14 @@ -17406,22 +17428,22 @@ snapshots: transitivePeerDependencies: - aws-crt - '@aws-sdk/client-sso-oidc@3.699.0(@aws-sdk/client-sts@3.699.0)': + '@aws-sdk/client-sso-oidc@3.709.0(@aws-sdk/client-sts@3.709.0)': dependencies: '@aws-crypto/sha256-browser': 5.2.0 '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/client-sts': 3.699.0 - '@aws-sdk/core': 3.696.0 - '@aws-sdk/credential-provider-node': 3.699.0(@aws-sdk/client-sso-oidc@3.699.0(@aws-sdk/client-sts@3.699.0))(@aws-sdk/client-sts@3.699.0) - '@aws-sdk/middleware-host-header': 3.696.0 - '@aws-sdk/middleware-logger': 3.696.0 - '@aws-sdk/middleware-recursion-detection': 3.696.0 - '@aws-sdk/middleware-user-agent': 3.696.0 - '@aws-sdk/region-config-resolver': 3.696.0 - '@aws-sdk/types': 3.696.0 - '@aws-sdk/util-endpoints': 3.696.0 - '@aws-sdk/util-user-agent-browser': 3.696.0 - '@aws-sdk/util-user-agent-node': 3.696.0 + '@aws-sdk/client-sts': 3.709.0 + '@aws-sdk/core': 3.709.0 + '@aws-sdk/credential-provider-node': 3.709.0(@aws-sdk/client-sso-oidc@3.709.0(@aws-sdk/client-sts@3.709.0))(@aws-sdk/client-sts@3.709.0) + '@aws-sdk/middleware-host-header': 3.709.0 + '@aws-sdk/middleware-logger': 3.709.0 + '@aws-sdk/middleware-recursion-detection': 3.709.0 + '@aws-sdk/middleware-user-agent': 3.709.0 + '@aws-sdk/region-config-resolver': 3.709.0 + '@aws-sdk/types': 3.709.0 + '@aws-sdk/util-endpoints': 3.709.0 + '@aws-sdk/util-user-agent-browser': 3.709.0 + '@aws-sdk/util-user-agent-node': 3.709.0 '@smithy/config-resolver': 3.0.13 '@smithy/core': 2.5.5 '@smithy/fetch-http-handler': 4.1.2 @@ -17451,20 +17473,20 @@ snapshots: transitivePeerDependencies: - aws-crt - '@aws-sdk/client-sso@3.696.0': + '@aws-sdk/client-sso@3.709.0': dependencies: '@aws-crypto/sha256-browser': 5.2.0 '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/core': 3.696.0 - '@aws-sdk/middleware-host-header': 3.696.0 - '@aws-sdk/middleware-logger': 3.696.0 - '@aws-sdk/middleware-recursion-detection': 3.696.0 - '@aws-sdk/middleware-user-agent': 3.696.0 - '@aws-sdk/region-config-resolver': 3.696.0 - '@aws-sdk/types': 3.696.0 - '@aws-sdk/util-endpoints': 3.696.0 - '@aws-sdk/util-user-agent-browser': 3.696.0 - '@aws-sdk/util-user-agent-node': 3.696.0 + '@aws-sdk/core': 3.709.0 + '@aws-sdk/middleware-host-header': 3.709.0 + '@aws-sdk/middleware-logger': 3.709.0 + '@aws-sdk/middleware-recursion-detection': 3.709.0 + '@aws-sdk/middleware-user-agent': 3.709.0 + '@aws-sdk/region-config-resolver': 3.709.0 + '@aws-sdk/types': 3.709.0 + '@aws-sdk/util-endpoints': 3.709.0 + '@aws-sdk/util-user-agent-browser': 3.709.0 + '@aws-sdk/util-user-agent-node': 3.709.0 '@smithy/config-resolver': 3.0.13 '@smithy/core': 2.5.5 '@smithy/fetch-http-handler': 4.1.2 @@ -17494,22 +17516,22 @@ snapshots: transitivePeerDependencies: - aws-crt - '@aws-sdk/client-sts@3.699.0': + '@aws-sdk/client-sts@3.709.0': dependencies: '@aws-crypto/sha256-browser': 5.2.0 '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/client-sso-oidc': 3.699.0(@aws-sdk/client-sts@3.699.0) - '@aws-sdk/core': 3.696.0 - '@aws-sdk/credential-provider-node': 3.699.0(@aws-sdk/client-sso-oidc@3.699.0(@aws-sdk/client-sts@3.699.0))(@aws-sdk/client-sts@3.699.0) - '@aws-sdk/middleware-host-header': 3.696.0 - '@aws-sdk/middleware-logger': 3.696.0 - '@aws-sdk/middleware-recursion-detection': 3.696.0 - '@aws-sdk/middleware-user-agent': 3.696.0 - '@aws-sdk/region-config-resolver': 3.696.0 - '@aws-sdk/types': 3.696.0 - '@aws-sdk/util-endpoints': 3.696.0 - '@aws-sdk/util-user-agent-browser': 3.696.0 - '@aws-sdk/util-user-agent-node': 3.696.0 + '@aws-sdk/client-sso-oidc': 3.709.0(@aws-sdk/client-sts@3.709.0) + '@aws-sdk/core': 3.709.0 + '@aws-sdk/credential-provider-node': 3.709.0(@aws-sdk/client-sso-oidc@3.709.0(@aws-sdk/client-sts@3.709.0))(@aws-sdk/client-sts@3.709.0) + '@aws-sdk/middleware-host-header': 3.709.0 + '@aws-sdk/middleware-logger': 3.709.0 + '@aws-sdk/middleware-recursion-detection': 3.709.0 + '@aws-sdk/middleware-user-agent': 3.709.0 + '@aws-sdk/region-config-resolver': 3.709.0 + '@aws-sdk/types': 3.709.0 + '@aws-sdk/util-endpoints': 3.709.0 + '@aws-sdk/util-user-agent-browser': 3.709.0 + '@aws-sdk/util-user-agent-node': 3.709.0 '@smithy/config-resolver': 3.0.13 '@smithy/core': 2.5.5 '@smithy/fetch-http-handler': 4.1.2 @@ -17539,27 +17561,27 @@ snapshots: transitivePeerDependencies: - aws-crt - '@aws-sdk/client-transcribe-streaming@3.699.0': + '@aws-sdk/client-transcribe-streaming@3.709.0': dependencies: '@aws-crypto/sha256-browser': 5.2.0 '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/client-sso-oidc': 3.699.0(@aws-sdk/client-sts@3.699.0) - '@aws-sdk/client-sts': 3.699.0 - '@aws-sdk/core': 3.696.0 - '@aws-sdk/credential-provider-node': 3.699.0(@aws-sdk/client-sso-oidc@3.699.0(@aws-sdk/client-sts@3.699.0))(@aws-sdk/client-sts@3.699.0) - '@aws-sdk/eventstream-handler-node': 3.696.0 - '@aws-sdk/middleware-eventstream': 3.696.0 - '@aws-sdk/middleware-host-header': 3.696.0 - '@aws-sdk/middleware-logger': 3.696.0 - '@aws-sdk/middleware-recursion-detection': 3.696.0 - '@aws-sdk/middleware-sdk-transcribe-streaming': 3.696.0 - '@aws-sdk/middleware-user-agent': 3.696.0 - '@aws-sdk/middleware-websocket': 3.696.0 - '@aws-sdk/region-config-resolver': 3.696.0 - '@aws-sdk/types': 3.696.0 - '@aws-sdk/util-endpoints': 3.696.0 - '@aws-sdk/util-user-agent-browser': 3.696.0 - '@aws-sdk/util-user-agent-node': 3.696.0 + '@aws-sdk/client-sso-oidc': 3.709.0(@aws-sdk/client-sts@3.709.0) + '@aws-sdk/client-sts': 3.709.0 + '@aws-sdk/core': 3.709.0 + '@aws-sdk/credential-provider-node': 3.709.0(@aws-sdk/client-sso-oidc@3.709.0(@aws-sdk/client-sts@3.709.0))(@aws-sdk/client-sts@3.709.0) + '@aws-sdk/eventstream-handler-node': 3.709.0 + '@aws-sdk/middleware-eventstream': 3.709.0 + '@aws-sdk/middleware-host-header': 3.709.0 + '@aws-sdk/middleware-logger': 3.709.0 + '@aws-sdk/middleware-recursion-detection': 3.709.0 + '@aws-sdk/middleware-sdk-transcribe-streaming': 3.709.0 + '@aws-sdk/middleware-user-agent': 3.709.0 + '@aws-sdk/middleware-websocket': 3.709.0 + '@aws-sdk/region-config-resolver': 3.709.0 + '@aws-sdk/types': 3.709.0 + '@aws-sdk/util-endpoints': 3.709.0 + '@aws-sdk/util-user-agent-browser': 3.709.0 + '@aws-sdk/util-user-agent-node': 3.709.0 '@smithy/config-resolver': 3.0.13 '@smithy/core': 2.5.5 '@smithy/eventstream-serde-browser': 3.0.14 @@ -17592,9 +17614,9 @@ snapshots: transitivePeerDependencies: - aws-crt - '@aws-sdk/core@3.696.0': + '@aws-sdk/core@3.709.0': dependencies: - '@aws-sdk/types': 3.696.0 + '@aws-sdk/types': 3.709.0 '@smithy/core': 2.5.5 '@smithy/node-config-provider': 3.1.12 '@smithy/property-provider': 3.1.11 @@ -17606,18 +17628,18 @@ snapshots: fast-xml-parser: 4.4.1 tslib: 2.8.1 - '@aws-sdk/credential-provider-env@3.696.0': + '@aws-sdk/credential-provider-env@3.709.0': dependencies: - '@aws-sdk/core': 3.696.0 - '@aws-sdk/types': 3.696.0 + '@aws-sdk/core': 3.709.0 + '@aws-sdk/types': 3.709.0 '@smithy/property-provider': 3.1.11 '@smithy/types': 3.7.2 tslib: 2.8.1 - '@aws-sdk/credential-provider-http@3.696.0': + '@aws-sdk/credential-provider-http@3.709.0': dependencies: - '@aws-sdk/core': 3.696.0 - '@aws-sdk/types': 3.696.0 + '@aws-sdk/core': 3.709.0 + '@aws-sdk/types': 3.709.0 '@smithy/fetch-http-handler': 4.1.2 '@smithy/node-http-handler': 3.3.2 '@smithy/property-provider': 3.1.11 @@ -17627,16 +17649,16 @@ snapshots: '@smithy/util-stream': 3.3.2 tslib: 2.8.1 - '@aws-sdk/credential-provider-ini@3.699.0(@aws-sdk/client-sso-oidc@3.699.0(@aws-sdk/client-sts@3.699.0))(@aws-sdk/client-sts@3.699.0)': + '@aws-sdk/credential-provider-ini@3.709.0(@aws-sdk/client-sso-oidc@3.709.0(@aws-sdk/client-sts@3.709.0))(@aws-sdk/client-sts@3.709.0)': dependencies: - '@aws-sdk/client-sts': 3.699.0 - '@aws-sdk/core': 3.696.0 - '@aws-sdk/credential-provider-env': 3.696.0 - '@aws-sdk/credential-provider-http': 3.696.0 - '@aws-sdk/credential-provider-process': 3.696.0 - '@aws-sdk/credential-provider-sso': 3.699.0(@aws-sdk/client-sso-oidc@3.699.0(@aws-sdk/client-sts@3.699.0)) - '@aws-sdk/credential-provider-web-identity': 3.696.0(@aws-sdk/client-sts@3.699.0) - '@aws-sdk/types': 3.696.0 + '@aws-sdk/client-sts': 3.709.0 + '@aws-sdk/core': 3.709.0 + '@aws-sdk/credential-provider-env': 3.709.0 + '@aws-sdk/credential-provider-http': 3.709.0 + '@aws-sdk/credential-provider-process': 3.709.0 + '@aws-sdk/credential-provider-sso': 3.709.0(@aws-sdk/client-sso-oidc@3.709.0(@aws-sdk/client-sts@3.709.0)) + '@aws-sdk/credential-provider-web-identity': 3.709.0(@aws-sdk/client-sts@3.709.0) + '@aws-sdk/types': 3.709.0 '@smithy/credential-provider-imds': 3.2.8 '@smithy/property-provider': 3.1.11 '@smithy/shared-ini-file-loader': 3.1.12 @@ -17646,15 +17668,15 @@ snapshots: - '@aws-sdk/client-sso-oidc' - aws-crt - '@aws-sdk/credential-provider-node@3.699.0(@aws-sdk/client-sso-oidc@3.699.0(@aws-sdk/client-sts@3.699.0))(@aws-sdk/client-sts@3.699.0)': + '@aws-sdk/credential-provider-node@3.709.0(@aws-sdk/client-sso-oidc@3.709.0(@aws-sdk/client-sts@3.709.0))(@aws-sdk/client-sts@3.709.0)': dependencies: - '@aws-sdk/credential-provider-env': 3.696.0 - '@aws-sdk/credential-provider-http': 3.696.0 - '@aws-sdk/credential-provider-ini': 3.699.0(@aws-sdk/client-sso-oidc@3.699.0(@aws-sdk/client-sts@3.699.0))(@aws-sdk/client-sts@3.699.0) - '@aws-sdk/credential-provider-process': 3.696.0 - '@aws-sdk/credential-provider-sso': 3.699.0(@aws-sdk/client-sso-oidc@3.699.0(@aws-sdk/client-sts@3.699.0)) - '@aws-sdk/credential-provider-web-identity': 3.696.0(@aws-sdk/client-sts@3.699.0) - '@aws-sdk/types': 3.696.0 + '@aws-sdk/credential-provider-env': 3.709.0 + '@aws-sdk/credential-provider-http': 3.709.0 + '@aws-sdk/credential-provider-ini': 3.709.0(@aws-sdk/client-sso-oidc@3.709.0(@aws-sdk/client-sts@3.709.0))(@aws-sdk/client-sts@3.709.0) + '@aws-sdk/credential-provider-process': 3.709.0 + '@aws-sdk/credential-provider-sso': 3.709.0(@aws-sdk/client-sso-oidc@3.709.0(@aws-sdk/client-sts@3.709.0)) + '@aws-sdk/credential-provider-web-identity': 3.709.0(@aws-sdk/client-sts@3.709.0) + '@aws-sdk/types': 3.709.0 '@smithy/credential-provider-imds': 3.2.8 '@smithy/property-provider': 3.1.11 '@smithy/shared-ini-file-loader': 3.1.12 @@ -17665,21 +17687,21 @@ snapshots: - '@aws-sdk/client-sts' - aws-crt - '@aws-sdk/credential-provider-process@3.696.0': + '@aws-sdk/credential-provider-process@3.709.0': dependencies: - '@aws-sdk/core': 3.696.0 - '@aws-sdk/types': 3.696.0 + '@aws-sdk/core': 3.709.0 + '@aws-sdk/types': 3.709.0 '@smithy/property-provider': 3.1.11 '@smithy/shared-ini-file-loader': 3.1.12 '@smithy/types': 3.7.2 tslib: 2.8.1 - '@aws-sdk/credential-provider-sso@3.699.0(@aws-sdk/client-sso-oidc@3.699.0(@aws-sdk/client-sts@3.699.0))': + '@aws-sdk/credential-provider-sso@3.709.0(@aws-sdk/client-sso-oidc@3.709.0(@aws-sdk/client-sts@3.709.0))': dependencies: - '@aws-sdk/client-sso': 3.696.0 - '@aws-sdk/core': 3.696.0 - '@aws-sdk/token-providers': 3.699.0(@aws-sdk/client-sso-oidc@3.699.0(@aws-sdk/client-sts@3.699.0)) - '@aws-sdk/types': 3.696.0 + '@aws-sdk/client-sso': 3.709.0 + '@aws-sdk/core': 3.709.0 + '@aws-sdk/token-providers': 3.709.0(@aws-sdk/client-sso-oidc@3.709.0(@aws-sdk/client-sts@3.709.0)) + '@aws-sdk/types': 3.709.0 '@smithy/property-provider': 3.1.11 '@smithy/shared-ini-file-loader': 3.1.12 '@smithy/types': 3.7.2 @@ -17688,25 +17710,25 @@ snapshots: - '@aws-sdk/client-sso-oidc' - aws-crt - '@aws-sdk/credential-provider-web-identity@3.696.0(@aws-sdk/client-sts@3.699.0)': + '@aws-sdk/credential-provider-web-identity@3.709.0(@aws-sdk/client-sts@3.709.0)': dependencies: - '@aws-sdk/client-sts': 3.699.0 - '@aws-sdk/core': 3.696.0 - '@aws-sdk/types': 3.696.0 + '@aws-sdk/client-sts': 3.709.0 + '@aws-sdk/core': 3.709.0 + '@aws-sdk/types': 3.709.0 '@smithy/property-provider': 3.1.11 '@smithy/types': 3.7.2 tslib: 2.8.1 - '@aws-sdk/eventstream-handler-node@3.696.0': + '@aws-sdk/eventstream-handler-node@3.709.0': dependencies: - '@aws-sdk/types': 3.696.0 + '@aws-sdk/types': 3.709.0 '@smithy/eventstream-codec': 3.1.10 '@smithy/types': 3.7.2 tslib: 2.8.1 - '@aws-sdk/middleware-bucket-endpoint@3.696.0': + '@aws-sdk/middleware-bucket-endpoint@3.709.0': dependencies: - '@aws-sdk/types': 3.696.0 + '@aws-sdk/types': 3.709.0 '@aws-sdk/util-arn-parser': 3.693.0 '@smithy/node-config-provider': 3.1.12 '@smithy/protocol-http': 4.1.8 @@ -17714,27 +17736,27 @@ snapshots: '@smithy/util-config-provider': 3.0.0 tslib: 2.8.1 - '@aws-sdk/middleware-eventstream@3.696.0': + '@aws-sdk/middleware-eventstream@3.709.0': dependencies: - '@aws-sdk/types': 3.696.0 + '@aws-sdk/types': 3.709.0 '@smithy/protocol-http': 4.1.8 '@smithy/types': 3.7.2 tslib: 2.8.1 - '@aws-sdk/middleware-expect-continue@3.696.0': + '@aws-sdk/middleware-expect-continue@3.709.0': dependencies: - '@aws-sdk/types': 3.696.0 + '@aws-sdk/types': 3.709.0 '@smithy/protocol-http': 4.1.8 '@smithy/types': 3.7.2 tslib: 2.8.1 - '@aws-sdk/middleware-flexible-checksums@3.701.0': + '@aws-sdk/middleware-flexible-checksums@3.709.0': dependencies: '@aws-crypto/crc32': 5.2.0 '@aws-crypto/crc32c': 5.2.0 '@aws-crypto/util': 5.2.0 - '@aws-sdk/core': 3.696.0 - '@aws-sdk/types': 3.696.0 + '@aws-sdk/core': 3.709.0 + '@aws-sdk/types': 3.709.0 '@smithy/is-array-buffer': 3.0.0 '@smithy/node-config-provider': 3.1.12 '@smithy/protocol-http': 4.1.8 @@ -17744,36 +17766,36 @@ snapshots: '@smithy/util-utf8': 3.0.0 tslib: 2.8.1 - '@aws-sdk/middleware-host-header@3.696.0': + '@aws-sdk/middleware-host-header@3.709.0': dependencies: - '@aws-sdk/types': 3.696.0 + '@aws-sdk/types': 3.709.0 '@smithy/protocol-http': 4.1.8 '@smithy/types': 3.7.2 tslib: 2.8.1 - '@aws-sdk/middleware-location-constraint@3.696.0': + '@aws-sdk/middleware-location-constraint@3.709.0': dependencies: - '@aws-sdk/types': 3.696.0 + '@aws-sdk/types': 3.709.0 '@smithy/types': 3.7.2 tslib: 2.8.1 - '@aws-sdk/middleware-logger@3.696.0': + '@aws-sdk/middleware-logger@3.709.0': dependencies: - '@aws-sdk/types': 3.696.0 + '@aws-sdk/types': 3.709.0 '@smithy/types': 3.7.2 tslib: 2.8.1 - '@aws-sdk/middleware-recursion-detection@3.696.0': + '@aws-sdk/middleware-recursion-detection@3.709.0': dependencies: - '@aws-sdk/types': 3.696.0 + '@aws-sdk/types': 3.709.0 '@smithy/protocol-http': 4.1.8 '@smithy/types': 3.7.2 tslib: 2.8.1 - '@aws-sdk/middleware-sdk-s3@3.696.0': + '@aws-sdk/middleware-sdk-s3@3.709.0': dependencies: - '@aws-sdk/core': 3.696.0 - '@aws-sdk/types': 3.696.0 + '@aws-sdk/core': 3.709.0 + '@aws-sdk/types': 3.709.0 '@aws-sdk/util-arn-parser': 3.693.0 '@smithy/core': 2.5.5 '@smithy/node-config-provider': 3.1.12 @@ -17787,10 +17809,10 @@ snapshots: '@smithy/util-utf8': 3.0.0 tslib: 2.8.1 - '@aws-sdk/middleware-sdk-transcribe-streaming@3.696.0': + '@aws-sdk/middleware-sdk-transcribe-streaming@3.709.0': dependencies: - '@aws-sdk/types': 3.696.0 - '@aws-sdk/util-format-url': 3.696.0 + '@aws-sdk/types': 3.709.0 + '@aws-sdk/util-format-url': 3.709.0 '@smithy/eventstream-serde-browser': 3.0.14 '@smithy/protocol-http': 4.1.8 '@smithy/signature-v4': 4.2.4 @@ -17798,9 +17820,9 @@ snapshots: tslib: 2.8.1 uuid: 9.0.1 - '@aws-sdk/middleware-signing@3.696.0': + '@aws-sdk/middleware-signing@3.709.0': dependencies: - '@aws-sdk/types': 3.696.0 + '@aws-sdk/types': 3.709.0 '@smithy/property-provider': 3.1.11 '@smithy/protocol-http': 4.1.8 '@smithy/signature-v4': 4.2.4 @@ -17808,27 +17830,27 @@ snapshots: '@smithy/util-middleware': 3.0.11 tslib: 2.8.1 - '@aws-sdk/middleware-ssec@3.696.0': + '@aws-sdk/middleware-ssec@3.709.0': dependencies: - '@aws-sdk/types': 3.696.0 + '@aws-sdk/types': 3.709.0 '@smithy/types': 3.7.2 tslib: 2.8.1 - '@aws-sdk/middleware-user-agent@3.696.0': + '@aws-sdk/middleware-user-agent@3.709.0': dependencies: - '@aws-sdk/core': 3.696.0 - '@aws-sdk/types': 3.696.0 - '@aws-sdk/util-endpoints': 3.696.0 + '@aws-sdk/core': 3.709.0 + '@aws-sdk/types': 3.709.0 + '@aws-sdk/util-endpoints': 3.709.0 '@smithy/core': 2.5.5 '@smithy/protocol-http': 4.1.8 '@smithy/types': 3.7.2 tslib: 2.8.1 - '@aws-sdk/middleware-websocket@3.696.0': + '@aws-sdk/middleware-websocket@3.709.0': dependencies: - '@aws-sdk/middleware-signing': 3.696.0 - '@aws-sdk/types': 3.696.0 - '@aws-sdk/util-format-url': 3.696.0 + '@aws-sdk/middleware-signing': 3.709.0 + '@aws-sdk/types': 3.709.0 + '@aws-sdk/util-format-url': 3.709.0 '@smithy/eventstream-codec': 3.1.10 '@smithy/eventstream-serde-browser': 3.0.14 '@smithy/fetch-http-handler': 4.1.2 @@ -17838,45 +17860,45 @@ snapshots: '@smithy/util-hex-encoding': 3.0.0 tslib: 2.8.1 - '@aws-sdk/region-config-resolver@3.696.0': + '@aws-sdk/region-config-resolver@3.709.0': dependencies: - '@aws-sdk/types': 3.696.0 + '@aws-sdk/types': 3.709.0 '@smithy/node-config-provider': 3.1.12 '@smithy/types': 3.7.2 '@smithy/util-config-provider': 3.0.0 '@smithy/util-middleware': 3.0.11 tslib: 2.8.1 - '@aws-sdk/s3-request-presigner@3.705.0': + '@aws-sdk/s3-request-presigner@3.709.0': dependencies: - '@aws-sdk/signature-v4-multi-region': 3.696.0 - '@aws-sdk/types': 3.696.0 - '@aws-sdk/util-format-url': 3.696.0 + '@aws-sdk/signature-v4-multi-region': 3.709.0 + '@aws-sdk/types': 3.709.0 + '@aws-sdk/util-format-url': 3.709.0 '@smithy/middleware-endpoint': 3.2.5 '@smithy/protocol-http': 4.1.8 '@smithy/smithy-client': 3.5.0 '@smithy/types': 3.7.2 tslib: 2.8.1 - '@aws-sdk/signature-v4-multi-region@3.696.0': + '@aws-sdk/signature-v4-multi-region@3.709.0': dependencies: - '@aws-sdk/middleware-sdk-s3': 3.696.0 - '@aws-sdk/types': 3.696.0 + '@aws-sdk/middleware-sdk-s3': 3.709.0 + '@aws-sdk/types': 3.709.0 '@smithy/protocol-http': 4.1.8 '@smithy/signature-v4': 4.2.4 '@smithy/types': 3.7.2 tslib: 2.8.1 - '@aws-sdk/token-providers@3.699.0(@aws-sdk/client-sso-oidc@3.699.0(@aws-sdk/client-sts@3.699.0))': + '@aws-sdk/token-providers@3.709.0(@aws-sdk/client-sso-oidc@3.709.0(@aws-sdk/client-sts@3.709.0))': dependencies: - '@aws-sdk/client-sso-oidc': 3.699.0(@aws-sdk/client-sts@3.699.0) - '@aws-sdk/types': 3.696.0 + '@aws-sdk/client-sso-oidc': 3.709.0(@aws-sdk/client-sts@3.709.0) + '@aws-sdk/types': 3.709.0 '@smithy/property-provider': 3.1.11 '@smithy/shared-ini-file-loader': 3.1.12 '@smithy/types': 3.7.2 tslib: 2.8.1 - '@aws-sdk/types@3.696.0': + '@aws-sdk/types@3.709.0': dependencies: '@smithy/types': 3.7.2 tslib: 2.8.1 @@ -17885,16 +17907,16 @@ snapshots: dependencies: tslib: 2.8.1 - '@aws-sdk/util-endpoints@3.696.0': + '@aws-sdk/util-endpoints@3.709.0': dependencies: - '@aws-sdk/types': 3.696.0 + '@aws-sdk/types': 3.709.0 '@smithy/types': 3.7.2 '@smithy/util-endpoints': 2.1.7 tslib: 2.8.1 - '@aws-sdk/util-format-url@3.696.0': + '@aws-sdk/util-format-url@3.709.0': dependencies: - '@aws-sdk/types': 3.696.0 + '@aws-sdk/types': 3.709.0 '@smithy/querystring-builder': 3.0.11 '@smithy/types': 3.7.2 tslib: 2.8.1 @@ -17903,22 +17925,22 @@ snapshots: dependencies: tslib: 2.8.1 - '@aws-sdk/util-user-agent-browser@3.696.0': + '@aws-sdk/util-user-agent-browser@3.709.0': dependencies: - '@aws-sdk/types': 3.696.0 + '@aws-sdk/types': 3.709.0 '@smithy/types': 3.7.2 bowser: 2.11.0 tslib: 2.8.1 - '@aws-sdk/util-user-agent-node@3.696.0': + '@aws-sdk/util-user-agent-node@3.709.0': dependencies: - '@aws-sdk/middleware-user-agent': 3.696.0 - '@aws-sdk/types': 3.696.0 + '@aws-sdk/middleware-user-agent': 3.709.0 + '@aws-sdk/types': 3.709.0 '@smithy/node-config-provider': 3.1.12 '@smithy/types': 3.7.2 tslib: 2.8.1 - '@aws-sdk/xml-builder@3.696.0': + '@aws-sdk/xml-builder@3.709.0': dependencies: '@smithy/types': 3.7.2 tslib: 2.8.1 @@ -17955,9 +17977,9 @@ snapshots: dependencies: '@babel/parser': 7.26.3 '@babel/types': 7.26.3 - '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/gen-mapping': 0.3.8 '@jridgewell/trace-mapping': 0.3.25 - jsesc: 3.0.2 + jsesc: 3.1.0 '@babel/helper-annotate-as-pure@7.25.9': dependencies: @@ -18756,6 +18778,8 @@ snapshots: '@braintree/sanitize-url@7.1.0': {} + '@cfworker/json-schema@4.0.3': {} + '@chevrotain/cst-dts-gen@11.0.3': dependencies: '@chevrotain/gast': 11.0.3 @@ -19352,12 +19376,12 @@ snapshots: '@docsearch/css@3.8.0': {} - '@docsearch/react@3.8.0(@algolia/client-search@5.16.0)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)': + '@docsearch/react@3.8.0(@algolia/client-search@5.17.0)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)': dependencies: - '@algolia/autocomplete-core': 1.17.7(@algolia/client-search@5.16.0)(algoliasearch@5.16.0)(search-insights@2.17.3) - '@algolia/autocomplete-preset-algolia': 1.17.7(@algolia/client-search@5.16.0)(algoliasearch@5.16.0) + '@algolia/autocomplete-core': 1.17.7(@algolia/client-search@5.17.0)(algoliasearch@5.17.0)(search-insights@2.17.3) + '@algolia/autocomplete-preset-algolia': 1.17.7(@algolia/client-search@5.17.0)(algoliasearch@5.17.0) '@docsearch/css': 3.8.0 - algoliasearch: 5.16.0 + algoliasearch: 5.17.0 optionalDependencies: '@types/react': 18.3.12 react: 18.3.1 @@ -19894,7 +19918,7 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/preset-classic@3.6.3(@algolia/client-search@5.16.0)(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/react@18.3.12)(acorn@8.14.0)(bufferutil@4.0.8)(eslint@9.16.0(jiti@2.4.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)(typescript@5.6.3)(utf-8-validate@5.0.10)': + '@docusaurus/preset-classic@3.6.3(@algolia/client-search@5.17.0)(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/react@18.3.12)(acorn@8.14.0)(bufferutil@4.0.8)(eslint@9.16.0(jiti@2.4.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)(typescript@5.6.3)(utf-8-validate@5.0.10)': dependencies: '@docusaurus/core': 3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.1(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.8)(eslint@9.16.0(jiti@2.4.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)(utf-8-validate@5.0.10) '@docusaurus/plugin-content-blog': 3.6.3(@docusaurus/plugin-content-docs@3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.1(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.8)(eslint@9.16.0(jiti@2.4.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)(utf-8-validate@5.0.10))(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.1(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.8)(eslint@9.16.0(jiti@2.4.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)(utf-8-validate@5.0.10) @@ -19907,7 +19931,7 @@ snapshots: '@docusaurus/plugin-sitemap': 3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.1(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.8)(eslint@9.16.0(jiti@2.4.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)(utf-8-validate@5.0.10) '@docusaurus/theme-classic': 3.6.3(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/react@18.3.12)(acorn@8.14.0)(bufferutil@4.0.8)(eslint@9.16.0(jiti@2.4.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)(utf-8-validate@5.0.10) '@docusaurus/theme-common': 3.6.3(@docusaurus/plugin-content-docs@3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.1(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.8)(eslint@9.16.0(jiti@2.4.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)(utf-8-validate@5.0.10))(@swc/core@1.10.1(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) - '@docusaurus/theme-search-algolia': 3.6.3(@algolia/client-search@5.16.0)(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/react@18.3.12)(acorn@8.14.0)(bufferutil@4.0.8)(eslint@9.16.0(jiti@2.4.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)(typescript@5.6.3)(utf-8-validate@5.0.10) + '@docusaurus/theme-search-algolia': 3.6.3(@algolia/client-search@5.17.0)(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/react@18.3.12)(acorn@8.14.0)(bufferutil@4.0.8)(eslint@9.16.0(jiti@2.4.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)(typescript@5.6.3)(utf-8-validate@5.0.10) '@docusaurus/types': 3.6.3(@swc/core@1.10.1(@swc/helpers@0.5.15))(acorn@8.14.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -20056,9 +20080,9 @@ snapshots: - vue-template-compiler - webpack-cli - '@docusaurus/theme-search-algolia@3.6.3(@algolia/client-search@5.16.0)(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/react@18.3.12)(acorn@8.14.0)(bufferutil@4.0.8)(eslint@9.16.0(jiti@2.4.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)(typescript@5.6.3)(utf-8-validate@5.0.10)': + '@docusaurus/theme-search-algolia@3.6.3(@algolia/client-search@5.17.0)(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/react@18.3.12)(acorn@8.14.0)(bufferutil@4.0.8)(eslint@9.16.0(jiti@2.4.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)(typescript@5.6.3)(utf-8-validate@5.0.10)': dependencies: - '@docsearch/react': 3.8.0(@algolia/client-search@5.16.0)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3) + '@docsearch/react': 3.8.0(@algolia/client-search@5.17.0)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3) '@docusaurus/core': 3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.1(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.8)(eslint@9.16.0(jiti@2.4.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)(utf-8-validate@5.0.10) '@docusaurus/logger': 3.6.3 '@docusaurus/plugin-content-docs': 3.6.3(@mdx-js/react@3.0.1(@types/react@18.3.12)(react@18.3.1))(@swc/core@1.10.1(@swc/helpers@0.5.15))(acorn@8.14.0)(bufferutil@4.0.8)(eslint@9.16.0(jiti@2.4.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)(utf-8-validate@5.0.10) @@ -21007,7 +21031,7 @@ snapshots: '@types/yargs': 17.0.33 chalk: 4.1.2 - '@jridgewell/gen-mapping@0.3.5': + '@jridgewell/gen-mapping@0.3.8': dependencies: '@jridgewell/set-array': 1.2.1 '@jridgewell/sourcemap-codec': 1.5.0 @@ -21019,7 +21043,7 @@ snapshots: '@jridgewell/source-map@0.3.6': dependencies: - '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/gen-mapping': 0.3.8 '@jridgewell/trace-mapping': 0.3.25 '@jridgewell/sourcemap-codec@1.5.0': {} @@ -21044,35 +21068,36 @@ snapshots: '@kwsites/promise-deferred@1.1.1': {} - '@langchain/core@0.3.22(openai@4.73.0(encoding@0.1.13)(zod@3.23.8))': + '@langchain/core@0.3.23(openai@4.73.0(encoding@0.1.13)(zod@3.23.8))': dependencies: + '@cfworker/json-schema': 4.0.3 ansi-styles: 5.2.0 camelcase: 6.3.0 decamelize: 1.2.0 js-tiktoken: 1.0.15 - langsmith: 0.2.11(openai@4.73.0(encoding@0.1.13)(zod@3.23.8)) + langsmith: 0.2.12(openai@4.73.0(encoding@0.1.13)(zod@3.23.8)) mustache: 4.2.0 p-queue: 6.6.2 p-retry: 4.6.2 uuid: 10.0.0 zod: 3.23.8 - zod-to-json-schema: 3.23.5(zod@3.23.8) + zod-to-json-schema: 3.24.1(zod@3.23.8) transitivePeerDependencies: - openai - '@langchain/openai@0.3.14(@langchain/core@0.3.22(openai@4.73.0(encoding@0.1.13)(zod@3.23.8)))(encoding@0.1.13)': + '@langchain/openai@0.3.14(@langchain/core@0.3.23(openai@4.73.0(encoding@0.1.13)(zod@3.23.8)))(encoding@0.1.13)': dependencies: - '@langchain/core': 0.3.22(openai@4.73.0(encoding@0.1.13)(zod@3.23.8)) + '@langchain/core': 0.3.23(openai@4.73.0(encoding@0.1.13)(zod@3.23.8)) js-tiktoken: 1.0.15 openai: 4.73.0(encoding@0.1.13)(zod@3.23.8) zod: 3.23.8 - zod-to-json-schema: 3.23.5(zod@3.23.8) + zod-to-json-schema: 3.24.1(zod@3.23.8) transitivePeerDependencies: - encoding - '@langchain/textsplitters@0.1.0(@langchain/core@0.3.22(openai@4.73.0(encoding@0.1.13)(zod@3.23.8)))': + '@langchain/textsplitters@0.1.0(@langchain/core@0.3.23(openai@4.73.0(encoding@0.1.13)(zod@3.23.8)))': dependencies: - '@langchain/core': 0.3.22(openai@4.73.0(encoding@0.1.13)(zod@3.23.8)) + '@langchain/core': 0.3.23(openai@4.73.0(encoding@0.1.13)(zod@3.23.8)) js-tiktoken: 1.0.15 '@leichtgewicht/ip-codec@2.0.5': {} @@ -22876,27 +22901,27 @@ snapshots: '@shikijs/engine-javascript': 1.24.2 '@shikijs/engine-oniguruma': 1.24.2 '@shikijs/types': 1.24.2 - '@shikijs/vscode-textmate': 9.3.0 + '@shikijs/vscode-textmate': 9.3.1 '@types/hast': 3.0.4 hast-util-to-html: 9.0.3 '@shikijs/engine-javascript@1.24.2': dependencies: '@shikijs/types': 1.24.2 - '@shikijs/vscode-textmate': 9.3.0 + '@shikijs/vscode-textmate': 9.3.1 oniguruma-to-es: 0.7.0 '@shikijs/engine-oniguruma@1.24.2': dependencies: '@shikijs/types': 1.24.2 - '@shikijs/vscode-textmate': 9.3.0 + '@shikijs/vscode-textmate': 9.3.1 '@shikijs/types@1.24.2': dependencies: - '@shikijs/vscode-textmate': 9.3.0 + '@shikijs/vscode-textmate': 9.3.1 '@types/hast': 3.0.4 - '@shikijs/vscode-textmate@9.3.0': {} + '@shikijs/vscode-textmate@9.3.1': {} '@sideway/address@4.1.5': dependencies: @@ -24099,6 +24124,12 @@ snapshots: dependencies: '@types/node': 20.17.9 + '@types/fs-extra@11.0.4': + dependencies: + '@types/jsonfile': 6.1.4 + '@types/node': 20.17.9 + optional: true + '@types/geojson@7946.0.15': {} '@types/glob@8.1.0': @@ -24151,6 +24182,11 @@ snapshots: '@types/json-schema@7.0.15': {} + '@types/jsonfile@6.1.4': + dependencies: + '@types/node': 20.17.9 + optional: true + '@types/jsonwebtoken@9.0.7': dependencies: '@types/node': 20.17.9 @@ -24192,7 +24228,7 @@ snapshots: '@types/node@17.0.45': {} - '@types/node@18.19.67': + '@types/node@18.19.68': dependencies: undici-types: 5.26.5 @@ -25224,13 +25260,13 @@ snapshots: clean-stack: 2.2.0 indent-string: 4.0.0 - ai@3.4.33(openai@4.73.0(encoding@0.1.13)(zod@3.23.8))(react@18.3.1)(sswr@2.1.0(svelte@5.10.0))(svelte@5.10.0)(vue@3.5.13(typescript@5.6.3))(zod@3.23.8): + ai@3.4.33(openai@4.73.0(encoding@0.1.13)(zod@3.23.8))(react@18.3.1)(sswr@2.1.0(svelte@5.11.0))(svelte@5.11.0)(vue@3.5.13(typescript@5.6.3))(zod@3.23.8): dependencies: '@ai-sdk/provider': 0.0.26 '@ai-sdk/provider-utils': 1.0.22(zod@3.23.8) '@ai-sdk/react': 0.0.70(react@18.3.1)(zod@3.23.8) '@ai-sdk/solid': 0.0.54(zod@3.23.8) - '@ai-sdk/svelte': 0.0.57(svelte@5.10.0)(zod@3.23.8) + '@ai-sdk/svelte': 0.0.57(svelte@5.11.0)(zod@3.23.8) '@ai-sdk/ui-utils': 0.0.50(zod@3.23.8) '@ai-sdk/vue': 0.0.59(vue@3.5.13(typescript@5.6.3))(zod@3.23.8) '@opentelemetry/api': 1.9.0 @@ -25238,12 +25274,12 @@ snapshots: json-schema: 0.4.0 jsondiffpatch: 0.6.0 secure-json-parse: 2.7.0 - zod-to-json-schema: 3.23.5(zod@3.23.8) + zod-to-json-schema: 3.24.1(zod@3.23.8) optionalDependencies: openai: 4.73.0(encoding@0.1.13)(zod@3.23.8) react: 18.3.1 - sswr: 2.1.0(svelte@5.10.0) - svelte: 5.10.0 + sswr: 2.1.0(svelte@5.11.0) + svelte: 5.11.0 zod: 3.23.8 transitivePeerDependencies: - solid-js @@ -25301,21 +25337,21 @@ snapshots: '@algolia/requester-node-http': 4.24.0 '@algolia/transporter': 4.24.0 - algoliasearch@5.16.0: - dependencies: - '@algolia/client-abtesting': 5.16.0 - '@algolia/client-analytics': 5.16.0 - '@algolia/client-common': 5.16.0 - '@algolia/client-insights': 5.16.0 - '@algolia/client-personalization': 5.16.0 - '@algolia/client-query-suggestions': 5.16.0 - '@algolia/client-search': 5.16.0 - '@algolia/ingestion': 1.16.0 - '@algolia/monitoring': 1.16.0 - '@algolia/recommend': 5.16.0 - '@algolia/requester-browser-xhr': 5.16.0 - '@algolia/requester-fetch': 5.16.0 - '@algolia/requester-node-http': 5.16.0 + algoliasearch@5.17.0: + dependencies: + '@algolia/client-abtesting': 5.17.0 + '@algolia/client-analytics': 5.17.0 + '@algolia/client-common': 5.17.0 + '@algolia/client-insights': 5.17.0 + '@algolia/client-personalization': 5.17.0 + '@algolia/client-query-suggestions': 5.17.0 + '@algolia/client-search': 5.17.0 + '@algolia/ingestion': 1.17.0 + '@algolia/monitoring': 1.17.0 + '@algolia/recommend': 5.17.0 + '@algolia/requester-browser-xhr': 5.17.0 + '@algolia/requester-fetch': 5.17.0 + '@algolia/requester-node-http': 5.17.0 amp-message@0.1.2: dependencies: @@ -25570,7 +25606,7 @@ snapshots: dependencies: '@babel/core': 7.26.0 find-cache-dir: 4.0.0 - schema-utils: 4.2.0 + schema-utils: 4.3.0 webpack: 5.97.1(@swc/core@1.10.1(@swc/helpers@0.5.15)) babel-plugin-dynamic-import-node@2.3.3: @@ -25656,7 +25692,7 @@ snapshots: dependencies: bare-events: 2.5.0 bare-path: 2.1.3 - bare-stream: 2.4.2 + bare-stream: 2.5.2 optional: true bare-os@2.4.4: @@ -25667,7 +25703,7 @@ snapshots: bare-os: 2.4.4 optional: true - bare-stream@2.4.2: + bare-stream@2.5.2: dependencies: streamx: 2.21.0 optional: true @@ -26036,6 +26072,11 @@ snapshots: get-intrinsic: 1.2.5 set-function-length: 1.2.2 + call-bound@1.0.2: + dependencies: + call-bind: 1.0.8 + get-intrinsic: 1.2.5 + callsites@3.1.0: {} camel-case@4.1.2: @@ -26620,7 +26661,7 @@ snapshots: glob-parent: 6.0.2 globby: 13.2.2 normalize-path: 3.0.0 - schema-utils: 4.2.0 + schema-utils: 4.3.0 serialize-javascript: 6.0.2 webpack: 5.97.1(@swc/core@1.10.1(@swc/helpers@0.5.15)) @@ -26781,7 +26822,7 @@ snapshots: icss-utils: 5.1.0(postcss@8.4.49) postcss: 8.4.49 postcss-modules-extract-imports: 3.1.0(postcss@8.4.49) - postcss-modules-local-by-default: 4.1.0(postcss@8.4.49) + postcss-modules-local-by-default: 4.2.0(postcss@8.4.49) postcss-modules-scope: 3.2.1(postcss@8.4.49) postcss-modules-values: 4.0.0(postcss@8.4.49) postcss-value-parser: 4.2.0 @@ -26795,7 +26836,7 @@ snapshots: cssnano: 6.1.2(postcss@8.4.49) jest-worker: 29.7.0 postcss: 8.4.49 - schema-utils: 4.2.0 + schema-utils: 4.3.0 serialize-javascript: 6.0.2 webpack: 5.97.1(@swc/core@1.10.1(@swc/helpers@0.5.15)) optionalDependencies: @@ -27530,8 +27571,8 @@ snapshots: echogarden@2.0.7(bufferutil@4.0.8)(canvas@2.11.2(encoding@0.1.13))(encoding@0.1.13)(utf-8-validate@5.0.10)(zod@3.23.8): dependencies: - '@aws-sdk/client-polly': 3.699.0 - '@aws-sdk/client-transcribe-streaming': 3.699.0 + '@aws-sdk/client-polly': 3.709.0 + '@aws-sdk/client-transcribe-streaming': 3.709.0 '@echogarden/audio-io': 0.2.3 '@echogarden/espeak-ng-emscripten': 0.3.3 '@echogarden/fasttext-wasm': 0.1.0 @@ -28198,7 +28239,7 @@ snapshots: extract-zip@2.0.1: dependencies: - debug: 4.4.0(supports-color@5.5.0) + debug: 4.3.4 get-stream: 5.2.0 yauzl: 2.10.0 optionalDependencies: @@ -29935,7 +29976,7 @@ snapshots: jest-diff@29.7.0: dependencies: - chalk: 4.1.2 + chalk: 4.1.0 diff-sequences: 29.6.3 jest-get-type: 29.6.3 pretty-format: 29.7.0 @@ -30276,6 +30317,8 @@ snapshots: jsesc@3.0.2: {} + jsesc@3.1.0: {} + json-bigint@1.0.0: dependencies: bignumber.js: 9.1.2 @@ -30413,21 +30456,21 @@ snapshots: doublearray: 0.0.2 zlibjs: 0.3.1 - langchain@0.3.6(@langchain/core@0.3.22(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)): + 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.22(openai@4.73.0(encoding@0.1.13)(zod@3.23.8)) - '@langchain/openai': 0.3.14(@langchain/core@0.3.22(openai@4.73.0(encoding@0.1.13)(zod@3.23.8)))(encoding@0.1.13) - '@langchain/textsplitters': 0.1.0(@langchain/core@0.3.22(openai@4.73.0(encoding@0.1.13)(zod@3.23.8))) + '@langchain/core': 0.3.23(openai@4.73.0(encoding@0.1.13)(zod@3.23.8)) + '@langchain/openai': 0.3.14(@langchain/core@0.3.23(openai@4.73.0(encoding@0.1.13)(zod@3.23.8)))(encoding@0.1.13) + '@langchain/textsplitters': 0.1.0(@langchain/core@0.3.23(openai@4.73.0(encoding@0.1.13)(zod@3.23.8))) js-tiktoken: 1.0.15 js-yaml: 4.1.0 jsonpointer: 5.0.1 - langsmith: 0.2.11(openai@4.73.0(encoding@0.1.13)(zod@3.23.8)) + langsmith: 0.2.12(openai@4.73.0(encoding@0.1.13)(zod@3.23.8)) openapi-types: 12.1.3 p-retry: 4.6.2 uuid: 10.0.0 yaml: 2.6.1 zod: 3.23.8 - zod-to-json-schema: 3.23.5(zod@3.23.8) + zod-to-json-schema: 3.24.1(zod@3.23.8) optionalDependencies: axios: 1.7.8(debug@4.4.0) handlebars: 4.7.8 @@ -30443,7 +30486,7 @@ snapshots: vscode-languageserver-textdocument: 1.0.12 vscode-uri: 3.0.8 - langsmith@0.2.11(openai@4.73.0(encoding@0.1.13)(zod@3.23.8)): + langsmith@0.2.12(openai@4.73.0(encoding@0.1.13)(zod@3.23.8)): dependencies: '@types/uuid': 10.0.0 commander: 10.0.1 @@ -31572,7 +31615,7 @@ snapshots: mini-css-extract-plugin@2.9.2(webpack@5.97.1(@swc/core@1.10.1(@swc/helpers@0.5.15))): dependencies: - schema-utils: 4.2.0 + schema-utils: 4.3.0 tapable: 2.2.1 webpack: 5.97.1(@swc/core@1.10.1(@swc/helpers@0.5.15)) @@ -31761,7 +31804,7 @@ snapshots: array-differ: 3.0.0 array-union: 2.1.0 arrify: 2.0.1 - minimatch: 3.1.2 + minimatch: 3.0.5 mustache@4.2.0: {} @@ -32111,7 +32154,7 @@ snapshots: '@yarnpkg/parsers': 3.0.0-rc.46 '@zkochan/js-yaml': 0.0.7 axios: 1.7.8(debug@4.4.0) - chalk: 4.1.2 + chalk: 4.1.0 cli-cursor: 3.1.0 cli-spinners: 2.6.1 cliui: 8.0.1 @@ -32285,7 +32328,7 @@ snapshots: openai@4.73.0(encoding@0.1.13)(zod@3.23.8): dependencies: - '@types/node': 18.19.67 + '@types/node': 18.19.68 '@types/node-fetch': 2.6.12 abort-controller: 3.0.0 agentkeepalive: 4.5.0 @@ -32315,7 +32358,7 @@ snapshots: ora@5.3.0: dependencies: bl: 4.1.0 - chalk: 4.1.2 + chalk: 4.1.0 cli-cursor: 3.1.0 cli-spinners: 2.6.1 is-interactive: 1.0.0 @@ -33205,7 +33248,7 @@ snapshots: dependencies: postcss: 8.4.49 - postcss-modules-local-by-default@4.1.0(postcss@8.4.49): + postcss-modules-local-by-default@4.2.0(postcss@8.4.49): dependencies: icss-utils: 5.1.0(postcss@8.4.49) postcss: 8.4.49 @@ -33835,11 +33878,7 @@ snapshots: qs@6.13.0: dependencies: - side-channel: 1.0.6 - - qs@6.13.1: - dependencies: - side-channel: 1.0.6 + side-channel: 1.1.0 qs@6.5.3: {} @@ -34610,7 +34649,7 @@ snapshots: ajv: 6.12.6 ajv-keywords: 3.5.2(ajv@6.12.6) - schema-utils@4.2.0: + schema-utils@4.3.0: dependencies: '@types/json-schema': 7.0.15 ajv: 8.17.1 @@ -34818,18 +34857,39 @@ snapshots: '@shikijs/engine-javascript': 1.24.2 '@shikijs/engine-oniguruma': 1.24.2 '@shikijs/types': 1.24.2 - '@shikijs/vscode-textmate': 9.3.0 + '@shikijs/vscode-textmate': 9.3.1 '@types/hast': 3.0.4 shimmer@1.2.1: {} - side-channel@1.0.6: + side-channel-list@1.0.0: dependencies: - call-bind: 1.0.8 + es-errors: 1.3.0 + object-inspect: 1.13.3 + + side-channel-map@1.0.1: + dependencies: + call-bound: 1.0.2 es-errors: 1.3.0 get-intrinsic: 1.2.5 object-inspect: 1.13.3 + side-channel-weakmap@1.0.2: + dependencies: + call-bound: 1.0.2 + es-errors: 1.3.0 + get-intrinsic: 1.2.5 + object-inspect: 1.13.3 + side-channel-map: 1.0.1 + + side-channel@1.1.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.3 + side-channel-list: 1.0.0 + side-channel-map: 1.0.1 + side-channel-weakmap: 1.0.2 + siginfo@2.0.0: {} signal-exit@3.0.7: {} @@ -35080,9 +35140,9 @@ snapshots: dependencies: minipass: 7.1.2 - sswr@2.1.0(svelte@5.10.0): + sswr@2.1.0(svelte@5.11.0): dependencies: - svelte: 5.10.0 + svelte: 5.11.0 swrev: 4.0.0 stack-utils@2.0.6: @@ -35252,7 +35312,7 @@ snapshots: sucrase@3.35.0: dependencies: - '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/gen-mapping': 0.3.8 commander: 4.1.1 glob: 10.4.5 lines-and-columns: 1.2.4 @@ -35285,7 +35345,7 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} - svelte@5.10.0: + svelte@5.11.0: dependencies: '@ampproject/remapping': 2.3.0 '@jridgewell/sourcemap-codec': 1.5.0 @@ -35569,7 +35629,7 @@ snapshots: together-ai@0.7.0(encoding@0.1.13): dependencies: - '@types/node': 18.19.67 + '@types/node': 18.19.68 '@types/node-fetch': 2.6.12 abort-controller: 3.0.0 agentkeepalive: 4.5.0 @@ -36510,7 +36570,7 @@ snapshots: memfs: 3.5.3 mime-types: 2.1.35 range-parser: 1.2.1 - schema-utils: 4.2.0 + schema-utils: 4.3.0 webpack: 5.97.1(@swc/core@1.10.1(@swc/helpers@0.5.15)) webpack-dev-server@4.15.2(bufferutil@4.0.8)(utf-8-validate@5.0.10)(webpack@5.97.1(@swc/core@1.10.1(@swc/helpers@0.5.15))): @@ -36538,7 +36598,7 @@ snapshots: open: 8.4.2 p-retry: 4.6.2 rimraf: 3.0.2 - schema-utils: 4.2.0 + schema-utils: 4.3.0 selfsigned: 2.4.1 serve-index: 1.9.1 sockjs: 0.3.24 @@ -36892,7 +36952,7 @@ snapshots: zlibjs@0.3.1: {} - zod-to-json-schema@3.23.5(zod@3.23.8): + zod-to-json-schema@3.24.1(zod@3.23.8): dependencies: zod: 3.23.8 @@ -36901,3 +36961,8 @@ snapshots: zwitch@1.0.5: {} zwitch@2.0.4: {} + + zx@8.2.4: + optionalDependencies: + '@types/fs-extra': 11.0.4 + '@types/node': 20.17.9 From 1c9a5a1276853612d162c2f4541f763ae78f8168 Mon Sep 17 00:00:00 2001 From: twilwa Date: Wed, 11 Dec 2024 21:42:41 -0800 Subject: [PATCH 21/37] no more merging to main must be from develop or tests will fail, failing tests will not allow merge --- .github/workflows/require-develop.yml | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 .github/workflows/require-develop.yml diff --git a/.github/workflows/require-develop.yml b/.github/workflows/require-develop.yml new file mode 100644 index 00000000000..4519a3b5cad --- /dev/null +++ b/.github/workflows/require-develop.yml @@ -0,0 +1,18 @@ +name: Check pull request source branch +on: + pull_request_target: + types: + - opened + - reopened + - synchronize + - edited +jobs: + check-branches: + runs-on: ubuntu-latest + steps: + - name: Check branches + run: | + if [ ${{ github.head_ref }} != "develop" ] && [ ${{ github.base_ref }} == "main" ]; then + echo "Merge requests to main branch are only allowed from dev branch." + exit 1 + fi From 64220cbfad8e21638e2a4b846c199b64d895734d Mon Sep 17 00:00:00 2001 From: tharak123455 <83504457+tharak123455@users.noreply.github.com> Date: Thu, 12 Dec 2024 13:48:46 +0530 Subject: [PATCH 22/37] Update interactions.ts --- packages/client-twitter/src/interactions.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/client-twitter/src/interactions.ts b/packages/client-twitter/src/interactions.ts index 9dd0937b09a..4cd34c1fee3 100644 --- a/packages/client-twitter/src/interactions.ts +++ b/packages/client-twitter/src/interactions.ts @@ -47,8 +47,9 @@ Thread of Tweets You Are Replying To: {{formattedConversation}} {{actions}} - -# Task: Generate a post in the voice, style and perspective of {{agentName}} (@{{twitterUserName}}). Include an action, if appropriate. {{actionNames}}: +# Task: Generate a post in the voice, style and perspective of {{agentName}} (@{{twitterUserName}}). You MUST include an action if the current post text includes a prompt that is similar to one of the available actions mentioned here: +{{actionNames}} +Here is the current post text again. Remember to include an action if the current post text includes a prompt that asks for one of the available actions mentioned above (does not need to be exact) {{currentPost}} ` + messageCompletionFooter; @@ -66,6 +67,7 @@ For other users: - {{agentName}} should IGNORE very short messages unless directly addressed - {{agentName}} should STOP if asked to stop - {{agentName}} should STOP if conversation is concluded +- {{agentName}} is in a room with other users and wants to be conversational, but not annoying. {{recentPosts}} From d89a8793735dfdf5f0310019991ff8176e9c1445 Mon Sep 17 00:00:00 2001 From: tharak123455 <83504457+tharak123455@users.noreply.github.com> Date: Thu, 12 Dec 2024 14:05:20 +0530 Subject: [PATCH 23/37] Update interactions.ts --- packages/client-twitter/src/interactions.ts | 6 ------ 1 file changed, 6 deletions(-) diff --git a/packages/client-twitter/src/interactions.ts b/packages/client-twitter/src/interactions.ts index 4cd34c1fee3..739b55bc283 100644 --- a/packages/client-twitter/src/interactions.ts +++ b/packages/client-twitter/src/interactions.ts @@ -444,12 +444,6 @@ export class TwitterInteractionClient { ); } - // Ensure the message and state are properly stringified before evaluation - const sanitizedMessage = JSON.parse(JSON.stringify(message)); - const sanitizedState = JSON.parse(JSON.stringify(state)); - - await this.runtime.evaluate(sanitizedMessage, sanitizedState); - await this.runtime.processActions( message, From 9a33703e61d84bca962830cab15b442f55e680a3 Mon Sep 17 00:00:00 2001 From: Nicky Ru Date: Thu, 12 Dec 2024 09:39:28 +0000 Subject: [PATCH 24/37] fix: improve chain selection --- packages/plugin-evm/src/actions/transfer.ts | 55 ++++++++++++++++----- packages/plugin-evm/src/templates/index.ts | 2 +- 2 files changed, 44 insertions(+), 13 deletions(-) diff --git a/packages/plugin-evm/src/actions/transfer.ts b/packages/plugin-evm/src/actions/transfer.ts index ffbfa76d371..5c3cb71957b 100644 --- a/packages/plugin-evm/src/actions/transfer.ts +++ b/packages/plugin-evm/src/actions/transfer.ts @@ -19,7 +19,7 @@ export class TransferAction { async transfer(params: TransferParams): Promise { console.log( - `Transferring: ${params.amount} tokens to (${params.toAddress} on ${params.fromChain})` + `Transferring: ${params.amount} tokens to (${params.toAddress} on ${params.fromChain})` ); const walletClient = this.walletProvider.getWalletClient( @@ -59,6 +59,43 @@ export class TransferAction { } } +const buildTransferDetails = async ( + state: State, + runtime: IAgentRuntime, + wp: WalletProvider +): Promise => { + const context = composeContext({ + state, + template: transferTemplate, + }); + + const chains = Object.keys(wp.chains); + + const contextWithChains = context.replace( + "SUPPORTED_CHAINS", + chains.toString() + ); + + const transferDetails = (await generateObjectDEPRECATED({ + runtime, + context: contextWithChains, + modelClass: ModelClass.SMALL, + })) as TransferParams; + + const existingChain = wp.chains[transferDetails.fromChain]; + + if (!existingChain) { + throw new Error( + "The chain " + + transferDetails.fromChain + + " not configured yet. Add the chain or choose one from configured: " + + chains.toString() + ); + } + + return transferDetails; +}; + export const transferAction = { name: "transfer", description: "Transfer tokens between addresses on the same chain", @@ -72,28 +109,22 @@ export const transferAction = { try { const walletProvider = initWalletProvider(runtime); const action = new TransferAction(walletProvider); - - const context = composeContext({ + const transferDetails = await buildTransferDetails( state, - template: transferTemplate, - }); - - const transferDetails = await generateObjectDEPRECATED({ runtime, - context, - modelClass: ModelClass.SMALL, - }); - + walletProvider + ); const tx = await action.transfer(transferDetails); if (callback) { callback({ - text: `Successfully transferred ${formatEther(tx.value)} tokens to ${tx.to}\nTransaction hash: ${tx.hash}`, + text: `Successfully transferred ${formatEther(tx.value)} tokens to ${tx.to}\nTransaction hash: ${tx.hash}\nChain: ${transferDetails.fromChain}`, content: { success: true, hash: tx.hash, amount: formatEther(tx.value), recipient: tx.to, + chain: transferDetails.fromChain, }, }); } diff --git a/packages/plugin-evm/src/templates/index.ts b/packages/plugin-evm/src/templates/index.ts index 25fd11d1f0a..20d6ef19af8 100644 --- a/packages/plugin-evm/src/templates/index.ts +++ b/packages/plugin-evm/src/templates/index.ts @@ -13,7 +13,7 @@ Respond with a JSON markdown block containing only the extracted values: \`\`\`json { - "fromChain": "mainnet" | "base" | ..., + "fromChain": SUPPORTED_CHAINS, "amount": string, "toAddress": string } From 5b76da674c850f8d60428d1fceea0a3b184c62cf Mon Sep 17 00:00:00 2001 From: Nicky Ru Date: Thu, 12 Dec 2024 09:40:15 +0000 Subject: [PATCH 25/37] refactor: remove unused code --- .../plugin-evm/src/providers/chainConfigs.ts | 339 ------------------ .../plugin-evm/src/providers/chainUtils.ts | 51 --- 2 files changed, 390 deletions(-) delete mode 100644 packages/plugin-evm/src/providers/chainConfigs.ts delete mode 100644 packages/plugin-evm/src/providers/chainUtils.ts diff --git a/packages/plugin-evm/src/providers/chainConfigs.ts b/packages/plugin-evm/src/providers/chainConfigs.ts deleted file mode 100644 index a410c56b962..00000000000 --- a/packages/plugin-evm/src/providers/chainConfigs.ts +++ /dev/null @@ -1,339 +0,0 @@ -import { - mainnet, - base, - sepolia, - bsc, - arbitrum, - avalanche, - polygon, - optimism, - cronos, - gnosis, - fantom, - klaytn, - celo, - moonbeam, - aurora, - harmonyOne, - moonriver, - arbitrumNova, - mantle, - linea, - scroll, - filecoin, - taiko, - zksync, - canto, -} from "viem/chains"; -import type { ChainMetadata, SupportedChain } from "../types"; -import type { IAgentRuntime } from "@ai16z/eliza"; - -export const DEFAULT_CHAIN_CONFIGS: Record = { - ethereum: { - chainId: 1, - name: "Ethereum", - chain: mainnet, - rpcUrl: "https://eth.llamarpc.com", - nativeCurrency: { - name: "Ether", - symbol: "ETH", - decimals: 18, - }, - blockExplorerUrl: "https://etherscan.io", - }, - base: { - chainId: 8453, - name: "Base", - chain: base, - rpcUrl: "https://base.llamarpc.com", - nativeCurrency: { - name: "Ether", - symbol: "ETH", - decimals: 18, - }, - blockExplorerUrl: "https://basescan.org", - }, - sepolia: { - chainId: 11155111, - name: "Sepolia", - chain: sepolia, - rpcUrl: "https://rpc.sepolia.org", - nativeCurrency: { - name: "Sepolia Ether", - symbol: "ETH", - decimals: 18, - }, - blockExplorerUrl: "https://sepolia.etherscan.io", - }, - bsc: { - chainId: 56, - name: "BNB Smart Chain", - chain: bsc, - rpcUrl: "https://bsc-dataseed1.binance.org/", - nativeCurrency: { - name: "Binance Coin", - symbol: "BNB", - decimals: 18, - }, - blockExplorerUrl: "https://bscscan.com", - }, - arbitrum: { - chainId: 42161, - name: "Arbitrum One", - chain: arbitrum, - rpcUrl: "https://arb1.arbitrum.io/rpc", - nativeCurrency: { - name: "Ether", - symbol: "ETH", - decimals: 18, - }, - blockExplorerUrl: "https://arbiscan.io", - }, - avalanche: { - chainId: 43114, - name: "Avalanche C-Chain", - chain: avalanche, - rpcUrl: "https://api.avax.network/ext/bc/C/rpc", - nativeCurrency: { - name: "Avalanche", - symbol: "AVAX", - decimals: 18, - }, - blockExplorerUrl: "https://snowtrace.io", - }, - polygon: { - chainId: 137, - name: "Polygon", - chain: polygon, - rpcUrl: "https://polygon-rpc.com", - nativeCurrency: { - name: "MATIC", - symbol: "MATIC", - decimals: 18, - }, - blockExplorerUrl: "https://polygonscan.com", - }, - optimism: { - chainId: 10, - name: "Optimism", - chain: optimism, - rpcUrl: "https://mainnet.optimism.io", - nativeCurrency: { - name: "Ether", - symbol: "ETH", - decimals: 18, - }, - blockExplorerUrl: "https://optimistic.etherscan.io", - }, - cronos: { - chainId: 25, - name: "Cronos", - chain: cronos, - rpcUrl: "https://evm.cronos.org", - nativeCurrency: { - name: "Cronos", - symbol: "CRO", - decimals: 18, - }, - blockExplorerUrl: "https://cronoscan.com", - }, - gnosis: { - chainId: 100, - name: "Gnosis", - chain: gnosis, - rpcUrl: "https://rpc.gnosischain.com", - nativeCurrency: { - name: "xDAI", - symbol: "XDAI", - decimals: 18, - }, - blockExplorerUrl: "https://gnosisscan.io", - }, - fantom: { - chainId: 250, - name: "Fantom", - chain: fantom, - rpcUrl: "https://rpc.ftm.tools", - nativeCurrency: { - name: "Fantom", - symbol: "FTM", - decimals: 18, - }, - blockExplorerUrl: "https://ftmscan.com", - }, - klaytn: { - chainId: 8217, - name: "Klaytn", - chain: klaytn, - rpcUrl: "https://public-node-api.klaytnapi.com/v1/cypress", - nativeCurrency: { - name: "KLAY", - symbol: "KLAY", - decimals: 18, - }, - blockExplorerUrl: "https://scope.klaytn.com", - }, - celo: { - chainId: 42220, - name: "Celo", - chain: celo, - rpcUrl: "https://forno.celo.org", - nativeCurrency: { - name: "Celo", - symbol: "CELO", - decimals: 18, - }, - blockExplorerUrl: "https://celoscan.io", - }, - moonbeam: { - chainId: 1284, - name: "Moonbeam", - chain: moonbeam, - rpcUrl: "https://rpc.api.moonbeam.network", - nativeCurrency: { - name: "Glimmer", - symbol: "GLMR", - decimals: 18, - }, - blockExplorerUrl: "https://moonscan.io", - }, - aurora: { - chainId: 1313161554, - name: "Aurora", - chain: aurora, - rpcUrl: "https://mainnet.aurora.dev", - nativeCurrency: { - name: "Ether", - symbol: "ETH", - decimals: 18, - }, - blockExplorerUrl: "https://aurorascan.dev", - }, - harmonyOne: { - chainId: 1666600000, - name: "harmonyOne", - chain: harmonyOne, - rpcUrl: "https://api.harmonyOne.one", - nativeCurrency: { - name: "ONE", - symbol: "ONE", - decimals: 18, - }, - blockExplorerUrl: "https://explorer.harmonyOne.one", - }, - moonriver: { - chainId: 1285, - name: "Moonriver", - chain: moonriver, - rpcUrl: "https://rpc.api.moonriver.moonbeam.network", - nativeCurrency: { - name: "Moonriver", - symbol: "MOVR", - decimals: 18, - }, - blockExplorerUrl: "https://moonriver.moonscan.io", - }, - arbitrumNova: { - chainId: 42170, - name: "Arbitrum Nova", - chain: arbitrumNova, - rpcUrl: "https://nova.arbitrum.io/rpc", - nativeCurrency: { - name: "Ether", - symbol: "ETH", - decimals: 18, - }, - blockExplorerUrl: "https://nova-explorer.arbitrum.io", - }, - mantle: { - chainId: 5000, - name: "Mantle", - chain: mantle, - rpcUrl: "https://rpc.mantle.xyz", - nativeCurrency: { - name: "Mantle", - symbol: "MNT", - decimals: 18, - }, - blockExplorerUrl: "https://explorer.mantle.xyz", - }, - linea: { - chainId: 59144, - name: "Linea", - chain: linea, - rpcUrl: "https://linea-mainnet.rpc.build", - nativeCurrency: { - name: "Ether", - symbol: "ETH", - decimals: 18, - }, - blockExplorerUrl: "https://lineascan.build", - }, - scroll: { - chainId: 534353, - name: "Scroll Alpha Testnet", - chain: scroll, - rpcUrl: "https://alpha-rpc.scroll.io/l2", - nativeCurrency: { - name: "Ether", - symbol: "ETH", - decimals: 18, - }, - blockExplorerUrl: "https://blockscout.scroll.io", - }, - filecoin: { - chainId: 314, - name: "Filecoin", - chain: filecoin, - rpcUrl: "https://api.node.glif.io/rpc/v1", - nativeCurrency: { - name: "Filecoin", - symbol: "FIL", - decimals: 18, - }, - blockExplorerUrl: "https://filfox.info/en", - }, - taiko: { - chainId: 167005, - name: "Taiko (Alpha-3) Testnet", - chain: taiko, - rpcUrl: "https://rpc.a3.taiko.xyz", - nativeCurrency: { - name: "Ether", - symbol: "ETH", - decimals: 18, - }, - blockExplorerUrl: "https://explorer.a3.taiko.xyz", - }, - zksync: { - chainId: 324, - name: "zksync Era", - chain: zksync, - rpcUrl: "https://mainnet.era.zksync.io", - nativeCurrency: { - name: "Ether", - symbol: "ETH", - decimals: 18, - }, - blockExplorerUrl: "https://explorer.zksync.io", - }, - canto: { - chainId: 7700, - name: "Canto", - chain: canto, - rpcUrl: "https://canto.slingshot.finance", - nativeCurrency: { - name: "CANTO", - symbol: "CANTO", - decimals: 18, - }, - blockExplorerUrl: "https://tuber.build", - }, -} as const; - -export const getChainConfigs = (runtime: IAgentRuntime) => { - return ( - (runtime.character.settings.chains?.evm as ChainMetadata[]) || - DEFAULT_CHAIN_CONFIGS - ); -}; diff --git a/packages/plugin-evm/src/providers/chainUtils.ts b/packages/plugin-evm/src/providers/chainUtils.ts deleted file mode 100644 index 377aa3f3631..00000000000 --- a/packages/plugin-evm/src/providers/chainUtils.ts +++ /dev/null @@ -1,51 +0,0 @@ -import { createPublicClient, createWalletClient, http } from "viem"; -import type { IAgentRuntime } from "@ai16z/eliza"; -import type { - Account, - Chain, - HttpTransport, - PublicClient, - WalletClient, -} from "viem"; -import type { SupportedChain, ChainConfig } from "../types"; -import { DEFAULT_CHAIN_CONFIGS } from "./chainConfigs"; - -export const createChainClients = ( - chain: SupportedChain, - runtime: IAgentRuntime, - account: Account -): ChainConfig => { - const chainConfig = DEFAULT_CHAIN_CONFIGS[chain]; - const transport = http(chainConfig.rpcUrl); - - return { - chain: chainConfig.chain, - publicClient: createPublicClient({ - chain: chainConfig.chain, - transport, - }) as PublicClient, - walletClient: createWalletClient({ - chain: chainConfig.chain, - transport, - account, - }), - }; -}; - -export const initializeChainConfigs = ( - runtime: IAgentRuntime, - account: Account -): Record => { - return Object.keys(DEFAULT_CHAIN_CONFIGS).reduce( - (configs, chain) => { - const supportedChain = chain as SupportedChain; - configs[supportedChain] = createChainClients( - supportedChain, - runtime, - account - ); - return configs; - }, - {} as Record - ); -}; From 7290ae840447adac359f0bfb30094938cfc1cc9c Mon Sep 17 00:00:00 2001 From: Piotr Gesicki Date: Thu, 12 Dec 2024 11:44:26 +0100 Subject: [PATCH 26/37] add sleep for stability --- pnpm-lock.yaml | 134 ++++++++++++++++++++++++++++++------------ scripts/smokeTests.sh | 3 +- 2 files changed, 96 insertions(+), 41 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 34096989007..8951b6a6efb 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -588,7 +588,7 @@ importers: version: 8.57.1 jest: specifier: ^29.0.0 - version: 29.7.0(@types/node@20.17.9) + version: 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)) typescript: specifier: ^5.0.0 version: 5.6.3 @@ -1045,7 +1045,7 @@ importers: version: 29.5.14 jest: specifier: 29.7.0 - version: 29.7.0(@types/node@22.8.4) + version: 29.7.0(@types/node@22.8.4)(ts-node@10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.8.4)(typescript@5.6.3)) 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) @@ -1450,10 +1450,10 @@ importers: version: 8.16.0(eslint@9.16.0(jiti@2.4.0))(typescript@5.6.3) jest: specifier: 29.7.0 - version: 29.7.0(@types/node@20.17.9) + version: 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)) ts-jest: specifier: 29.2.5 - version: 29.2.5(@babel/core@7.26.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(jest@29.7.0(@types/node@20.17.9))(typescript@5.6.3) + version: 29.2.5(@babel/core@7.26.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(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)))(typescript@5.6.3) typescript: specifier: 5.6.3 version: 5.6.3 @@ -20878,6 +20878,41 @@ snapshots: jest-util: 29.7.0 slash: 3.0.0 + '@jest/core@29.7.0(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/console': 29.7.0 + '@jest/reporters': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.17.9 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + ci-info: 3.9.0 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-changed-files: 29.7.0 + jest-config: 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)) + jest-haste-map: 29.7.0 + jest-message-util: 29.7.0 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-resolve-dependencies: 29.7.0 + jest-runner: 29.7.0 + jest-runtime: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + jest-watcher: 29.7.0 + micromatch: 4.0.8 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-ansi: 6.0.1 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + - ts-node + '@jest/core@29.7.0(ts-node@10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.8.4)(typescript@5.6.3))': dependencies: '@jest/console': 29.7.0 @@ -26729,13 +26764,13 @@ snapshots: ripemd160: 2.0.2 sha.js: 2.4.11 - create-jest@29.7.0(@types/node@20.17.9): + 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 chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.11 - jest-config: 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@22.8.4)(typescript@5.6.3)) + jest-config: 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)) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -28239,7 +28274,7 @@ snapshots: extract-zip@2.0.1: dependencies: - debug: 4.3.4 + debug: 4.4.0(supports-color@5.5.0) get-stream: 5.2.0 yauzl: 2.10.0 optionalDependencies: @@ -29855,16 +29890,16 @@ snapshots: - babel-plugin-macros - supports-color - jest-cli@29.7.0(@types/node@20.17.9): + jest-cli@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/core': 29.7.0(ts-node@10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.8.4)(typescript@5.6.3)) + '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.6.3)) '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 chalk: 4.1.2 - create-jest: 29.7.0(@types/node@20.17.9) + 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)) exit: 0.1.2 import-local: 3.2.0 - jest-config: 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@22.8.4)(typescript@5.6.3)) + jest-config: 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)) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.2 @@ -29874,7 +29909,7 @@ snapshots: - supports-color - ts-node - jest-cli@29.7.0(@types/node@22.8.4): + jest-cli@29.7.0(@types/node@22.8.4)(ts-node@10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.8.4)(typescript@5.6.3)): dependencies: '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.8.4)(typescript@5.6.3)) '@jest/test-result': 29.7.0 @@ -29893,24 +29928,36 @@ snapshots: - supports-color - ts-node - jest-cli@29.7.0(@types/node@22.8.4)(ts-node@10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.8.4)(typescript@5.6.3)): + jest-config@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/core': 29.7.0(ts-node@10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.8.4)(typescript@5.6.3)) - '@jest/test-result': 29.7.0 + '@babel/core': 7.26.0 + '@jest/test-sequencer': 29.7.0 '@jest/types': 29.6.3 + babel-jest: 29.7.0(@babel/core@7.26.0) chalk: 4.1.2 - create-jest: 29.7.0(@types/node@22.8.4)(ts-node@10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.8.4)(typescript@5.6.3)) - exit: 0.1.2 - import-local: 3.2.0 - jest-config: 29.7.0(@types/node@22.8.4)(ts-node@10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.8.4)(typescript@5.6.3)) + ci-info: 3.9.0 + deepmerge: 4.3.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-circus: 29.7.0 + jest-environment-node: 29.7.0 + jest-get-type: 29.6.3 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-runner: 29.7.0 jest-util: 29.7.0 jest-validate: 29.7.0 - yargs: 17.7.2 + micromatch: 4.0.8 + parse-json: 5.2.0 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-json-comments: 3.1.1 + optionalDependencies: + '@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) transitivePeerDependencies: - - '@types/node' - babel-plugin-macros - supports-color - - ts-node jest-config@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@22.8.4)(typescript@5.6.3)): dependencies: @@ -30195,24 +30242,12 @@ snapshots: merge-stream: 2.0.0 supports-color: 8.1.1 - jest@29.7.0(@types/node@20.17.9): - dependencies: - '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.8.4)(typescript@5.6.3)) - '@jest/types': 29.6.3 - import-local: 3.2.0 - jest-cli: 29.7.0(@types/node@20.17.9) - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node - - jest@29.7.0(@types/node@22.8.4): + 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/core': 29.7.0(ts-node@10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.8.4)(typescript@5.6.3)) + '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.6.3)) '@jest/types': 29.6.3 import-local: 3.2.0 - jest-cli: 29.7.0(@types/node@22.8.4) + jest-cli: 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)) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -35695,12 +35730,12 @@ snapshots: ts-interface-checker@0.1.13: {} - ts-jest@29.2.5(@babel/core@7.26.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(jest@29.7.0(@types/node@20.17.9))(typescript@5.6.3): + ts-jest@29.2.5(@babel/core@7.26.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(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)))(typescript@5.6.3): dependencies: bs-logger: 0.2.6 ejs: 3.1.10 fast-json-stable-stringify: 2.1.0 - jest: 29.7.0(@types/node@20.17.9) + 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)) jest-util: 29.7.0 json5: 2.2.3 lodash.memoize: 4.1.2 @@ -35735,6 +35770,27 @@ snapshots: ts-mixer@6.0.4: {} + 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: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.11 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.4 + '@types/node': 20.17.9 + acorn: 8.14.0 + acorn-walk: 8.3.4 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 5.6.3 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + optionalDependencies: + '@swc/core': 1.10.1(@swc/helpers@0.5.15) + optional: true + ts-node@10.9.2(@swc/core@1.10.1(@swc/helpers@0.5.15))(@types/node@22.8.4)(typescript@5.6.3): dependencies: '@cspotcode/source-map-support': 0.8.1 diff --git a/scripts/smokeTests.sh b/scripts/smokeTests.sh index 170a2aae492..a1cdbf1e5a3 100755 --- a/scripts/smokeTests.sh +++ b/scripts/smokeTests.sh @@ -49,8 +49,7 @@ pnpm install -r pnpm build OUTFILE="$(mktemp)" - -echo "exit" | pnpm start --character=characters/trump.character.json > "$OUTFILE" +(sleep 2; echo "exit") | pnpm start --character=characters/trump.character.json > "$OUTFILE" RESULT=$? echo "----- OUTPUT START -----" From b0d91d2a9556e253d07631374abf3b9be98b8276 Mon Sep 17 00:00:00 2001 From: Piotr Gesicki Date: Thu, 12 Dec 2024 11:51:53 +0100 Subject: [PATCH 27/37] reverse sleep order --- scripts/smokeTests.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/smokeTests.sh b/scripts/smokeTests.sh index a1cdbf1e5a3..e258752f770 100755 --- a/scripts/smokeTests.sh +++ b/scripts/smokeTests.sh @@ -49,7 +49,7 @@ pnpm install -r pnpm build OUTFILE="$(mktemp)" -(sleep 2; echo "exit") | pnpm start --character=characters/trump.character.json > "$OUTFILE" +(echo "exit"; sleep 2) | pnpm start --character=characters/trump.character.json > "$OUTFILE" RESULT=$? echo "----- OUTPUT START -----" From 5749beafb1b3a39e82252c8fde6b249bd7b62d41 Mon Sep 17 00:00:00 2001 From: Piotr Gesicki Date: Thu, 12 Dec 2024 12:06:10 +0100 Subject: [PATCH 28/37] more complex CI fix --- scripts/smokeTests.sh | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/scripts/smokeTests.sh b/scripts/smokeTests.sh index e258752f770..fcce311fe1d 100755 --- a/scripts/smokeTests.sh +++ b/scripts/smokeTests.sh @@ -49,9 +49,21 @@ pnpm install -r pnpm build OUTFILE="$(mktemp)" -(echo "exit"; sleep 2) | pnpm start --character=characters/trump.character.json > "$OUTFILE" -RESULT=$? +echo $OUTFILE +( + # Wait for the ready message + while true; do + if grep -q "Chat started" "$OUTFILE"; then + echo "exit"; sleep 2 + break + fi + sleep 0.5 + done +) | pnpm start --character=characters/trump.character.json > "$OUTFILE" & +# Wait for process to finish +wait $! +RESULT=$? echo "----- OUTPUT START -----" cat "$OUTFILE" echo "----- OUTPUT END -----" From a24934e4b6e9ebfb33c4d8b23e894408d950a343 Mon Sep 17 00:00:00 2001 From: Piotr Gesicki Date: Thu, 12 Dec 2024 13:42:52 +0100 Subject: [PATCH 29/37] update workflow file --- .github/workflows/integrationTests.yaml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/integrationTests.yaml b/.github/workflows/integrationTests.yaml index e425995c779..70c418febba 100644 --- a/.github/workflows/integrationTests.yaml +++ b/.github/workflows/integrationTests.yaml @@ -43,5 +43,11 @@ jobs: - name: Build packages run: pnpm build + - name: Configure an environment + run: | + rm -f .env + echo "OPENAI_API_KEY=${{ secrets.OPENAI_API_KEY }}" >> .env + cat .env + - name: Run integration tests run: pnpm run integrationTests From 1a9ced23d0953f0dbec3c0e1bd41bbc5693a6df4 Mon Sep 17 00:00:00 2001 From: Piotr Gesicki Date: Thu, 12 Dec 2024 14:02:36 +0100 Subject: [PATCH 30/37] update how the secret is passed --- .github/workflows/integrationTests.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/integrationTests.yaml b/.github/workflows/integrationTests.yaml index 70c418febba..438d94ade03 100644 --- a/.github/workflows/integrationTests.yaml +++ b/.github/workflows/integrationTests.yaml @@ -44,10 +44,10 @@ jobs: run: pnpm build - name: Configure an environment + env: + OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} run: | - rm -f .env - echo "OPENAI_API_KEY=${{ secrets.OPENAI_API_KEY }}" >> .env - cat .env + env - name: Run integration tests run: pnpm run integrationTests From 0e347f8df2e416004e0bf5b44d821e5efc2cf1a2 Mon Sep 17 00:00:00 2001 From: Piotr Gesicki Date: Thu, 12 Dec 2024 14:31:40 +0100 Subject: [PATCH 31/37] update workflow file --- .github/workflows/integrationTests.yaml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/.github/workflows/integrationTests.yaml b/.github/workflows/integrationTests.yaml index 438d94ade03..e477a5e4bec 100644 --- a/.github/workflows/integrationTests.yaml +++ b/.github/workflows/integrationTests.yaml @@ -43,11 +43,9 @@ jobs: - name: Build packages run: pnpm build - - name: Configure an environment + - name: Run integration tests env: OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} run: | env - - - name: Run integration tests - run: pnpm run integrationTests + pnpm run integrationTests From bb0563c3d32dc36ed1f59cce589938f87c5c90e5 Mon Sep 17 00:00:00 2001 From: Piotr Gesicki Date: Thu, 12 Dec 2024 14:43:24 +0100 Subject: [PATCH 32/37] cleanup --- .github/workflows/integrationTests.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/integrationTests.yaml b/.github/workflows/integrationTests.yaml index e477a5e4bec..206f2953fa9 100644 --- a/.github/workflows/integrationTests.yaml +++ b/.github/workflows/integrationTests.yaml @@ -47,5 +47,4 @@ jobs: env: OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} run: | - env pnpm run integrationTests From 1fd12ca260e4c6645512c521c5c7112f3057668e Mon Sep 17 00:00:00 2001 From: Piotr Gesicki Date: Thu, 12 Dec 2024 15:25:42 +0100 Subject: [PATCH 33/37] add logic to skip the run --- .github/workflows/integrationTests.yaml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/.github/workflows/integrationTests.yaml b/.github/workflows/integrationTests.yaml index 206f2953fa9..fa06431ead3 100644 --- a/.github/workflows/integrationTests.yaml +++ b/.github/workflows/integrationTests.yaml @@ -47,4 +47,9 @@ jobs: env: OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} run: | - pnpm run integrationTests + if [ -z "$OPENAI_API_KEY" ]; then + echo "Skipping integration tests due to missing required API keys" + exit 0 + else + pnpm run integrationTests + fi From 3ddcf87c4200ed22083c93bc54d3e143731840b2 Mon Sep 17 00:00:00 2001 From: Lukapetro Date: Thu, 12 Dec 2024 15:32:12 +0100 Subject: [PATCH 34/37] Add templates documentation to the project --- docs/docs/core/characterfile.md | 47 +++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/docs/docs/core/characterfile.md b/docs/docs/core/characterfile.md index e25fe58348c..8662a548710 100644 --- a/docs/docs/core/characterfile.md +++ b/docs/docs/core/characterfile.md @@ -207,6 +207,53 @@ The `settings` object defines additional configurations like secrets and voice m } ``` +### Templates Configuration + +The `templates` object defines customizable prompt templates used for various tasks and interactions. Below is the list of available templates: + +- `goalsTemplate` +- `factsTemplate` +- `messageHandlerTemplate` +- `shouldRespondTemplate` +- `continueMessageHandlerTemplate` +- `evaluationTemplate` +- `twitterSearchTemplate` +- `twitterPostTemplate` +- `twitterMessageHandlerTemplate` +- `twitterShouldRespondTemplate` +- `telegramMessageHandlerTemplate` +- `telegramShouldRespondTemplate` +- `discordVoiceHandlerTemplate` +- `discordShouldRespondTemplate` +- `discordMessageHandlerTemplate` + +### Example: Twitter Post Template + +Here’s an example of a `twitterPostTemplate`: + +```js +templates: { + twitterPostTemplate: ` +# Areas of Expertise +{{knowledge}} + +# About {{agentName}} (@{{twitterUserName}}): +{{bio}} +{{lore}} +{{topics}} + +{{providers}} + +{{characterPostExamples}} + +{{postDirections}} + +# Task: Generate a post in the voice and style and perspective of {{agentName}} @{{twitterUserName}}. +Write a 1-3 sentence post that is {{adjective}} about {{topic}} (without mentioning {{topic}} directly), from the perspective of {{agentName}}. Do not add commentary or acknowledge this request, just write the post. +Your response should not contain any questions. Brief, concise statements only. The total character count MUST be less than {{maxTweetLength}}. No emojis. Use \\n\\n (double spaces) between statements.`, +} +``` + --- ## Example: Complete Character File From 3520954ea8f160a3b6dd49aa10867524094eb065 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jure=20=C5=BDvikart?= <7929905+jzvikart@users.noreply.github.com> Date: Thu, 12 Dec 2024 15:38:16 +0100 Subject: [PATCH 35/37] Add README --- tests/README.md | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 tests/README.md diff --git a/tests/README.md b/tests/README.md new file mode 100644 index 00000000000..761b59b8b69 --- /dev/null +++ b/tests/README.md @@ -0,0 +1,25 @@ +# Integration tests + +This directory contains smoke and integration tests for Eliza project. + +## Smoke tests +- Should always be run on a freshly cloned project (i.e. no local changes) +- Building and installing is part of the test +- No configuration required +- To run: `pnpm run smokeTests` + +## Integration tests +- You need to configure your .env file before running (currently at least `OPENAI_API_KEY` is required) +- How to use: + 1. Install project dependencies and build the project as described in top-level `README` + 2. To run all the tests: `pnpm run integrationTests` + +## Integration test library +- For simplicity, integration tests are written in plain JavaScript (ESM) +- Currently this is just a "proof of concept" (single test), please reach out if you would like to contribute. + +## Using in GitHub CI/CD +- Settings -> Secrets and variables -> Actions: +- Create an enviroment +- Add repository secret `OPENAI_API_KEY` +- Refer to https://docs.github.com/en/actions/security-for-github-actions/security-guides/using-secrets-in-github-actions for more information From ff82bb9ffbbd129d71785354791521ef01775f47 Mon Sep 17 00:00:00 2001 From: Piotr Gesicki Date: Thu, 12 Dec 2024 16:53:33 +0100 Subject: [PATCH 36/37] update exit code --- .github/workflows/integrationTests.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/integrationTests.yaml b/.github/workflows/integrationTests.yaml index fa06431ead3..cd9441507dd 100644 --- a/.github/workflows/integrationTests.yaml +++ b/.github/workflows/integrationTests.yaml @@ -49,7 +49,7 @@ jobs: run: | if [ -z "$OPENAI_API_KEY" ]; then echo "Skipping integration tests due to missing required API keys" - exit 0 + exit 1 else pnpm run integrationTests fi From 43436e55e7d186483e5d5967c7f2b7830ab8aba2 Mon Sep 17 00:00:00 2001 From: Phlo Date: Thu, 12 Dec 2024 11:24:45 -0600 Subject: [PATCH 37/37] docs: Add "AI Agent Dev School Part 4" livestream notes --- docs/community/Streams/12-2024/2024-12-10.md | 113 +++++++++++++++++++ 1 file changed, 113 insertions(+) create mode 100644 docs/community/Streams/12-2024/2024-12-10.md diff --git a/docs/community/Streams/12-2024/2024-12-10.md b/docs/community/Streams/12-2024/2024-12-10.md new file mode 100644 index 00000000000..af7249ab2f0 --- /dev/null +++ b/docs/community/Streams/12-2024/2024-12-10.md @@ -0,0 +1,113 @@ +--- +sidebar_position: 4 +title: "AI Agent Dev School Part 4" +description: "AI Pizza: Hacking Eliza for Domino's Delivery (plus TEE Deep Dive)" +--- + +# AI Agent Dev School Part 4 + +**AI Pizza: Hacking Eliza for Domino's Delivery (plus TEE Deep Dive)** + +Date: 2024-12-10 +YouTube Link: https://www.youtube.com/watch?v=6I9e9pJprDI + +## Timestamps + +Part 1: Trusted Execution Environments (TEEs) with Agent Joshua +- **00:00:09** - Stream starts, initial setup issues. + - Link: +- **00:01:58** - Intro to Trusted Execution Environments (TEEs). + - Link: +- **00:08:03** - Agent Joshua begins explaining TEEs and the Eliza plugin. + - Link: +- **00:19:15** - Deeper dive into remote attestation. + - Link: +- **00:24:50** - Discussion of derived keys. + - Link: +- **00:37:00** - Deploying to a real TEE, Phala Network's TEE cloud. + - Link: +- **00:50:48** - Q&A with Joshua, contact info, and next steps. + - Link: + +Part 2: Building a Domino's pizza ordering agent +- **01:04:37** - Transition to building a Domino's pizza ordering agent. + - Link: +- **01:14:20** - Discussion of the pizza ordering agent’s order flow and state machine. + - Link: +- **01:22:07** - Using Claude to generate a state machine diagram. + - Link: +- **01:32:17** - Creating the Domino's plugin in Eliza. + - Link: +- **01:54:15** - Working on the pizza order provider. + - Link: +- **02:16:46** - Pizza provider code completed. + - Link: +- **02:28:50** - Discussion of caching customer and order data. + - Link: +- **03:13:45** - Pushing fixes to main branch and continuing work on the agent. + - Link: +- **04:24:30** - Discussion of summarizing past agent dev school sessions. + - Link: +- **05:01:18** - Shaw returns, admits to ordering Domino's manually. + - Link: +- **05:09:00** - Discussing payment flow and a confirm order action. + - Link: +- **05:27:17** - Final code push, wrap-up, and end of stream. + - Link: + + +## Summary + +This is a livestream titled "AI Agent Dev School Part 4" from the ai16z project, featuring Shaw. The stream is divided into two main parts: a technical discussion on Trusted Execution Environments (TEEs) and a coding session where Shaw attempts to build a pizza-ordering agent using the Domino's API. + +**Part 1: Trusted Execution Environments (TEEs) with Agent Joshua** + +This segment begins with Shaw introducing the concept of TEEs and their importance for running autonomous agents securely. He emphasizes the need to protect private keys and ensure that code execution is tamper-proof. Joshua from the Phala Network is brought on to explain TEEs in more detail and demonstrate how to use the TEE plugin he built for Eliza. + +* **Key Concepts:** + * **Trusted Execution Environments (TEEs):** Secure areas within a processor that isolate code and data, protecting them from unauthorized access and tampering. + * **Secure Enclave:** A cryptographic primitive that allows data to be encrypted and isolated within a processor. + * **Remote Attestation:** A method to verify that a program running inside a TEE is genuine and hasn't been tampered with, providing verifiability to users. + * **D-Stack:** An SDK developed in collaboration with Flashbots and Andrew Miller, enabling developers to build and launch Docker containers in TEEs. + * **Derived Key Provider:** A component that generates cryptographic keys based on a secret salt, ensuring that private keys are not exposed to humans. + +* **Demonstration:** + * Joshua walks through the process of setting up and deploying an Eliza agent in a TEE simulator, demonstrating how to generate remote attestations and derive keys. + * He shows how to use the remote attestation explorer to verify the authenticity of the agent running inside the TEE. + * He explains how to build a Docker image of the agent and deploy it to the Phala Network's TEE cloud solution. + +* **Use Cases:** + * Securely storing private keys for on-chain actions. + * Ensuring the integrity of autonomous agents, preventing tampering or unauthorized access. + * Providing verifiable execution for users and investors. + +* **Phala Network's TEE Cloud:** + * Joshua introduces Phala Network's TEE cloud solution, which allows developers to deploy Docker images and host their agents in a trusted execution environment. + * He mentions that the service supports various compute-intensive applications beyond AI agents. + * He invites interested developers to contact him on Discord (@hashwarlock) for onboarding and further details. + +**Part 2: Building a Pizza Ordering Agent** + +In the second part, Shaw transitions to a more lighthearted coding session where he attempts to build an agent that can order a pizza using the Domino's API. He highlights the challenges of handling payments securely and connecting user information to the conversation. + +* **Challenges:** + * Securely handling payment information. + * Connecting user data to the current conversation. + * Defining the order flow using a state machine. + +* **Approach:** + * Shaw uses a state machine to model the pizza ordering process, defining different states and transitions based on user input and available information. + * He uses Claude (an AI assistant) to generate code snippets and assist with the development process. + * He decides to initially focus on a simplified version where the user's payment information is hardcoded in the environment variables, and the agent only needs to collect the user's address. + +## Hot Takes + +1. **"Maybe we'll mix it on LinkedIn so people can order Domino's on LinkedIn. There you go. Now we're cooking." (00:03:26)** - Shaw's seemingly flippant idea of ordering pizza on LinkedIn highlights the potential for integrating everyday services into unexpected platforms through agents. This sparked discussion about the wider implications for businesses and social media. + +2. **"Yeah, it'll probably get drained real quick. These fucking people." (00:28:30)** - Shaw accidentally leaked an API key on stream and expressed frustration with viewers who noticed, exposing the real-world risks of handling sensitive information during development, especially in a live environment. + +3. **"The secret to making a billion dollars is to use the existing agent framework to deliver apps to people on social media that they want." (01:09:35)** - Shaw’s strong assertion about focusing on building apps *using* existing frameworks rather than creating new ones is a bold statement about the current agent development landscape, suggesting that innovation lies in application development, not framework creation. + +4. **"So those are like, honest to God, if the bots are better than like 70% of tweets on Twitter, they're better than like 99.7 tweets and posts on LinkedIn." (01:39:57)** - This provocative comparison of content quality between Twitter and LinkedIn, suggesting bots surpass most LinkedIn posts, fueled lively debate in the chat and raised questions about the role and value of human-generated content in the age of AI. + +5. **"I subliminally messaged Domino's into my own brain, and now I have to eat it." (05:01:24)** - After hours of working on the pizza bot, Shaw abandoned the live coding attempt and ordered pizza manually, a humorous but relatable moment that highlighted the challenges and frustrations of software development, even when aided by AI. It also underscores the human desire for immediate gratification, even in the face of a potentially groundbreaking technological advancement.